RocksDB可以处理多个只读客户端吗?

时间:2014-04-24 14:08:39

标签: python key-value leveldb kyotocabinet rocksdb

我需要一个键值数据库,比如redis或memcached,但不是在内存中而是在磁盘上。在填充数据库之后(我们定期并从头开始),我实际上只需要get操作,但是需要来自许多不同的过程(所以Kyoto Cabinet和LevelDB对我不起作用)。

我需要500万个密钥和~10-30gb个数据,因此其他一些简单的数据库也无法正常工作。

我找不到RocksDB是否可以处理多个只读客户端的任何信息;在我的操作系统上构建并不是直截了当所以我想在做之前先问一下。如果它不能,是否有任何数据库可以工作?最好使用Ubuntu包和Python绑定; - )。

我们现在只使用许多小文件,但它真的很糟糕,因为我们想要轻松备份,复制等。我也怀疑这可能导致速度减慢,但这并不重要。

2 个答案:

答案 0 :(得分:7)

是的,您应该能够在单个RocksDB数据库上运行多个只读客户端。只需使用DB :: OpenForReadOnly()调用打开数据库:https://github.com/facebook/rocksdb/blob/master/include/rocksdb/db.h#L108

答案 1 :(得分:1)

最简单的答案可能是Berkeley DB,绑定是stdlib的一部分:https://docs.python.org/2/library/anydbm.html