SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows Azureで作成するアプリケーションの基礎

Windows Azure Storageを利用したアプリケーションの作成(準備編)

Windows Azureで作成するアプリケーションの基礎(3)

  • X ポスト
  • このエントリーをはてなブックマークに追加

ブロブ

 ブロブ(Blob=Binary Large Object)という名称からも分かるように、大容量のバイナリデータを保存します。例として、写真や動画などを保存することができます。現在のCTP版では、最大50GBの容量が用意されています。REST APIを使用してアクセスします。

 ブロブの構造は、ファイルシステムによく似たツリー構造となっています。コンテナ、ブロブ、ブロックの各要素によって構成されています。

ブロブの階層構造
ブロブの階層構造

 コンテナは、ファイルシステムで言うフォルダに相当します。フォルダに複数のファイルを格納できるように、コンテナにも複数のブロブを格納することができます。ただし、コンテナにコンテナを入れることはできません。ポリシーを設定することができ、アクセスするユーザーを制限したり、書き込みを制限することも可能です。また、最大8KBまでのメタデータを設定することができます。

 ブロブは、ファイルシステムで言うファイルに相当します。ブロブにもメタデータを設定することができます。1回のアップロードで転送可能なブロブの最大容量は64MBとなっています。それ以上のサイズのデータをアップロードする場合には、ブロック単位に分割する必要があります。各ブロックにはIDが振られ、並列アップロードやリトライ処理が可能です。受信したストレージ側でIDにより並べ直され、一つのブロブとして構築されます。

テーブル

 テーブルは、簡単に言えば、非リレーショナルのデータベースです。リレーションを持たない表形式でデータを保存します。REST APIに加え、ADO.NET Data ServicesのクライアントライブラリやLINQによるアクセスにも対応しています。

テーブルの構造
テーブルの構造

 ストレージ上に作成できるテーブルの数には制限がなく、任意の名前を付けることができます。テーブルサイズにも制限はありません。

 テーブルの構造は表形式となっており、エンティティとプロパティで構成されています。行がエンティティを、列がプロパティを意味します。エンティティの数に制限はありません。エンティティは、最大255個までプロパティを持つことができます。このうち3つ(PartitionKey、RowKey、Timestamp)はシステム予約プロパティとして定義されています。各プロパティは<名前、プロパティの型>のペア形式で保存されます。

 システム予約プロパティの詳細は次のとおりです。

システム予約プロパティ
プロパティ 内容
PartitionKey パーティションキー。システムでエンティティの分散配置を行うのに使用します。
RowKey パーティション内での一意のID。PartitionKeyとRowKeyの2つのプロパティによって、テーブル内でエンティティの一意となるキーを構成します。
Timestamp エンティティの最終書き込み時刻をシステムが記録します。読み取り専用。

 基本的にはデータを格納するだけのブロブと比較すると、テーブルはもっと複雑なデータを扱うことができます。とはいえ、リレーショナルデータベースではないので、SQLで言うJOINや外部キーの考え方はありません。そのため、既存のアプリケーションをクラウド化する場合には、データストレージとして何を選択するかをよく考慮する必要があるでしょう。シンプルにブロブか、構造化データを扱うテーブルか、リレーションシップを含めたもっと複雑なデータを扱えるMicrosoft SQL Azureか、それぞれの特性や構造をふまえて選択することが必要となるでしょう。

キュー

 上記の2つのストレージとは目的が異なり、WebロールとWorkerロールのインスタンス間の非同期のメッセージ交換のために使用します。REST APIを使用してアクセスします。

 構造はキューとメッセージで成り立っています。キューはメッセージを管理します。メッセージ数に上限はなく、各メッセージは最大8KBです。キューという名前が示すように、FIFO(First-In First-Out)の方式で、メッセージを処理します。

Windows Azure Storageへのアクセス方法

 Windows Azure Storageへアクセスする方法として、現時点では主に2種類の方法があります(テーブルの場合には、さらにADO.NET Data Servicesを使用する方法もあります)。

  • 直接、REST APIを使用する
  • Windows Azure SDKに含まれるStorageClientプロジェクトのライブラリを使用する

 Windows Azure Storageへのアクセスは、基本はREST APIを用いて行います。「REST API Reference for Windows Azure Storage Services」から、REST APIの仕様を確認することができます(現在のところ、英文のみです)。

 とはいえ、(英文の)REST APIリファレンスを、自分で読み解き、実装するというのは少し面倒だ、もっと簡単にアクセスしたいと思われる読者もおられるでしょう。そのために、Windows Azure SDKのサンプルプログラムの中にある、StorageClientプロジェクトがあります。このStorageClientプロジェクトは、Windows Azure Storageへのアクセスを提供するクラスライブラリです。それで.NET Framework環境であれば、このライブラリを使用することにより、より簡単にWindows Azure Storageへアクセスすることができます。

StorageClientプロジェクトについて

 Windows Azure SDKには、いくつものサンプルプロジェクトが含まれていますが、その一つがStorageClientプロジェクトです。これは、Windows Azure StorageへのアクセスのためのREST APIをラップしたC#で書かれたクラスライブラリです。このライブラリを使用することにより、開発者はREST APIを意識することなく、より簡単にWindows Azure Storageへアクセスすることができるようになります。

 

 ただし、執筆時点では、このライブラリはあくまでサンプルという位置づけとなっています。今後、このようなWindows Azure Storageへのアクセスを提供するライブラリが、正式にWindows Azure SDKに含まれる可能性は高いでしょう。

 

 今回のサンプルプログラムでは、StorageClientプロジェクトではなく、REST APIを使用した方法を紹介します。

次のページ
ブロブを使用したサンプルの作成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Windows Azureで作成するアプリケーションの基礎連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 土井 毅(ドイ ツヨシ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4292 2009/09/11 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング