ACIDを超える概念か? 新しいトランザクションの考え方 - BASE データベースコンサルタントのノウハウちょい見せ

Oracle RDBMSなどのオラクル製品や各種インフラ技術(OS、ストレージ、ネットワーク)といった話題を取り上げます。著者は小田圭二、「門外不出のOracle現場ワザ」、「絵で見てわかるOracleの仕組み」、「絵で見てわかるOS/ストレージ/ネットワーク」などの著作もあります

ホーム > スポンサー広告 > ACIDを超える概念か? 新しいトランザクションの考え方 - BASEホーム > アーキテクチャ > ACIDを超える概念か? 新しいトランザクションの考え方 - BASE

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

ACIDを超える概念か? 新しいトランザクションの考え方 - BASE

DB使いであれば、ACID(Atomicity、Consistency、Isolation、Durability)は当たり前の考えかと思います。実は、DBMSならACIDが当たり前というのは、思いこみと言っても良いのです。少なくとも、ACID以外の考え方が存在するのは事実です。

今回は、そんな考え方である、BASE(Basically Available、Soft state、Eventually consistent)を紹介します。クラウドなどの世界で徐々に広がりつつある、トランザクションの考え方です。

この記事は、「BASE: An Acid Alternative」 を参考にしています。詳細はこちらの論文を見てみてください。前半は本論文の内容の紹介です。

●BASEの紹介

ざっくり言うと、厳密な一貫性やデータの即時反映などをあきらめる代わりに、スケーラビリティを得ることができるよ。という考えです。

ACIDが悲観的で、各オペレーションに厳密な一貫性を強制するのに対して、BASEは楽観的で、不安定なのだそうです。

例として挙げられているのが、userスキーマとtransactionスキーマです。userスキーマが、id,name,amt_sold,amt_boughtの属性を持ち、transactionスキーマが、xid,seller_id,buyer_id、amountの属性を持ちます。userがamt(合計)を持ち、ディテールはtransaction表に持つ・・というDB設計ですね。

通常、ACIDの場合、transaction表とuser表(※合計の変更)の双方を1トランザクションで変更してコミットします。でも、分けてもいいじゃないか、というのがBASEです。transaction表を変更してコミットして、その次にuser表を更新してコミットするわけです。ごく短時間、一貫性が保たれませんが、大した問題はないという考えです。論文の中ではメッセージキューを用いた伝搬の例も載っています。
Soft StateとEventually consistent(最終的に一貫性を実現する)として、反映までのタイムラグの話も載っています。

●トレードオフは何か?

トレードオフは、開発者から見た”使い勝手”です。なにせ、読みこんでみたら、結果が反映されていないかもしれないのですから。このようなシステムでは、更新と参照を分けて(意識して)プログラミングしたり、データの反映が遅くなっている可能性も考えながらプログラミングする必要があります。
ということで、考えてみると、ロック処理を割り切っていることによる、スケーラビリティの実現とも言えます。

●実は古くて新しい考えだったりします。

私が知る範囲でも10年前から、このようなアーキテクチャのシステムは存在していました。ただし、大規模で特殊なシステムで用いられていたので、あまり知られていないかもしれません。

システムのイメージ図(クリックすると拡大)
BASEのシステムの絵

最近だと、新興のネット企業の大規模システムで、このアーキテクチャのシステムが見られます。スケーラビリティを実現するためには、有効なんですよね。

●どういう業務にBASEは向くのか?

実は、エンティティが少なく、トランザクションが多いようなシステム、例としてはチャネル(窓口)系のシステムに向きます。多くのエンティティをもち、多数のSQL、複雑なSQLを駆使するようなシステムでは、開発者の負担が大きすぎて向きません。つまり、従来型のセントラルDBではなく、もっとシンプルなDBMSとBASEは相性が良いのです。BASEは、インメモリDBMSとも相性が良いと思います。従来型のセントラルDBでは、RDBMSがまだまだ主流でしょうね。

●本ブログでも関係する記事があります

記事「クラウドやマルチコアでの将来のボトルネックはきっとロック処理でしょう。コーディングが変わるかもしれません!?」 が近い内容です。

記事の中で、『やはりこれ以上、コンピュータの性能を上げようと思うと、最初に書いた「厳密な調整」の能力に何らかの制限をつけるしかないと思います。・・・<中略>・・・・「別々にいい加減に処理する(最後につじつまあわせをする)」という「曖昧な調整」を行うコーディングがはやるかもしれません』と書いていますが、その1つがBASEなんだと思います。この記事を書いていた当時はBASEのことは知りませんでした(本当です)。

