Rust-rocksdb: TxnDB : 通过rocksdb_transaction_t 交易

创建于 2017-10-19  ·  7评论  ·  资料来源: rust-rocksdb/rust-rocksdb

通过名为rocksdb_transaction_trocksdb_t的并行实现,在rocksdb 中公开了事务功能。 现在我们有了 bindgen (#143),我们可以“免费”访问它。

首先,为简洁起见,我提出一个新的首字母缩写词,即 CRUD 的 RocksDB 并行,我称之为
PIGMED ,即 Put Iterate MErge Delete。 不吸引人,我知道。

问题是如何在以下情况下最好地公开事务功能:

  1. 不为 TxnDB 复制整个数据库实现
  2. 维护类型安全。

TxnDb 有很多新方法需要被包装,其中一些可能作为守卫甚至闭包有意义。

我认为没有办法统一 DB 和 TxnDB 的 PIGMED 操作,同时保持类型安全甚至人体工程学。 但实际上 DB 中并没有大量的 PIGMED 功能。

我建议我们将所有实用程序/环境功能,即不需要rocksdb_t的任何东西放入单独的实用程序模块或模块中(例如rocksdb::cf::create for rocksdb_create_cf

然后我们将 DB 精简为仅 PIGMED 操作。

我希望我们能够利用相同的迭代器功能。 有rocksdb_transaction_create_iteratoriterator_t是一样的。

想法?

enhancement

最有用的评论

@hnakamur提交了 facebook/rocksdb#5077 以添加缺少的 API。 一旦它们在发布中可用,我将在 Rust 绑定中添加对它的支持。

所有7条评论

看起来这已经有一段时间了。 只是想我会快速看看是否有任何更新? 由于交易,我正在推迟使用rocksdb进行一些锈病服务。

#250 满足了吗?

我认同。 期待它被合并:)

我重读了@rrichardson之前的评论,我认为这个问题是指事务性 RocksDB 的“悲观”版本,而 #250 是添加“乐观”版本。 我认为我们应该能够同时利用#250 中的大部分工作。

我目前正在 #268 中进行一些内部重组,这将使TransactionalDBOptimisticTransactionalDB更容易实现,而无需大量代码重复。

C API 中缺少一些方法来使TransactionalDB大致相当于DB (参见 facebook/rocksdb#4999)。 在我们实现此功能之前,需要解决这个问题。

@hnakamur提交了 facebook/rocksdb#5077 以添加缺少的 API。 一旦它们在发布中可用,我将在 Rust 绑定中添加对它的支持。

@iSynaptic
https://github.com/facebook/rocksdb/pull/5077已经合并了,我看到更新出现在最新的发布版本中。

你能重温一下当前的公关吗?

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

iSynaptic picture iSynaptic  ·  31评论

iSynaptic picture iSynaptic  ·  5评论

zach-schoenberger picture zach-schoenberger  ·  7评论

rohitjoshi picture rohitjoshi  ·  10评论

cetra3 picture cetra3  ·  9评论