我现在正在使用Mongodb作为缓存。该应用程序将在晚上提供3个CSV,并且CSV会变得更大,因为新产品将一直添加。现在,我达到了500万条记录,处理所有事情花了大约2个小时。由于缓存每天都会刷新,刷新数据将变得不切实际。随着时间的推移,Mongodb性能会显着下降。
例如
CSV 1
ID, NAME
1, NAME!
CSV 2
ID, DESCRIPTION
1, DESC
CSV 3
ID, SOMETHING_ELSE
1, SOMETHING_ELSE
的应用程序将读取CSV 1,并把它在数据库中。然后,CSV 2将被读取,如果有新的信息将被添加到相同的文档或创建一个新的记录。同样的逻辑适用于CSV 3.因此,一个文档将从不同的CSV获得不同的属性,因此upsert
。一切完成后,所有的文件将是索引。
现在第一百万份文件相对较快,但我可以看到随着时间的推移,性能会大大降低。我猜这是因为Mongodb必须找到文档并更新属性,否则就创建它。我正在使用Java驱动程序和MongoDB 2.4。无论如何,我可以改进,甚至在mongodb java驱动程序中进行批量upsert?