通过名为rocksdb_transaction_t
的rocksdb_t
的并行实现,在rocksdb 中公开了事务功能。 现在我们有了 bindgen (#143),我们可以“免费”访问它。
首先,为简洁起见,我提出一个新的首字母缩写词,即 CRUD 的 RocksDB 并行,我称之为
PIGMED ,即 Put Iterate MErge Delete。 不吸引人,我知道。
问题是如何在以下情况下最好地公开事务功能:
TxnDb 有很多新方法需要被包装,其中一些可能作为守卫甚至闭包有意义。
我认为没有办法统一 DB 和 TxnDB 的 PIGMED 操作,同时保持类型安全甚至人体工程学。 但实际上 DB 中并没有大量的 PIGMED 功能。
我建议我们将所有实用程序/环境功能,即不需要rocksdb_t
的任何东西放入单独的实用程序模块或模块中(例如rocksdb::cf::create
for rocksdb_create_cf
)
然后我们将 DB 精简为仅 PIGMED 操作。
我希望我们能够利用相同的迭代器功能。 有rocksdb_transaction_create_iterator
但iterator_t
是一样的。
想法?
看起来这已经有一段时间了。 只是想我会快速看看是否有任何更新? 由于交易,我正在推迟使用rocksdb进行一些锈病服务。
#250 满足了吗?
我认同。 期待它被合并:)
我重读了@rrichardson之前的评论,我认为这个问题是指事务性 RocksDB 的“悲观”版本,而 #250 是添加“乐观”版本。 我认为我们应该能够同时利用#250 中的大部分工作。
我目前正在 #268 中进行一些内部重组,这将使TransactionalDB
和OptimisticTransactionalDB
更容易实现,而无需大量代码重复。
C API 中缺少一些方法来使TransactionalDB
大致相当于DB
(参见 facebook/rocksdb#4999)。 在我们实现此功能之前,需要解决这个问题。
@hnakamur提交了 facebook/rocksdb#5077 以添加缺少的 API。 一旦它们在发布中可用,我将在 Rust 绑定中添加对它的支持。
@iSynaptic
https://github.com/facebook/rocksdb/pull/5077已经合并了,我看到更新出现在最新的发布版本中。
你能重温一下当前的公关吗?
最有用的评论
@hnakamur提交了 facebook/rocksdb#5077 以添加缺少的 API。 一旦它们在发布中可用,我将在 Rust 绑定中添加对它的支持。