快速随机搜索多个对象

时间:2015-12-31 13:30:17

标签: java python avro random-access

我目前正在使用avro文件将数据记录存储在最大50GB的文件中。问题是除了顺序分析文件外,我还要对数据进行随机搜索。 avro的问题在于,我只能寻找某些同步点,并且必须遍历该块,直到找到我要查找的记录,但这会在某些情况下导致严重的性能损失。 我现在的问题是:有没有办法以不同的格式存储数据,支持单个记录的随机搜索而不需要太多费用。

限制:

  • 必须放在磁盘上(RAM在几个用例中太小)
  • 需要二元
  • 编程语言:Python,Java,C ++是可选的,但很高兴

干杯和谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用Chronicle Map。这实现了一个关闭堆ConcurrentMap,它为您提供基于密钥的随机访问。您可以在内存中使用它,部分在磁盘上使用共享内存,在多个JVM上使用一个副本,并可选择在多台计算机上复制它。

免责声明:我帮助构建了这个解决方案。