Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoD JAVA插入与更新并比较更改_Java_Mongodb_Insert Update_Mongo Java - Fatal编程技术网

MongoD JAVA插入与更新并比较更改

MongoD JAVA插入与更新并比较更改,java,mongodb,insert-update,mongo-java,Java,Mongodb,Insert Update,Mongo Java,我收集了大约320万条记录,这些收集数据每月更新一次,但源数据仍按原样提取,这意味着我不仅得到了更新的记录,还得到了一切。 就性能而言,简单地删除集合并插入所有内容还是对每条记录进行更新更好? 还有没有一种比较现有记录和从源代码读取的记录的好方法来检查是否有任何更改 谢谢 还有没有一种比较现有记录和从源代码读取的记录的好方法来检查是否有任何更改 您正在搜索一个变更检测系统:这是ETL系统通常描述的一个问题。我建议您阅读一些关于ETL过程的内容(Kimball是一个很好的来源)。通常,检测更改是一

我收集了大约320万条记录,这些收集数据每月更新一次,但源数据仍按原样提取,这意味着我不仅得到了更新的记录,还得到了一切。 就性能而言,简单地删除集合并插入所有内容还是对每条记录进行更新更好? 还有没有一种比较现有记录和从源代码读取的记录的好方法来检查是否有任何更改

谢谢

还有没有一种比较现有记录和从源代码读取的记录的好方法来检查是否有任何更改

您正在搜索一个变更检测系统:这是ETL系统通常描述的一个问题。我建议您阅读一些关于ETL过程的内容(Kimball是一个很好的来源)。通常,检测更改是一个困难的问题,需要使用快照来计算差异。如果您确信您的收藏将始终保留在mongo存储中,那么您可以查看是否有可能弄乱mongo日志。 此外,考虑变化检测与数据的结构和含义非常相配:例如,如果只有插入式集合,则可以使用<代码> 这个问题太复杂了,无法给出像“做这个做那个,你就会得到它”这样的答案;你必须分析你的数据,了解什么是更好的方法:参考文献,找到已知的解决方案,避免重复发明轮子

就性能而言,简单地删除集合并插入所有内容还是对每条记录进行更新更好

同样,您必须知道数据的结构。如果集合中的更改多于常量部分,则最好重新加载整个集合,并避免跟踪更改。如果您的集合中的变更集比整个集合小得多,则更新现有文档会带来更好的性能

希望这有帮助