クラウドに関するリンク

過去に見たときは結構スルーしてましたが振り返って過去にid:nowokayさんに興味深いエントリーがあったことを思い出したので軽くあさってみた。

クラウド時代のトランザクション

分散システムでACIDを適用しようとすると、複数のサーバーで処理を分担させたときに一台のサーバーがこけてたらトランザクションが全く行えないとか、トランザクションマネージャーがボトルネックになってしまうとか、スケールアウトしにくくなってしまいます。

スケールアウトするために考えることがクラウドでなくなるかも。

Brewer という人が、一貫性(Consistency)・可用性(Availavility)・並列性(Partition tolerance)のすべては同時に満たせないということをCAP定理として述べてます。並列性を取るなら、一貫性か可用性の条件を緩和する必要があるということです。

CAPの定理はQcon Tokyoにて2,3回出てきた言葉。
丸山不二夫氏、Randy Shoup氏(eBay Architect)の話に出てきた。
クラウドと切っても切り離せない言葉ぽい。
初めてきしださんのエントリを読んだ時はまったく気にならなくスルーしていた自分が恥ずかしい。。


連続したトランザクションについて、メッセージキューを間にいれることでトランザクションを分離して、厳密な一貫性を捨てて並列化やりやすいようする例が取り上げられています。トランザクションが処理された時点では一貫性が保たれませんが、メッセージキューが処理された時点で最終的に一貫性を保つということです。

トランザクションについて、トランザクションの話をする際に一貫性を保つのか、保たないのか2極ではなくいずれ一貫性を保つという考え方があるということです。
これはeBayのRandy Shoup氏はQcon Tokyoでも同じ事を話していました。
 
トランザクションの考えかた、メッセージキューなどバックエンドでどのように動作しているのかを今後の開発者は知っておく必要があるのでしょう。一般化された時にはクラウド提供会社のAPIを叩くだけになるとは思いますが。

クラウドとデータベース

もう去年の話なんですね。さすがにみんな早いな。やっと話題においつけるきっかけを持てたようだ。

単なるバズワードではなく、SOAなどとクラウドが違うところは、クラウドはすでにGoogle App EngineAmazon Web Servicesのような形で多くの人が実際に使っているというところです。

クラウド用DBとしてGoogle BigTableAmazon SimpleDB、Microsoft SQL Data Servicesはハッシュテーブルになっているように、クラウドとハッシュテーブルというのは相性がいいです。こういったデータベースでは、サーバーにハッシュ値範囲を割り当てて、データが入るサーバーをハッシュ値によって決めています。

RDBMSの時代の終わりが見えてきた

Key-Valueストレージもきちんと理解せねば。背景も含めて。

クラウド製品が出ましたというときに、必ずといっていいほどそのクラウド用のデータベースの説明があります。そして、それはRDBMSではありません。

GoogleだとBigTableMicrosoftだとSQL Data Services、あとはAmazonのSimpleDB。どれも、基本的にはひとつのテーブルにハッシュコードでアクセスするようになっています。

Webアプリケーションの場合、JOINなどSQLのもっている高度な表結合があまり必要なかったりします。逆に、SQLの検索では使い物にならず、自力で逆引きインデックスを持ったりして検索の仕組みを作ることも多いかもしれません。

また、ホスト言語にSQLを埋め込むというのは学習コストやコーディングの手間が大きく、いまではORマッピングを使うことが少なくありません。Webアプリケーション、というか非業務システムでは、RDBMSの「R」の部分がまったく生かせておらず、単に「DBMS」として使っているという状況です。

それはRDBMS以外ではパフォーマンスが出ず信頼性が低くプログラムの組み方が難しいからという理由もあります。

おそらくそういう状況から、Webアプリケーションで扱いやすいDBとして冒頭であげたようなクラウド用データベースが開発されてきたのではないかと思います。

また、RDBMSのいろいろな仕組みが重過ぎて、Webでの高負荷に耐えれないということもあります。

mixiでも、ログイン時間記録のような単純で超高負荷なデータはmemcached+Tokyo Tyrantになっているようです。

それにしてもきしださんの考察は素晴らしい。感謝。

追記

クラウドでの新しいACID、そしてBASEトランザクションとCAP定理 - Fight the Futureが素晴らしいまとめエントリーだったので追記してここに残す。