我有一个要求,我需要从文本文件解析JSON对象并将它们持久保存到MongoDB中。
一些细节 -
所以现在我需要存储一百万个Java对象,然后才能批量插入到mongodb ..(mongodb是分片的......所以我必须预先拆分以获得更好的性能等)
我的问题是如何才能提高效率?我想到的一些方法 -
任何人都可以分享她遇到类似问题的经历吗?如果需要任何其他信息,请告诉我。
答案 0 :(得分:3)
建议的内存解决方案不是一个好的长期解决方案,因为一旦您遇到不适合内存的数据,您可能需要重新设计您的应用程序。
在RDBSM中,您应该利用交易的目的。只是使用流方法,我的意思是加载数据,验证并放入DB。如果你遇到无效的对象,只需回滚事务,一切正常。取决于是否有可能长时间锁定数据,因为RDBMS通常会锁定整个表,没有人能够读取它们。
现在,当NoSQL DB的一致性较低时,您可以解决问题。关键是你必须提供数据的编程回滚。
我将如何设计它?
可能为这个 not ready data 使用mongo的一个实例以避免相互影响,一旦你知道它们可以转移到生产中,只需将它们移动到正确的表中即可。
答案 1 :(得分:1)
你提到的两种方式都很好。我建议你也这样想。
答案 2 :(得分:0)
我会使用RAM和直接ByteBuffer
的地图。在这种情况下,您不仅限于堆RAM。你可以用ByteBuffer
给你InputStream
包裹来处理 - Wrapping a ByteBuffer with an InputStream。这种方式可能很棘手,需要进行试验,即选择适当的缓冲区大小来从ByteBuffer
读取。