SHOEISHA iD

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

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

Windows Azure新機能チュートリアル

Windows Azure for Node.jsでキュー、テーブルを操作しよう

Windows Azure 新機能チュートリアル(16)

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

ビッグデータ管理に優れた「テーブル」

 テーブルは表形式のデータ構造を保存するためのストレージで、いわゆるKVS(キーバリューストア)に分類されます。RDBMSのようにスキーマは必要なく柔軟なデータ構造を表現できる一方、JOINやSORTといった操作はできません。

 表形式のデータ構造のうち、行データのことをエンティティ、カラムに相当するものをプロパティ(Property)と呼びます。プロパティにはパーティションキー(Partition Key)と行キー(RowKey)と呼ばれるシステムプロパティがあり、これらを組み合わせた値がテーブル全体で一意(KVSのキーとなる)である必要があります。

 先ほど同様、テーブルについてもサンプルをベースに解説していきます。

サンプル説明

 簡単な住所録アプリケーションを、テーブルを用いて実装しています。キューと同様の手順でサンプルを実行し「テーブルサンプル」のページを開きます(図3)。

図3 テーブルサンプルの実行画面
図3 テーブルサンプルの実行画面

 名前、住所、電話を入力し[追加]ボタンをクリックするとテーブルにデータが追加されます。また[削除]チェックボックスをオンにして、[削除]ボタンをクリックするとデータを削除できます。

テーブルの作成

 アプリケーションが起動すると最初にテーブルを作成します(リスト7)。

リスト7 テーブルの作成(WebRole1\routes\table.js 6行目~)
//(1)テーブルクライアントの作成
var client = azure.createTableService(
  azure.ServiceClient.DEVSTORE_STORAGE_ACCOUNT,
  azure.ServiceClient.DEVSTORE_STORAGE_ACCESS_KEY, 
  azure.ServiceClient.DEVSTORE_TABLE_HOST);

//(2)テーブルの作成
client.createTableIfNotExists(TABLE_NAME, function(err, created) {
    ...
  }
});

 (1)はテーブル用クライアントの作成をしています。BLOB、キューの場合と特に違いありません。(2)のcreateTableIfNotExistメソッドでテーブルを作成します。第1引数に作成するテーブル名、第2引数にはコールバック関数を指定します。コールバック関数の変数はキュー作成時と同様です。

エンティティの挿入

 入力されたデータをテーブルに挿入します。テーブルでは、これら行データのことをエンティティとは呼びます。また、カラムに相当するものをプロパティと呼びます。RDBMSのようにスキーマはなく、最大255個までのプロパティかつ合計が1MBを超えないようなデータを扱うことができます。エンティティの挿入はリスト8のように行います。

リスト8 エンティティの挿入(WebRole1\routes\table.js 35行目~)
// (1)エンティティの定義
var entity = {
  PartitionKey : 'pkey',               // パーティションキー
  RowKey       : uuid(),               // 行キ-
  name         : req.body.name,        // 名前
  address      : req.body.adress,      // 住所
  tel          : req.body.tel          // 電話番号
};
// (2)エンティティの挿入
client.insertEntity(TABLE_NAME, entity, function(err) {
  ...
});

 (1)はテーブルに挿入するエンティティを定義しています。先ほども説明したとおり、エンティティにはパーティションキーと行キーと呼ばれるシステムプロパティを定義しておく必要があります。パーティションキーと行キーは、テーブル内で一意の必要があります。逆に言うとパーティションキーと行キーで個別にエンティティを識別することができます。

 この例では、パーティションキーは固定文字列「pkey」、行キーにはUUIDを生成して指定し一意性を保っています。残りのname/address/telはユーザーが定義したプロパティで、フォームから入力されたデータを設定しています。

 (2)のinsertEntityメソッドでエンティティを挿入します。第1引数にテーブル、第2引数に(1)で作成したエンティティを指定しています。

次のページ
まとめ

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

  • 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プロジェクト statemachine(statemachine)

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング