2017-12-14 12 views
1

RocksDB初心者はこちら。RocksDBでセッション専用のmemtableアップデート/マージ

実行時に、私はにRocksDBを使用して、のデータを読み取ります。場合によっては、セッション固有のレコードを他のソースからマージする必要があります。

私はそれらをメインデータベースにマージする必要はありません。 特定のセッションでセッションの存続期間中にのみ存在してほしいです。

もちろん、標準のstd :: vectorなどを使用してRocksDBと他のソースをマージすることはできますが、それはデータを複製します。

私はmemtableやmergeのようなコンセプトを見ています。これらのコンセプトは、使用されたり利用されたりしているように聞こえます。たとえば、memtableに決してコミットしないように指示し、変更を放棄すれば、それはうまくいくはずです。それは可能ですか?

答えて

0

最も簡単な方法は、異なるアプリケーションを別のcolumn familiesに分け、アプリケーションをシャットダウンするときに永続化したくないものを削除することです。エントリライフタイムが必要な場合は、RAIIホルダークラスのようなカスタムを考慮する必要があります.C++を使用している場合は、構築時に挿入し、破棄時に削除します。私はクラッシュ失敗の場合にも、データをきれいに分離させるために、別々のコラムファミリを使用します。

+0

ありがとう、@midor。実際には、私は "列"ではなく "行"を追加することを意味し、他のデータベースからのものになります。あなたのアドバイスはこの場合も引き続き機能しますか? –

+0

私はそれを持っていましたが、あなたがやろうとしていたことは、その実装で一種の混乱を招くでしょう。読んでみるだけで、もちろんバックアップからデータベースを復元し、それを操作して、シャットダウン時にデータベースを削除することもできます。次の起動時にバックアップを再度ロードし、何も変更されていません。欠点は、オンラインでは元のデータを絶対に操作できないことです。 – midor

+0

もう一度ありがとうございます。 Meh :)。私はちょうどメモリでこれら2つを混在させるだろうと思う。 –

関連する問題