未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

クラウドにはぐっとこないけど、BASEやCAP定理は面白い

実のところ昨今のクラウド狂想曲にはうんざりしている口なので、クラウドってなによ、全然ぐっとこない*1

政治レイヤーで言えば、補正予算の関係からか霞ヶ関の人たちがクラウドとグリーンでいろいろ作文をして、あーだこーだしているのが、悪乗りというか、そんなんで日本の国際競争力とか産業の競争力というか、あるいは行政の簡素化とかできるのだろうか、という疑問。単に大規模なデーターセンターを作って、マスコミが批判する箱物というか土木公共事業とどう違うのか。そんなもの大金投じて作ってもすぐ陳腐化するだろう、ぷんぷん。

未来への投資という観点ではないのがちょっとうんざり。

と罵詈雑言はおいておいて、技術的な目新しさがあるのかないのかという観点で言えば昔のCISCに対するRISCのアプローチみたいでとっても面白い。

すなわち、ACIDからBASEへの流れ。そしてCAP定理。

データベースとかトランザクション処理の教科書をひらけば、ACIDというのが大事だと書いてある。

  • Atomicity(原子性)
  • Consistency(一貫性)
  • Isolation(独立性)
  • Durability(永続性)

RDBMSスクールの卒業生から言えば、これは常識中の常識。基礎中の基礎。オールオアナッシングの世界である。トランザクションは上手くいくか、上手くいかないか。それ以外ありえない。状態は常に一貫しているし、一度コミットされたものは永続し、消えてなくなることはない。この原理原則をどう実装するかというのがトランザクション処理の研究開発そのものであった。IBMの研究所でJim Grayらが唱えたころからの歴史である。

ところが、昨今のWebアプリケーションの世界では、BASEというACIDではない原理原則が支配している。ACIDの代替としてのBASEである。BASEとは

  • Basically Available
  • Soft State
  • Eventually Consistent

まあ、大体動いていて、状態を持ち、厳密な一貫性ではなくゆるい一貫性を持つ*2。ま、一貫性はいつの日か達成できればいいんじゃね。くらいののりである。例えば、銀行のトランザクションはACIDの世界が絶対必要だ、そりゃそうだ、自分のお金が大体あっていればいいなんて話は受け入れられない。だけど、日記を書いて、それのトラックバックのアップデートが若干遅れて反映されるようなシステムでも、まあ、困らない。BASEでいいんじゃね。という感じである。

CAP定理というのは、

  • Consistency
  • Availability
  • Partitions

という状態の2つまでしか達成できない。3つすべてを達成することはできないという定理である。例えばConsistency(一貫性)とAvailability(可用性)を同時に満足させるとPartitions(分散)を達成するのをあきらめるしかない。可用性と分散性を同時に満足させるにはConsistency(一貫性)をあきらめる。すなわちEventually Consistentな状態を受け入れる。

そーゆー状態を受け入れるとスケーラビリティを達成できるようになるので、巨大なデータセンターの中に安いPCサーバーを大量においてCAPのCを若干犠牲にしつつ、高速なデータ処理を行う。そのような計算モデルである。

クラウド時代の計算パラダイムRDBMSが30年間研究開発していたACIDパラダイムからCAPパラダイムへ大きく舵を切ったという意味で面白い。ちょうどコンピュータアーキテクチャにおける、CISCパラダイムからRISCパラダイムへ変遷していったようなイメージと重なる。

スケーラビリティのために、何かをちょっと犠牲にするというイメージである。

もう一つの重要なデータモデル(?)であるKey Value Storeについてはまたの機会に。

下記の教科書は必読の書。