Rust-rocksdb: TxnDB:rocksdb_transaction_tを介したトランザクション

作成日 2017年10月19日  ·  7コメント  ·  ソース: rust-rocksdb/rust-rocksdb

トランザクション機能は、$#$ rocksdb_transaction_t rocksdb_tの並列実装を介してrocksdbで公開されます。 bindgen(#143)ができたので、「無料」でアクセスできます。

まず、簡潔にするために、CRUDのRocksDBパラレルである新しい頭字語を提案します。これを私はそれと呼びます。
PIGMED、それはPut Iterate MErgeDeleteです。 キャッチーではない、私は知っています。

問題は、次の場合にトランザクション機能を最適に公開する方法です。

  1. TxnDBのDBimpl全体を複製しない
  2. 型安全性の維持。

TxnDbには、ラップする必要のある新しいメソッドがかなりあります。それらのいくつかは、ガードまたはクロージャとしても意味がある場合があります。

型安全性や人間工学さえも維持しながら、DBとTxnDBのPIGMED操作を統合する方法はないと思います。 しかし、実際にはDBには大量のPIGMED機能はありません。

ユーティリティ/環境機能のすべて、つまりrocksdb_tを必要としないものを別のユーティリティモジュールに移動することを提案します(たとえば、$#$ 4 $#$の場合は$# rocksdb::cf::create rocksdb_create_cf )。

次に、DBをPIGMED操作のみにスリム化します。

同じイテレータ機能を活用できるようになることを願っています。 rocksdb_transaction_create_iteratorがありますが、 iterator_tは同じです。

考え?

enhancement

最も参考になるコメント

@hnakamurは、不足しているAPIを追加するためにfacebook / rocksdb#5077を送信しました。 リリースで利用可能になったら、ここRustバインディングでサポートを追加する作業を行います。

全てのコメント7件

これはしばらくの間そこにあったように見えます。 これに関する更新があるかどうかを確認するために私がすぐにドロップすると思っただけですか? トランザクションのため、一部のRustサービスにrocksdbの使用を延期しています。

これは#250で満足していますか?

そう思います。 マージされるのを楽しみにしています:)

@rrichardsonの以前のコメントを読み直しましたが、この問題はトランザクションRocksDBの「悲観的」バージョンを参照していると思いますが、#250は「楽観的」バージョンを追加しています。 #250の作業の多くを活用して、両方を着陸させることができるはずだと思います。

私は現在、#268でいくつかの内部再構築に取り組んでいます。これにより、多くのコードの重複なしにTransactionalDBOptimisticTransactionalDBの両方を簡単に実装できるようになります。

TransactionalDBほぼ同等のDBにするためのC APIに欠落しているメソッドがいくつかあります(facebook / rocksdb#4999を参照)。 この機能を導入する前に、これを解決する必要があります。

@hnakamurは、不足しているAPIを追加するためにfacebook / rocksdb#5077を送信しました。 リリースで利用可能になったら、ここRustバインディングでサポートを追加する作業を行います。

@iSynaptic
https://github.com/facebook/rocksdb/pull/5077はすでにマージされており、最新リリースバージョンでアップデートが表示されているのがわかりました。

現在のPRをもう一度見ていただけますか?

このページは役に立ちましたか?
0 / 5 - 0 評価