新しいNoSQLデータベースサーバー製品を開発中です。スナップショット分離を使用するクラスタ化されたB +ツリーで範囲クエリを実装する方法に関する論文はありますか?B +ツリーとスナップショットアイソレーションによる遠隔照会の実装
答えて
私はいくつかのB +ツリーの実装を書いています。範囲クエリの場合、範囲の下限のキーにカーソルを移動し、上限に達するまで「右に移動」します。 B +リンクツリー(リーフノードの間に左/右ポインタを持つ)はこれを非常に簡単にします。
しかし、私はスナップショット分離を実装していません。私はこれがあなたの隔離アルゴリズムに強く依存していると思います。シャドウページ(トランザクションごとに変更されたページのコピーを作成する場所)を使用する場合は、リーフノードに沿って「右に移動」する前にシャドウページが存在するかどうかをチェックする必要があります。
「RowVersion」と呼ばれる各行に非表示の列を追加できます。行を更新するたびに、現在のトランザクション番号に更新されたRowVersionを使用して新しい行を挿入します。読んでいるときは、あなたのトランザクション番号よりも大きいバージョンを持つ行を取る。何らかのクリーンアップ作業が必要になります。
行バージョンを別の場所に保存することもできます。同じBツリーにある必要はありません。それらをRAMまたはサーバーの再起動時に再作成される一時データベースに保持することができます。
私はどこから来たのかを見ていますが、一般的にスナップショットの分離をどのように実装しているかがわかります。クラスタ化されたB +ツリーとスナップショットの問題は、ロックを発生させずにデータノードを上書きできないということです。@ cruppstahlの答えは正しいと思います。ありがとう。 –
- 1. Mysql B +ツリーの実装
- 2. b +ツリーの完全実装
- 3. 既存のBツリーを実装する
- 4. 2次元間隔ツリーのJava実装
- 5. DB内の遠隔表現を照会する方法はありますか?
- 6. MongoDB - 遠隔クエリによるページング
- 7. B +ツリーで文字列キーを実装する方法は?
- 8. CのオープンソースのBツリー実装はなんですか?
- 9. CでのB +ツリーの簡単な実装
- 10. nolock/TransactionScopeとスナップショットアイソレーション
- 11. 遠隔インストールwinservice
- 12. 遠隔プログラミング
- 13. 遠隔レイアウトCSHTML
- 14. は「遠隔地」
- 15. 遠隔ペアプログラミングのツール
- 16. ポインタによる配列によるツリーの実装のメリット?
- 17. AVLツリーの実装
- 18. Bツリーに
- 19. 遠隔デバッグ方法
- 20. 遠隔ランタイム計器
- 21. 遠隔ソフトウェアをインストールする
- 22. Eclipseからコンソール遠隔計器とアンドロイドのテストケースを実行
- 23. Bツリーとスパースインデックスアルゴリズム(C#とJavaScript)
- 24. DBSCANクラスタリングの遠隔ポイント
- 25. 遠隔からのハードブート
- 26. NLPの遠隔監視アルゴリズム
- 27. 遠隔アクティブレコードの書き方
- 28. C++ shunting yardアルゴリズムと式ツリーの実装
- 29. 赤い黒ツリー対Bツリー
- 30. C++ AVLツリーの実装
ありがとうございました。私は既にクラスタ化されたB +ツリーで範囲クエリをサポートしていますが、スナップショットの範囲クエリを使用することは難題になります。シャドウページを調べます。 –