11

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

Redis 速度很快,但在内存中存储 1 TB 数据太贵了。LevelDB 每次查询都会多次读取磁盘。我发现的最接近的是 fatcache,但它不是持久的。它是一个由 SSD 支持的内存缓存。

有什么建议么?

4

4 回答 4

9

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

RocksDB 的调优指南也可以在这里找到。

于 2014-09-15T22:36:30.053 回答
2

你可能想试试RocksDB,它是一个针对 SSD 存储优化的 facebook 库。你也可以试试Ardb,它是一个在 RockDB/LevelDB/LMDB 上构建的兼容 redis 协议的 NoSQL DB。

于 2014-09-14T03:09:52.260 回答
0

LMDB is faster than RocksDB and uses 1/3rd as much memory. Also LMDb requires no tuning; RocksDB requires careful tuning of over 40 parameters to get performance that approaches LMDB's.

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

Also LMDB is fully transactional and 100% crash-proof, RocksDB is neither.

于 2014-09-23T06:35:30.953 回答
0

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

于 2014-09-13T08:45:32.280 回答