首页 > 解决方案 > 存储大量小记录以进行亚毫秒延迟检索

问题描述

如果可能的话,我有一个用例需要能够从延迟小于 1 毫秒的存储中检索文档(~1.5kb)。该商店将包含至少 2-3 百万份此类文档。

样本文件

{"name": "NameOfTheItem", "city": "Seattle", "state": "WA", "postCode": "99332", "country": "USA"}

访问模式

问题

  1. 对于这种大小的文档,在存储之前压缩文档并在检索时解压缩是否有意义?
  2. 数据格式(YAML、JSON、PARQUET 等)对于这种大小的文档是否重要?如果是这样,您是否有任何参考资料可以帮助我确定正确的格式?
  3. 我有哪些商店可以帮助我实现 sub ms 检索?

标签: javajsonlatency

解决方案


对于非常快的访问时间,您希望将数据保存在内存和类似 HashMap 的数据结构中,以实现 O(1) 读取复杂性。我刚刚计算出,我们总共谈论的是 4-5 GB 的文档。一个合理的设置应该能够保持我的记忆。

不要考虑压缩。它仅优化存储大小,但优化了解压缩的访问时间成本。从计算中可以看出(文档数 x 平均大小),将所有内容保存在内存中而不进行压缩应该不是问题。

我希望您还需要持久性,因此您应该将数据也存储在磁盘(例如数据库)和内存缓存中。


推荐阅读