合わせて楽しんでいただければ幸いです。
スポンサーサイト
[ 2009/05/17 03:27 ] アーキテクチャ | TB(0) | CM(0)
コメントの投稿













管理者にだけ表示を許可する
プロフィール

odakeiji

Author:odakeiji
小田圭二 日本オラクルのテクノロジーソリューションコンサルティング統括本部においてデータベースのコンサルタントをしている。今までのキャリアでは、社内教育部隊で、データベースやOS、ネットワークを教える経験を5年ほど積んだり、コンサル部門で主にDB(インフラ含む)のコンサルを10年程度経験した。また、コンサルタントとして、主に大規模ミッションクリティカルシステムを担当。社内では”火消し”とも呼ばれ、システムトラブルの火消しをいくつも担当していたこともある。
ポリシーは、「OracleもOS上で動くアプリケーションにすぎない。だから、OS、ストレージ、ネットワークを学ぶべき。アーキテクチャから考えろ」。
スキル面の興味は、アーキテクチャ、DBA、インフラ技術、教育、コンサル手法など。
本ブログのポリシーは「週に1回、DBAやインフラ担当者の役に立つ記事を書きたい」です(守れるだけ、守りたい・・・・)
なお、本ブログにおいて示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。ご了承ください。

私の主な著書の紹介です。もしよかったら、お役立てください。他にもオライリーなどがあります

●「絵で見てわかるOS/ストレージ/ネットワーク データベースはこう使っている」小田圭二 著
私のポリシーである”DBMSもOSの動くアプリケーションに過ぎない”に基づいて、OSとDBMSの関係、ストレージとDBMSの関係、ネットワークとDBMSの関係、を解説した珍しい書籍です。DBを学んでひと段落したら、DB使いもインフラ全体を意識しなければなりませんが、そのような人にお勧めです。企業ユーザー向けのIT本としては、2008年度翔泳社No1だとか(最後は出版社談)。

●「絵で見てわかるOracleの仕組み」 小田圭二 著
教育に携わる者としての私の思い「丸暗記するな。アーキテクチャを知るべき。絵で説明すべき」を具体化した、Oracleの入門書です。Oracle初心者向きですが、Oracleの基礎となる部分の動きを解説しているため、バージョンに依存せずに何年先でも使えます。逆に、本書の内容を理解せずに、ひたすら丸暗記すると応用力が身につきません。この本を読むだけで何かできるようになるわけではありませんが、アーキテクチャを身につけて、本当の技術力を身につける第一歩として欲しいと思っています。

●「44のアンチパターンに学ぶDBシステム」 小田圭二 著
本書は、企業のDBシステムの設計/構築から運用管理、プロジェクト管理までの各フェーズにおけるトラブル(失敗)事例について、アンチパターン(べからず集)とその回避策/防止策として解説するものです。チェックリストとして使っていただいても構いません。分かっていてもアンチパターンは避けられないことも多いものです(政治とか)。そういう方には、同じ仲間は多いのだなと再認識していただくための一服の清涼剤としていただければと思います。

●「門外不出のOracle現場ワザ」 小田圭二 他 著
一番最初に出た本です。結構とがった内容を扱っています。
・パフォーマンス分析の考え方(私の担当)
・性能テストや障害テストの仕方、設計の注意点(主に私が執筆)
・コストベースオプティマイザ(10gベース)のアーキテクチャ
・コネクションプーリング
最新のOracleの内容は含んでいませんが、今でも性能の考え方やオプティマイザの考え方は使えるはずです。オプティマイザをここまで解説している本を私は知りません。

●「続・門外不出のOracle現場ワザ」 小田圭二 他 著
「続」の名前の通り、次に出た本です。ちょっと尖り過ぎたかもしれません^^; でも本当に使う内容を選んだつもりです。一流になりたい・他の人と差をつけたい人にお勧めでしょうか。
・性能の良いSQLの書き方
・文字化けの仕組み
・障害(特に性能やハング)の分析・対応方法(私が執筆)
・障害をリアルタイムに分析・対処する方法(私が執筆)
・オプティマイザの使い方ノウハウ
・アップグレードのノウハウ

●「データベース」小田圭二 他 著
私にしては堅い本です。なんせ、共同執筆者が大御所の國友義久先生です。階層型DBMS、ネットワーク型DBMS、リレーショナル型DBMS、XMLDBMS、OO(オブジェクト指向)DBMS、DBMSの持つ機能、DBMSのセキュリティ、データベースの著作権、監査、モデリング、正規化といった内容を網羅しており、深い記述は無いものの、DB技術全体を抑えるのに向いている一冊です。ある程度技術力がついたエンジニアの方が、DB全体を振り返りたい(勉強したい)というときの最初の1冊としてお勧めです。



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。