2

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

我需要大约 500 万个键和~10-30gb数据,所以其他一些简单的数据库也不能正常工作。

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

我们现在只是在使用很多很多的小文件,但这真的很糟糕,因为我们想要简单的备份、复制等。我也怀疑这可能会导致速度变慢,但这并不重要。

4

2 回答 2

9

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

于 2014-05-08T08:04:26.477 回答
1

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

于 2014-04-24T14:20:58.213 回答