分散データベースに関する技術概要
クラウド向けの分散データベースとアプリケーション
スケーラビリティを重視する既存のクラウド・サービスでは、既存のRDBMSよりももっと単純化されたデータモデルをサポートするクラウド向けのデータベースを新たに開発しています。
その具体例としては、例えばKey-Valueデータベースが紹介されています。Key-Valueデータベースは文字通り、データをKey-Valueの形で格納するデータベースで、Consistent Hashing(図3)を用いることにより、指定したKeyに対応するValueを高速に検索することができます。
この種のデータベースは従来のRDBMSとは異なり単純な機能しかサポートしていません。前述のACIDセマンティックスは制限付きで、例えば同一のKeyに対する検索結果として異なるValueが返されたり、あるい格納されている全てのValueが返される場合があります。またテーブルの結合など、従来はデータベースに任せてきた機能もサポートされません。つまり従来のRDBMSとは異なる考え方に基づくデータベースなのです。
クラウドに適したアプリケーションとは
このような理由からクラウド向けアプリケーションは、その環境で利用できるクラウド向けデータベースのセマンティックスに基づいて設計される必要があります。
クラウド向けデータベースにもさまざまありますが、現時点でおおむね共通しているのは「トランザクション処理に耐えるほどのデータ一貫性の保証は期待できない」と言えることです。
クラウド向けデータベースの具体的な事例の紹介は次回に譲りますが、トランザクション処理を行う必要のあるアプリケーションは、原則としてクラウドには適さないと言えるでしょう。
一方、一般的なウェブ・アプリケーションのように、データベースをアプリケーション・コンテキストの格納場所としてのみ使うようなアプリケーションの場合は、クラウド本来のメリットを享受できます。該当する典型的な事例としては Google が提供する各種ウェブ・アプリケーションが挙げられるでしょう。
トランザクション処理を伴うアプリケーションでは、全くクラウドは活用できないというわけではないと思います。ただし、この場合もクラウド環境特有の特性を踏まえて設計しなければなりません。クラウド環境でのアプリケーション構築手法は、今後クラウド・コンピューティングが解決しなければならない技術的課題の1つであることは確かです。