Windows Azure TableをRDBMSと比較する

2009年9月8日(火)
田中 主夫

Windows Azure Table ストレージの「テーブル」

 今回の解説に入る前に一つお知らせがあります。これまで1週間程度かかっていたWindows Azureのトークンの取得ですが、2009年9月3日よりプロダクトコードが即時発行されるようになりました。これで今までより容易にWindows Azureを体験できるようになったのではないかと思います。

 前回は、Windows Azureの簡単な紹介と、クラウドOSの要となるストレージを中心に解説しました。第2回となる今回は、Windows Azureの「テーブル」とはどのようなものなのか、リレーショナル・データベース・マネージメント・システム(以降RDBMS)のものと比較しながら見ていくことにします。

 ハードウエアの性能向上により、今日ではRDBMSのテーブルに画像ファイルを格納することも多くなりましたが、以前はファイル名はテーブル、本体ファイルは外部、といった具合に分けて保存することが多かったのです。

 Windows Azureストレージでは従来こうした使い分けが行われており、画像を格納するBlob、そしてファイル名などを保存するTableという構成になっています。このWindows Azure Table(Key-Valueストア型)は低コストでスケーラビリティーに優れますが、機能や操作性については、やはりSQL ServerがベースのSQL Azure(リレーショナル型)に一日の長があるようです。

 スケーラビリティーのための分散処理の仕組みの詳細については、3ページの資料をご参照いただくとして、ここでは実際にWindows Azure Tableにテーブルを作成しデータを格納、その検索を行うことで、このストレージの特徴を把握していくことにします。

Windows Azure Table ストレージにテーブルを作成する

 Windows Azure Tableは、Partition KeyとRow Keyの2つのキー項目の組み合わせで一意になるように設計されています。まずは単純に「Partition Keyが番号付きのテーブル名」で「Row Keyがシリアル番号」ととらえて進みます。図1-2をご参照ください。

 前回記事(http://thinkit.jp/article/1019/1/)のBlobストレージの操作で利用したAzure Storage Explorerでテーブルを作成します。作成の際に指定するのはテーブル名のみです。テーブルにデータを登録することもできますが、ここで設定できる値はPartition KeyとRow Keyだけです(図1-3参照)。

 データ本体となるのはEntitiesの部分ですが、この構造の定義はプログラムファイル内で行います。Azure Table ExplorerではEntitiesの値を登録することはできません。

 このあたりは、はじめ筆者もかなり戸惑ったところなのですが、Windows Azure Tableでは固定のスキーマはなく、スキーマ情報はWindows Azure Tableには格納されていません。つまりRDBMSにあるような辞書テーブルはWindows Azure Tableでは存在しません。

 従って、RDBMSでテーブルの構造を参照するための「describe テーブル名」のようなコマンドを実装するとしたなら、構造確認のために実際にサンプルとなるデータを取得する必要があります。また同じテーブルであっても、サンプルとして採用したデータによりEntitiesの構成が異なって見えることもある、ということです。

ERPの導入支援に携わりOracle, SQL Server, DB2などのRDBMSを扱う。クラウドの出現により、これで速度劣化のトラブルから開放されるかと思いきや、ストレージ面ではRDBMSの便利さにあらためて感心する面も。インストールマニアックス2008では苦労の甲斐(http://iis.museum-in-cloud.com)あって勝利。褒美のマイクロソフト本社訪問でWindows AzureのSQL機能を知る。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています