mysql から mongodb に移行しようとしています。mysql 構造は id_src int id_dest int 一意のキー: id_src,id_dest
それらはmysqlの約2億行です
データ例 : {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 の構造を再現し始めました。挿入のパフォーマンスは非常に優れていました (非常に優れていました)。2 億行を挿入するのに約 1 時間かかりました。
しかし、グループを取得するには map reduce を使用する必要がありました。マップ縮小は約1時間かかりました。
そこで、別の mongodb 構造を作成しようとしました: {id_dest,{id_src1,id_src2}}
各ドキュメントには、10 万個の 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));
}
ただし、その場合、パフォーマンスは非常に悪く、1 秒あたりの更新はわずかです。
私は何か間違っていますか?