RocksDB能处理多个只读客户端吗?
我需要一个键值数据库,像redis或者memcached那样,但不是在内存里,而是存储在硬盘上。在填充数据库之后(我们会定期从头开始填充),我其实只需要get
操作,但要能支持多个不同的进程(所以Kyoto Cabinet和LevelDB对我来说不合适)。
我大概需要500万个键和大约10到30GB的数据,所以其他一些简单的数据库也不太适用。
我找不到关于RocksDB是否能处理多个只读客户端的信息;在我的操作系统上搭建它也不是很简单,所以我想在动手之前先问一下。如果它不行,有没有其他合适的数据库?最好是有Ubuntu的安装包和Python的接口;-)。
现在我们只是用很多很多小文件,但这样真的很麻烦,因为我们想要简单的备份、复制等等。我还怀疑这样可能会导致速度变慢,不过这倒不是特别重要。
2 个回答
9
是的,你可以在一个RocksDB数据库上运行多个只读客户端。只需要使用DB::OpenForReadOnly()这个方法来打开数据库就可以了:https://github.com/facebook/rocksdb/blob/master/include/rocksdb/db.h#L108
1
最简单的答案可能是 Berkeley DB,它的接口是标准库的一部分:https://docs.python.org/2/library/anydbm.html