クラウドコンピューティングでは、クラウド事業者が集中管理する極めて多数のサーバーやネットワーク機器といったリソースが小口に分けられ、複数の企業や個人利用者に比較的低いコストで提供されます。サービス利用者にとっては、自分でハードウエアなどのインフラを用意することなく、必要なときに、必要な分だけリソースを安価に使えることが魅力です。

 クラウドコンピューティングは大きな拡張性を備えているので、たとえアクセスが集中したとしても、リソース量を自在に増やすことができます。ただし、そうしたメリットを享受するには、クラウド事業者ごとに異なる設計のルールを守らなければなりません。

 本連載では、マイクロソフトが提供するサービスの「Windows Azure Platform」に焦点を当て、その「デザインパターン」について解説をします。ここでは、クラウドの特性を生かしたり、制約を回避したりするための設計ノウハウをデザインパターンと呼んでいます。

 Windows Azure Platformは、2010年1月に正式にサービスが開始されてから1年半以上がたちました。利用事例が充実しつつあり、設計ノウハウも徐々にたまってきました。筆者は、Windows Azure Platform上にシステムを構築するための研究をしており、実際にいくつかのシステムを実装した経験があります。そこで得られたノウハウを紹介していきます。

 第1回は、リレーショナルデータベースサービスである「SQL Azure」について、データベース容量が最大50Gバイトという制限を回避する設計ノウハウを紹介します。

 SQL Azureは、SQL Server 2008をベースに開発されたデータベースエンジンであり、SQL Server向けのツールがそのまま使用できることや、SQL Serverからの移行が容易なことが特徴です。SQL Azureが提供されているので、Windows Azure Platformではオンプレミスで動作する既存のアプリケーションに大きな変更を加えることなく、そのままクラウドに移行できることも珍しくはありません。しかし、オンプレミスでは問題のなかった使い方が、クラウドでは障害となるケースがあります。例えば、今回取り上げるように、データベース容量が大きい場合です。

 オンプレミスでも通常、データベース容量が50Gバイトを超えることは、そう多くはないでしょう。しかし、使い方によっては50Gバイトを簡単に超えてしまいます。そうしたケースを二つ紹介します。一つは、データ型がBLOB(Binary Large OBject)のフィールドに、画像や音声、動画などサイズが大きいデータを保存している場合です。もう一つは、ログデータのように一つひとつはサイズが小さくても、それが大量にあるものをデータベースに保存している場合です。

 以下では、これら二つのケースに着目して、容量制限に引っかからないようにする設計について説明します。