Azure をローカルコンピュータで動かすと、ローカルにストレージアカウントが作成されます。
これは、.\SQLEXPRESS というインスタンスに、「DevelopmentStrageDb<作成日付?>」な風なデータベースが作成されていて、
テーブル構造はこんな感じ。
キー情報としては、
- AccountName アカウント名
- ContainerName コンテナ名
- BlobName ブロブ名
- VersionTimestamp タイムスタンプ
- TableName テーブル名
- PartitionKey テーブルストレージのパーミッションキー
- RowKey 列名
な簡単な構造をしています。
# 実際は Blob の Block 構造のために、Blob ストレージのほうはややこしいみたいですが。
DDL は、以下のようになっているので、
[code lang=”sql”]
CREATE TABLE [dbo].[Blob](
[AccountName] [varchar](24) NOT NULL,
[ContainerName] [varchar](63) NOT NULL,
[BlobName] [nvarchar](256) NOT NULL,
[VersionTimestamp] [datetime] NOT NULL,
[BlobType] [int] NULL,
[CreationTime] [datetime] NOT NULL,
[LastModificationTime] [datetime] NULL,
[ContentLength] [bigint] NOT NULL,
[ContentType] [varchar](128) NULL,
[ContentMD5] [binary](16) NULL,
[ServiceMetadata] [varbinary](max) NULL,
[Metadata] [varbinary](max) NULL,
[LeaseId] [uniqueidentifier] NULL,
[LeaseTypeInt] [int] NULL,
[LeaseDuration] [bigint] NULL,
[LeaseEndTime] [datetime] NULL,
[SequenceNumber] [bigint] NULL,
[IsCommitted] [bit] NULL,
[HasBlock] [bit] NULL,
[UncommittedBlockIdLength] [int] NULL,
[MaxSize] [bigint] NULL,
[FileName] [nvarchar](260) NULL,
CONSTRAINT [PK_dbo.Blob] PRIMARY KEY CLUSTERED
(
[AccountName] ASC,
[ContainerName] ASC,
[BlobName] ASC,
[VersionTimestamp] ASC
)
[/code]
[code lang=”sql”]
CREATE TABLE [dbo].[TableRow](
[AccountName] [varchar](24) NOT NULL,
[TableName] [varchar](63) NOT NULL,
[PartitionKey] [nvarchar](256) NOT NULL,
[RowKey] [nvarchar](256) NOT NULL,
[Timestamp] [datetime] NOT NULL,
[Data] [xml] NULL,
CONSTRAINT [PK_dbo.TableRow] PRIMARY KEY CLUSTERED
(
[AccountName] ASC,
[TableName] ASC,
[PartitionKey] ASC,
[RowKey] ASC
)
[/code]
- AccountName: 24 文字以内
- ContainerName: 63 文字以内
- BlobName: 256 文字以内
- TableName: 63 文字以内
と想像がつくわけですが、果たして、実際の Azure システムでは如何に?
Windows Azureストレージ・サービスの命名規則を調べてみた – waりとnaはてな日記
http://d.hatena.ne.jp/waritohutsu/20100404/1270414253
ちなみに、SQL Server の場合、(デフォルトでは)比較時に大文字小文字を判別しないので、アカウント名やコンテナ名などには大文字小文字で区別させるのは厳禁。エミュレータ環境で動かなくなるという罠が。

