capとbase、acidの呪縛
DESCRIPTION
Microsoft Tech・Ed Japan 2010 にて開催される船上パーティーでのライトニングトーク用の資料です。TRANSCRIPT
わんくま同盟 Tech ・ ED 船上勉強会
CAP と BASE 、 ACID の呪縛
荒浪一城http://d.hatena.ne.jp/kazuki-aranami/
@kimtea
わんくま同盟 Tech ・ ED 船上勉強会
自己紹介• 荒浪一城(アラナミカズキ)
– 1983 年生まれ、静岡県島田市出身– http://twitter.com/kimtea
• 404 ないわー ( ・∀・ ) キムティ♪ Not Foundの日記– http://d.hatena.ne.jp/kazuki-aranami/
わんくま同盟 Tech ・ ED 船上勉強会
このセッションの対象となる方々
• 次の言葉を見聞きして、どうも気になる方– CAP 定理と聞いて ( ガラッ– KVS (キー・バリュー型データストア)にお
いて分散されたノード間でのトランザクション
– どのように何千台ものノード間でトランザクションを実行して、コミットするの?
– 何千台ものノードにトランザクションがはしっている間、 ACID 特性を保って結果が待っているの?
– \ ∀ ・ ・ \BASE 特性で何でも解決するよ
わんくま同盟 Tech ・ ED 船上勉強会
そもそもトランザクションとは?
• トランザクションとは、「取引」を意味する– 相手とのやりとりを通じて、最終的に「合
意」に至るまでの一連のプロセス(処理単位)を指し示す
合意
わんくま同盟 Tech ・ ED 船上勉強会
オールオアナッシング
• 成功または失敗のどちらか一方で終わる– トランザクションは、そのプロセスがやりと
りする範囲(処理単位)が、成功または失敗のどちらか一方で終わる、というオールオアナッシングの考えに基づいている
成功 失敗or
わんくま同盟 Tech ・ ED 船上勉強会
トランザクションモデル
• ローカルトランザクション– フラットトランザクション
• グローバルトランザクション– 入れ子トランザクション(ネステドトランザ
クション)– 分散トランザクション
厳密な定義は、ジム・グレイの「トランザクション処理 概念と技法」上下巻を参照の
こと。トランザクションモデルは、上巻189 ページへ
わんくま同盟 Tech ・ ED 船上勉強会
ローカルとグローバルの違い
• ローカルトランザクション– 単一のリソースマネージャー内部のみ
• グローバルトランザクション– 複数のリソースマネージャーにまたがる
– リソースマネージャー = DBMS ( X/Open DTP )
SQL Server Oracle
わんくま同盟 Tech ・ ED 船上勉強会
フラットトランザクション
• ACID 特性を持つトランザクション– Atomicity :原子性– Consistency :一貫性– Isolation :分離性– Durability :持続性
厳密な定義は、ジム・グレイの「トランザクション処理 概念と技法」上下巻を参照のこと。フラットトランザクションは、上巻
197 ページより
わんくま同盟 Tech ・ ED 船上勉強会
グローバルトランザクション
• 入れ子トランザクション– トランザクションが木構造になっている– 航空機のチケットとホテルの部屋を同時に予
約した場合に、航空会社とホテルのそれぞれデータベースへ、サブトランザクションがはしることになる
Oracle DB2
航空会社 ホテル
わんくま同盟 Tech ・ ED 船上勉強会
グローバルトランザクション
• 分散トランザクション– 分散環境で実行されるフラットトランザク
ション– データがどこにあるかに依存し、ネットワー
ク中の複数のノードを訪問する必要がある
BigTable BigTable
BigTable BigTable
BigTable BigTable
わんくま同盟 Tech ・ ED 船上勉強会
入れ子と分散トランザクションの違い• 入れ子:アプリケーションの機能的な分解、つ
まりはアプリケーションが何を制御領域としているかによって決められる
• 分散:ネットワーク中のデータの分散に依存する
• 分散トランザクションの問題– データのロック、トランザクション全体のコミット、
そして分散相互排他アルゴリズムが必要となる点である
• 分散相互排他アルゴリズムの例– Paxos ( Google App
Engine )、 Zab ( Zookeeper )
わんくま同盟 Tech ・ ED 船上勉強会
CAP conjecture ( CAP 経験則)• Eric Brewer の CAP 定理
– Consistency (一貫性、コンシステンシー)– Availability (可用性、アベイラビリティー)– Partition-tolerance (分割耐性、パーティショントレ
ランス)• 数学的に証明された「定理( theorem ) 」では
ないことに注意。この定理は、 ACID な共有システムでのみ有効である
• 正しくは、「 CAP conjecture (推測・推定) 」
• 個人的には、 ACID 特性に基づく「 CAP 経験則」という呼び方を提唱したい
わんくま同盟 Tech ・ ED 船上勉強会
BASE
• Eric Brewer の BASE– Basically Available (ベイシカリーアベイラブル)
• 基本的には可用性がある– Soft-state (ソフトステイト)
• 限られた時間のみ状態を保持する• Hard-state と対比する形で、 RFC などのプロトコルを起源
とするが、分散システムの世界では、 Soft-state のみが用いられる
– Eventual Consistency (イベンチュアルコンシステンシー)• 一時的に古い状態が見えることもある、結果整合性BASE の概念は、 2000 年の ACM PODC での発表より以前の
1997 年、 ACM SOSP における論文「 Cluster-Based Scalable Network Services 」の 1.4 BASE Semantics で詳細に述べられている
わんくま同盟 Tech ・ ED 船上勉強会
なぜ ACID の呪縛に我々は捕らわれたのか?
• 典型的なトランザクションは、リレーショナルデータベースにおける銀行口座の入出金やオークションの入札などフラットトランザクションモデルの事例である
• これらは、即時応答性の要求されるタイプのトランザクションであり、 ACID 特性を持つフラットトランザクションでは有効だが、 DNS やインターネットの商取引モデルなど BASE 特性を持つトランザクションを描くには限界がある
• ショッピングサイトでの買い物も「取引」であり、最終的に商品が消費者の手元に到着するまで数日かかるという「合意」に至るまでの、一連のプロセスもまたトランザクションである
わんくま同盟 Tech ・ ED 船上勉強会
まとめ• トランザクションとは「取引」のこと• トランザクションモデル
– ローカルトランザクション• フラットトランザクション
– グローバルトランザクション• 入れ子トランザクション• 分散トランザクション
• CAP conjecture ( CAP 経験則)– ACID 特性が満たされる共有システムで鉄則
• BASE 特性– ACID 特性から呪縛をほどいてくれるもの
わんくま同盟 Tech ・ ED 船上勉強会
参考文献• トランザクション処理 概念と技法 上下巻• 分散システム 原理とパラダイム 第一版• 分散システム 原理とパラダイム 第ニ版• Principle of TRANSACTION PROCESSING
SECOND EDITION• Distributed Transaction Processing:The XA
Specification ( X/Open DTP )