Java:快速获取数据:存储在内存中与从文件中读取

时间:2016-07-25 14:28:58

标签: java performance file-writing bigdata

Iam编写数据表生成器工具并且存在一些性能问题 - 我需要关心RAM的使用和生成时间。这是我程序中的

1)我需要将最终数据存储在一个文件中(一个文件=一个表,以便稍后在生成所有文件时加载它),如:

111|aaaa|bbba
112|aaab|bbbb
113|aaac|bbbc
114|aaad|bbbd...

我可以有很多列甚至数百万行。所有数值都是正确的。

2)现在,我需要使用之前生成的表之一的值为下一个表生成单个值。我的程序还可以将单列保存到临时文件中(以后将其读取),如:

aaaa
aaab
aaac
aaad...

现在,主要问题是我需要随机阅读'新值甚至数百万次,与行计数器相同。

如何有效地做到这一点?使用哪些工具?我有两个选择:

  • 存储所有第二列'可用值'来自某些数组/ arraylist中的临时文件,并用于例如。 .get(int index)方法和返回值
  • 从该文件中读取特定行并返回值

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

  

如何有效地做到这一点?

要随机读取文件,您需要知道每条记录的偏移量。我会存储这是一个二进制文件,每行开头有一个4字节或8字节的偏移量。

您可以使用像Chronicle Map这样的库,它允许您通过密钥随机读取文件中的任何记录。