我们正在尝试从 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}}
每个文档可以有十万个 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));
}
但在那种情况下,性能非常糟糕,每秒只有很少的更新。
难道我做错了什么 ?