【发布时间】:2014-10-01 16:20:48
【问题描述】:
在多核服务器(或集群)上,希望在每个相互独立的核心上部署一个 RocksDB 数据库,即。 不 正在寻找分布式数据库。这可能吗?
对于每个内存数据库,它是否需要在运行时操作期间与存储通信,即。 不是在启动或关闭时,还是所有 db 操作都在内存中执行?
【问题讨论】:
标签: rocksdb
在多核服务器(或集群)上,希望在每个相互独立的核心上部署一个 RocksDB 数据库,即。 不 正在寻找分布式数据库。这可能吗?
对于每个内存数据库,它是否需要在运行时操作期间与存储通信,即。 不是在启动或关闭时,还是所有 db 操作都在内存中执行?
【问题讨论】:
标签: rocksdb
1) 是的,这是可能的。 RocksDB 只是一个 C++ 库,您可以使用管理多个 RocksDB 实例和多核服务器(或集群)的代码进行编译。多个 RocksDB 实例还可以通过让它们使用相同的 Env 来共享相同的资源集(例如共享相同的线程池)(参见 Options::env)。
// Use the specified object to interact with the environment,
// e.g. to read/write files, schedule background work, etc.
// Default: Env::Default()
Env* env;
2)如果你的rocksdb实例的目录在内存中(比如通过tmpfs挂载),那么所有的db操作都保证在内存中执行。为了使这样的 RocksDB 持久化,您还可以选择将 write-ahead-log 写入一些持久性存储,如闪存或磁盘。
【讨论】: