エクスポート (0) 印刷
すべて展開

テーブル サービス データ モデルについて

更新日: 2014年2月

テーブル サービスは、テーブル形式の構造化ストレージです。以下のセクションでは、テーブル サービス データ モデルの概要を示します。

ストレージ アカウントは、ストレージ システム内でグローバルに一意なエンティティです。ストレージ アカウントは、テーブル サービスの親名前空間であり、認証の基本です。各テーブルの名前が一意である限り、特定のストレージ アカウント内にテーブルをいくつでも作成できます。

ストレージ アカウントは、常に要求の URI で指定する必要があります。テーブル サービスにアクセスするためのベース URI は次のとおりです。

https://myaccount.table.core.windows.net

テーブルには、データがエンティティのコレクションとして格納されます。エンティティは行に似ています。エンティティには、プライマリ キーと一連のプロパティがあります。プロパティは名前と型指定された値のペアであり、列に似ています。

テーブル サービスではテーブルにスキーマを設定しないため、同じテーブル内の 2 つのエンティティが異なるプロパティのセットを持つ場合があります。開発者は、クライアント側でスキーマを設定することもできます。テーブルには、エンティティをいくつでも含めることができます。

テーブル名は、次の規則に従う必要があります。

  • テーブル名は、アカウント内で一意である必要があります。

  • テーブル名には英数字のみ使用できます。

  • テーブル名を数字から開始することはできません。

  • テーブル名は大文字と小文字が区別されません。

  • テーブル名の長さは 3 ~ 63 文字にする必要があります。

  • "tables" など、一部のテーブル名は予約されています。予約されたテーブル名でテーブルを作成しようとすると、エラー コード 404 (Bad Request) が返されます。

これらの規則は、正規表現 "^[A-Za-z][A-Za-z0-9]{2,62}$" でも記述されます。

テーブル名の作成時に指定された大文字と小文字の違いは維持されますが、使用時には大文字と小文字は区別されません。

プロパティ名は大文字と小文字が区別され、255 文字を超えることはできません。プロパティ名は、C# 識別子の名前付け規則に従う必要があります。

noteメモ
XML 仕様によると、一部の C# 識別子は有効ではありません。プロパティ名はテーブル サービスに対する要求で XML ペイロードを介して送信されるため、これらの識別子はプロパティ名では使用できません。

Important重要
プロパティ名は、URL 内のテーブル サービスに渡されます。一部の文字は、URL に表示するために UTF-8 (推奨) または MBCS でパーセント エンコードする必要があります。このエンコードは、Azure .NET ライブラリを使用するとき、またはプロパティ名を含む Uri オブジェクトを作成するときに自動的に実行されます。ただし、エンコードしても URL パスでは無効な文字もあります。プロパティ名でこれらの文字を使用することはできません。\uE000 のようなコード ポイントは NTFS ファイル名では有効ですが、無効な Unicode 文字であるため、使用することはできません。また、制御文字 (0x00 ~ 0x1F、\u0081 など) など、一部の ASCII 文字または Unicode 文字も使用できません。HTTP/1.1 で Unicode 文字列に適用される規則については、以下を参照してください。

noteメモ
バージョン 2009-04-14 以降では、テーブル サービスはプロパティ名でダッシュ (-) 文字をサポートしなくなりました。

エンティティでは、以下のセクションで説明する 3 つのシステム プロパティを含め、最大 255 個のプロパティを使用できます。したがって、ユーザーは 3 つのシステム プロパティに加えて最大 252 個のカスタム プロパティを含めることができます。エンティティのプロパティ内のすべてのデータの合計サイズが 1 MB を超えることはできません。

エンティティには、必ず次のシステム プロパティがあります。

  • PartitionKey プロパティ

  • RowKey プロパティ

  • Timestamp プロパティ

これらのシステム プロパティは、テーブルのすべてのエンティティに自動的に含められます。これらのプロパティの名前は予約されており、変更できません。PartitionKey および RowKey の値は開発者が挿入および更新します。変更できない Timestamp の値はサーバーが管理します。

次の文字は、PartitionKey プロパティと RowKey プロパティの値として使用できません。

  • スラッシュ (/) 文字

  • 円記号 (\) 文字

  • 番号記号 (#) 文字

  • 疑問符 (?) 文字

  • 次のような U+0000 から U+001F までの制御文字が含まれています。

    • 水平タブ文字 (\t)

    • 改行文字 (\n)

    • 復帰文字 (\r)

  • U+007F から U+009F までの制御文字

テーブルは、パーティションに分割することでストレージ ノード間の負荷分散をサポートします。テーブルのエンティティはパーティションごとに整理されます。パーティションは、同じパーティション キー値を処理する連続した範囲のエンティティです。パーティション キーは、PartitionKey プロパティで指定された、特定のテーブル内のパーティションの一意識別子です。パーティション キーは、エンティティのプライマリ キーの最初の部分を構成します。パーティション キーは、最大 1 KB の文字列値にすることができます。

すべての挿入操作、更新操作、および削除操作に PartitionKey プロパティを含める必要があります。

プライマリ キーの 2 番目の部分は、RowKey プロパティで指定された行キーです。行キーは、特定のパーティション内のエンティティの一意識別子です。PartitionKeyRowKey の組み合わせで、テーブル内のすべてのエンティティを一意に識別します。

行キーは、最大 1 KB の文字列値です。

すべての挿入操作、更新操作、および削除操作に RowKey プロパティを含める必要があります。

Timestamp プロパティは、エンティティの最終変更時刻を記録するためにサーバー側に保持される DateTime 値です。テーブル サービスは、Timestamp プロパティを内部的に使用してオプティミスティック同時実行制御を提供します。Timestamp の値は、単純に増加する値です。これは、エンティティが変更されるたびに、そのエンティティの Timestamp の値が増加することを意味します。このプロパティは、挿入操作または更新操作には設定しないでください (値は無視されます)。

テーブル サービスは、「OData プロトコル仕様」で定義されているデータ型のサブセットをサポートします。テーブル サービスでサポートされているプロパティの型を次の表に示します。

 

OData データ型 共通言語ランタイム型 詳細

Edm.Binary

byte[]

最大 64 KB のバイト配列。

Edm.Boolean

bool

ブール値。

Edm.DateTime

DateTime

世界協定時刻 (UTC) で表される 64 ビット値。サポートされる DateTime 範囲は、世界協定時刻の西暦 1601 年 1 月 1 日深夜 12:00 に始まり、9999 年 12 月 31 日で終了します。

Edm.Double

double

64 ビットの浮動小数点数値。

Edm.Guid

Guid

128 ビットのグローバル一意識別子。

Edm.Int32

Int32 またはint

32 ビットの整数。

Edm.Int64

Int64 またはlong

64 ビットの整数。

Edm.String

String

UTF-16 エンコード値。文字列値は、最大 64 KB のサイズにすることができます。

既定では、プロパティは、別の型を指定しない限り String 型として作成されます。プロパティの型を明示的に設定するには、Insert Entity 操作または Update Entity 操作の適切な OData データ型を使用してデータ型を指定します。詳細については、「エンティティの挿入と更新」を参照してください。

クエリ要求の URI でさまざまなプロパティ型をフィルター処理する方法を示す例については、「テーブルおよびエンティティのクエリ」を参照してください。

関連項目

表示:
© 2014 Microsoft