CAPとBASE、ACIDの呪縛

3,202
-1

Published on

Microsoft Tech・Ed Japan 2010 にて開催される船上パーティーでのライトニングトーク用の資料です。

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,202
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
43
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

CAPとBASE、ACIDの呪縛

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

    Clipping is a handy way to collect important slides you want to go back to later.

×