我們正試圖從mysql移動到mongodb。 MySQL的結構是 id_src INT id_dest INT 唯一密鑰:id_src,id_dest從Mysql切換到MongoDB 200百萬行
它們是在MySQL
數據爲例約200百萬行: {id_src,id_dest} {1,2} {1, 3} {1,10} {2,3} {2,10} {4,3}
我們需要檢索數據: {id_dest,count} {3,3} {10,2} {2 ,1}
我開始重構mongodb中的mysql結構。 插入性能非常好(非常好):大約1小時插入2億行。
但我需要使用map reduce來獲取組。地圖縮短大約需要1個小時。
所以我試圖創建一個其他MongoDB的結構: {id_dest,{id_src1,id_src2}}
每個文件可以有十萬id_src的。
這裏是我的insert.php代碼
$res=mysql_unbuffered_query("select * from ids limit 10000100");
while ($tab=mysql_fetch_array($res)) {
$collection->update(array('_id'=>(int)$tab['id_dest']),array('$push' => array('src'=>(int)$tab['id_src'])),array("upsert" => true));
}
但在這種情況下,表現都非常糟糕,只有每秒幾更新。
我做錯了什麼?
如果1h對於200m行是「巨大的」,那麼讓我問你:在MySQL中插入200m行需要多長時間? –
當我說「巨大」時,我說「非常好」。但我的問題是地圖縮短時間來獲得「羣體」這是可以接受的,但對我們來說並不完美。我想知道一個使用mongodb特性(多值字段)的新文檔模型是否不僅僅是重現mysql數據結構。 – benfromaix
我明白了。讓我們等待一個好的答案,然後:-) –