Java:用于存储和读取10亿条数据记录的最佳方法
我正在寻找最快的方法,用Java存储大约10亿条记录,每条记录约250字节(存储只会发生一次),然后能够以非连续顺序多次读取它。Java:用于存储和读取10亿条数据记录的最佳方法
源记录正在生成简单的java值对象,我想以相同的格式读回它们。
现在我最好的猜测是在平面文件中使用快速序列化库(如Kryo)存储这些对象,然后使用Java FileChannel直接随机访问以读取文件中特定位置的记录(当存储数据时,我将保存在一个hashmap中(也可以保存在磁盘上),每个记录的文件中的位置,以便我知道在哪里读取它)。
另外,不需要优化磁盘空间。我主要关心的是优化读取性能,同时具有合理的写入性能(即再次仅发生一次)。 最后精确度:虽然记录都是相同类型(相同的Java值对象),但它们的大小(以字节为单位)是可变的(例如它包含字符串)。
有没有比我上面提到的更好的方法?任何暗示或建议将不胜感激!
非常感谢, 托马斯
回答:
您可以使用Apache Lucene的,很会照顾你上面:) 它是超级快提到的一切,你可以更快速地搜索结果,然后不断。 Apache Lucene将文件中的对象保存并编入索引。我们已经在几款应用中使用它,而且速度非常快。
回答:
您可以使用嵌入式Derby数据库。它是用Java编写的,你可以在你的流程中实际运行它,所以没有进程间或网络通信的开销。它将存储数据并允许您查询/ etc以处理所有复杂性和索引。
以上是 Java:用于存储和读取10亿条数据记录的最佳方法 的全部内容, 来源链接: utcz.com/qa/265589.html