使用 ChronicleMap 作为键值数据库

Using ChronicleMap as a key-value database

我想使用 ChronicleMap 作为 内存映射键值数据库 Stringbyte[])。它应该能够容纳多达 1 亿个条目。 Reads/gets 将比 writes/puts 更频繁地发生,预期写入率小于 10 entries/sec。虽然键的长度相似,但值的长度可能差异很大:它可以是从几个字节到几十 Mb 不等的任何值。然而,大多数值的长度在 500 到 1000 字节之间。

阅读了一些有关 ChronicleMap 的内容后,我对它的功能感到惊讶,并且想知道为什么我找不到描述它被用作通用键值数据库的文章。对我来说,将 ChronicleMap 用于此目的似乎有很多优势。我在这里错过了什么?

对于给定的边界条件,使用 ChronicleMap 有什么缺点?

我投票赞成关闭这个问题,因为任何 "drawbacks" 都是相对的。

Chronicle Map作为一种数据结构是没有排序的,所以当你需要按key迭代排序后的键值对时,它不适合。

当前实现的局限性是你需要提前指定要存储在地图中的元素数量,如果实际数量不接近指定数量,你将过度使用内存和磁盘(虽然不是很严重,在 Linux 系统上),但是如果条目的实际数量超过指定数量大约 20% 或更多,操作性能开始下降,并且性能损失随着条目的数量进一步增长。参见 https://github.com/OpenHFT/Chronicle-Map/issues/105