トランザクション/読み取り/書き込みロックを解決する際にどのアルゴリズム/読み取り問題をお勧めしますか?


10

簡略化された従来のデータベーストランザクションは、次のように見なすことができます。

  • Mアイテムの読み取り
  • それらの読み取りに基づいていくつかの計算を実行する
  • これらの計算に基づいてN個の結果を書き込みます。これには、最初に読み取られた要素が含まれる場合があります。

これらのトランザクションを(同時に)実行する場合、ACIDプロパティを維持する必要があります。

まったく同じ要件(トランザクションでのM読み取りに基づくN更新)が、他の非DBMSコンカレントシステムにも存在します。

私はこれらのトランザクションを実行/解決するためにどのようなアルゴリズムが存在し、これらのアルゴリズムの相対的な長所と短所は何かを見つけることに興味があります。いくつかの読書をお勧めできますか?これは、書籍またはオンラインの参照/チュートリアルである可能性があります。

明確化:

したがって、たとえば、単純なアルゴリズムは、各トランザクションが単一のグローバルロックを取得することであり、事実上、単一のスレッド化を強制し、同時実行性を削除します。やや複雑なアルゴリズムは、個々のアイテムの読み取り/書き込みロックであり、デッドロックを回避するための順序があります)。などなど。この問題を解決するためのさまざまなアルゴリズムを文書化した優れた情報源はありますか。その長所と短所を備えた単一のアルゴリズムのみを指し示した答えでさえ有用です。


3
この質問は確かにこのサイトの範囲内です。あなたが働いているコンテキストについてもう少し書くことをお勧めします。現在、それはかなり一般的でオープンです。
デイブクラーク

言い換えれば価値があると思いますか?それはまさにデータベースの質問です 「読み書き可能なデータベースがあり、ACIDプロパティを使用してトランザクションで読み書きできるようにしたい。これらのプロパティを保証するためにどのようなアルゴリズムが存在するか」
Nick Fortescue

質問を言い換えると、解決しようとしている問題の詳細を示すなど、探しているものにより近い回答が得られる場合があります。現在、ヒントを与えるだけです。いずれにせよ、古典的なデータベーストランザクションアルゴリズムを求めているようです。
Dave Clarke、

@Dave-ありがとう、編集しました。いい?
Nick Fortescue、

1
RamakrishnanやGehrkeによるものなど、DBMSの教科書はもうご存知ですか。また、DBMSの内部について質問していない場合は、質問を明確にして、DBMSと興味のあるものの違いを教えてください。
Maverick Woo

回答:


10

WeikumとVossen の著書 『Transactional Information Systems』は、トランザクションだけでなく、さまざまな観点から、理論的および実用的な観点からかなりの領域をカバーしています。約1000ページの長さなので、1〜2週間は忙しいでしょう。一方、10年近く経っているので、もっと最新のものがあるかもしれません。このシリーズの他の書籍には、Bernstein、P.、Hadzilacos、V.、およびGoodman、Nによる同時実行制御とデータベースシステムの復旧、Addison-Wesley、1987年、トランザクション処理:ジムグレイとAndreas Reuterによる概念と手法、および原則が含まれます。トランザクション処理フィリップA.バーンスタインとエリックニューカマー、2009年。後者はまだ見たことがありませんが、最近のテキストから始めるのが良いかもしれませんが、古いテキストで解決策が見つかるかもしれません。図書館への旅行は価値があるかもしれません。

この領域の記念碑的なテキストは、ナンシーリンチ他による原子トランザクションです。それはあなたが興味を持っている多くの種類のアルゴリズムの公式の説明と証明を示します。それはかなり形式的で退屈なので、あなたの好みには合わないかもしれません。

最近の作業の多くは、トランザクションのアイデアをマルチスレッドアプリケーションに適用しているSoftware Transactional Memoryに捧げられています。このトピックについては毎年数十の出版物があります。ウィキペディアのページにはたくさんの参考文献があります。


1
デーブ、特に「ソフトウェアトランザクションメモリ」というフレーズについては、この名前に出会ったことがありませんでした
Nick Fortescue

1
STMは、最近のプログラミング言語研究において非常にホットなトピックです。STMまたはActorベースのプログラミングモデルが将来の同時(=すべて)プログラミング言語の基礎となるかどうかを見極めるための競争があります。
Dave Clarke、

1
STMのほかに、これらの参照の中で検索する1つの特定のキーワードはMVCCです。最新のDBMSのほとんどで使用されています:en.wikipedia.org/wiki/Multiversion_concurrency_control
Maverick Woo

@supercooldave私はそれが人種だとは確信していません。将来の言語はある程度両方の両方をサポートする必要があると思います。
Marc Hamann、

@マーク・ハーマン:比喩的に言えば。
Dave Clarke、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.