Python RocksDB能否处理多个只读客户端?

Python RocksDB能否处理多个只读客户端?,python,key-value,leveldb,kyotocabinet,rocksdb,Python,Key Value,Leveldb,Kyotocabinet,Rocksdb,我需要一个键值数据库,比如redis或memcached,但不是在内存中,而是在磁盘上。在填充数据库之后(我们经常这样做,从头开始),实际上我只需要get操作,但需要许多不同的过程(因此Kyoto Cabinet和LevelDB对我不起作用) 我需要大约500万个密钥和~10-30gb的数据,所以其他一些简单的数据库也不能正常工作 我找不到有关是否可以处理多个只读客户端的任何信息;在我的操作系统上构建并不是一件简单的事情,所以我想在这样做之前问一下。如果不能,是否有任何数据库可以工作?最好使用U

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

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

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


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

最简单的答案可能是Berkeley DB,而绑定是stdlib的一部分:

是的,您应该能够在单个RocksDB数据库上运行多个只读客户端。只要用DB::OpenForReadOnly()调用打开数据库:

您考虑过SQLite吗?实际上,没有。对于这样的用例,它真的很好吗?是的,只需创建一个包含键/值列的表。您将使用普通SQL访问该表。但不确定密钥是否可以是纯二进制的。随着WAL(写前日志)的出现,您甚至可以支持与多个读卡器并行编写。尽管如此,SQLite只支持一个并发编写器。还要注意,尽管您说的是“进程”,但如果您指的是不同的计算机,那么我将忽略SQLite。SQLite适用于本地数据库,但不适用于网络数据库。谢谢,我试试看!出于某种原因,它说它已被弃用,我应该使用pybsddb:Berkeley DB与我发现的所有基准测试中最近的所有关键val DB相比,性能都非常糟糕。