ARIESの本質、これは僕も疑問でした。Algorithms for Recovery and Isolation Exploiting Semanticsの頭文字を取ってのARIESですが何がSemanticsをExploitしているのかという点について考えるたびに別の答えが思いつくのでまるでわかりませんでした。

そこで去年、大阪に訪問していたC. Mohan先生(ARIESの著者)に直接聞いてみました。(Mohan先生の右後ろで目を閉じているのが僕です)

少し考えた後に彼は「ページのインクリメンタルな操作の中にすべての動作を畳み込んだ事こそがExploitである」と答えました。僕の理解はこうです。

  • DBにおけるページとはただのディスクの断片ではなく、それぞれが独立したステートマシンである

  • 複数のステートマシンに対する操作(=ログ)に対してLSNという全順序関係を持った横串を刺してトランザクションレベルでの一貫性を設けた

  • ページごとにそのページに対して最後に操作を行ったログのLSNを記録し、それより小さいLSNのログはいついかなる時も無視する事で片方向の冪等な遷移しか起きない状況をロジカルロギング上でも達成した

  • リカバリ時においてはLSNの任意の断片の箇所に対して全トランザクションの成否が確定し、そこから続くインクリメンタルなRedoと更にそれに続くUndoの内容が確定する

  • UndoもCompensation Logを伴ったRedoというインクリメンタルな操作に畳み込んだのでAbort操作とリカバリUndoが共通化された

データベースのロギングプロトコルの話を出発点にしてページをステートマシンに見立てる視座の高さに至るのは一種の悟りのようでありますが、ARIES自体はACIDにおけるAとDしか相手にしておらずトランザクションの並行制御についてはロックテーブル等に任せている事などを理解していくにつれてすんなりと理解できる事と思います。これが理解できたら発展形の一つであるInstant Recoveryについても調べてみてください。

ARIES/KVLとかARIES/IMはARIESで一貫性制御を行っている上でSerializableな分離レベルを実現するためのファントム避けのロックの話等をしているのですが個人的にはロックテーブルの側で対処すべきであってその辺の研究の流れはGoetz先生のOrthogonal Key-Value Lockingの研究の中でも説明されています。以下に引用します。

様々な試行錯誤を経た果てに地獄のように大きなロック互換表が出来上がっていますがこれはやむなしでしょうか…。以上参考になりましたら幸いです。

1年1年更新

利用規約プライバシーポリシーに同意の上ご利用ください

熊崎 宏樹さんの過去の回答
    Loading...