【发布时间】:2014-04-24 14:08:38
【问题描述】:
我需要一个键值数据库,比如 redis 或 memcached,但不是在内存中,而是在磁盘上。填充数据库后(我们定期从头开始),我实际上只需要 get 操作,但来自许多不同的进程(所以京都内阁和 LevelDB 不适合我)。
我需要大约 500 万个键和 ~10-30gb 的数据,所以其他一些简单的数据库不能正常工作。
我找不到任何关于RocksDB 是否可以处理多个只读客户端的信息;在我的操作系统上构建并不简单,所以我想在这样做之前先问一下。如果不能,是否有任何数据库可以工作?最好使用 Ubuntu 包和 Python 绑定;-)。
我们现在只是在使用很多很多的小文件,但这真的很糟糕,因为我们想要简单的备份、复制等。我也怀疑这可能会导致速度变慢,但这并不重要。
【问题讨论】:
-
你考虑过 SQLite 吗?
-
其实,不。这样的用例真的好吗?
-
是的,只需创建一个包含键/值列的表。您将使用普通 SQL 来访问该表。不确定键是否可以是纯二进制的。随着 WAL(Write-ahead-logging)的出现,您甚至可以支持与多个阅读器并行写入。 SQLite 虽然只支持单个并发编写器。另请注意,尽管您说“进程”,但如果您指的是不同的计算机,那么我会忽略 SQLite。 SQLite 适用于本地数据库,但不适用于网络数据库。
标签: python key-value leveldb kyotocabinet rocksdb