高性能持久密钥值存储,用于大量记录

时间:2014-09-13 08:35:31

标签: database redis key ssd leveldb

该场景约有10亿条记录。每条记录的数据大小为1kb,存储在SSD中。 哪个kv商店可以提供最佳的随机读取性能?它需要每次查询只减少1次磁盘访问,并且所有数据索引都将存储在内存中。

Redis速度很快,但在内存中存储1 TB数据的成本太高。 LevelDB每次查询多次读取磁盘。 我找到的最接近的是fatcache,但它并不持久。它是由SSD支持的memcached。

有什么建议吗?

4 个答案:

答案 0 :(得分:8)

RocksDB可能是您的选择,它针对内存和闪存盘等快速存储进行了优化,并且具有高度可定制性。如果您的应用程序在初始批量加载后是只读的,那么您可以配置RocksDB来压缩一个大文件中的所有内容。这样,读取保证最多只有单个I / O.但是,如果您的应用程序同时处理读取和写入操作,那么为了每次读取最多只有一个I / O,您需要牺牲写入性能,因为您需要经常将rocksdb配置为压缩,这会损害写入性能。

还可以找到RocksDB的调整指南here

答案 1 :(得分:2)

您可能想尝试RocksDB,这是一个针对SSD存储进行了优化的脸谱库。您也可以尝试Ardb,这是一个兼容redis协议的NoSQL DB构建在RockDB / LevelDB / LMDB上。

答案 2 :(得分:1)

LMDB比RocksDB更快,并且使用1/3的内存。 LMDb也不需要调整; RocksDB需要仔细调整40多个参数,以获得接近LMDB的性能。

http://www.lmdb.tech/bench/inmem/scaling.html

此外,LMDB是完全事务性的,100%防崩溃,RocksDB既不是。

答案 3 :(得分:0)

你看过aerospike吗?我没有使用它,但他们声称在SSD上有很好的表现。