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