该场景约有10亿条记录。每条记录的数据大小为1kb,存储在SSD中。 哪个kv商店可以提供最佳的随机读取性能?它需要每次查询只减少1次磁盘访问,并且所有数据索引都将存储在内存中。
Redis速度很快,但在内存中存储1 TB数据的成本太高。 LevelDB每次查询多次读取磁盘。 我找到的最接近的是fatcache,但它并不持久。它是由SSD支持的memcached。
有什么建议吗?
答案 0 :(得分:8)
RocksDB可能是您的选择,它针对内存和闪存盘等快速存储进行了优化,并且具有高度可定制性。如果您的应用程序在初始批量加载后是只读的,那么您可以配置RocksDB来压缩一个大文件中的所有内容。这样,读取保证最多只有单个I / O.但是,如果您的应用程序同时处理读取和写入操作,那么为了每次读取最多只有一个I / O,您需要牺牲写入性能,因为您需要经常将rocksdb配置为压缩,这会损害写入性能。
还可以找到RocksDB的调整指南here。
答案 1 :(得分:2)
答案 2 :(得分:1)
LMDB比RocksDB更快,并且使用1/3的内存。 LMDb也不需要调整; RocksDB需要仔细调整40多个参数,以获得接近LMDB的性能。
http://www.lmdb.tech/bench/inmem/scaling.html
此外,LMDB是完全事务性的,100%防崩溃,RocksDB既不是。
答案 3 :(得分:0)