例で使用する表
表は、ユーザー・データを保持するための基本構造です。
表1: 航空会社手荷物追跡アプリケーション
このスキーマで使用される表はBaggageInfo
です。このスキーマには、LONG、STRINGなどの固定データ型の組合せが存在します。また、列の1つとしてスキーマなしのJSON (bagInfo
)も存在します。スキーマなしのJSONには固定データ型がありません。乗客の手荷物情報は、スキーマなしのJSONです。一方、チケット番号、フルネーム、性別、連絡先詳細などの乗客情報は、すべて固定スキーマの一部です。この非固定スキーマなしのJSONフィールドに任意の数のフィールドを追加できます。
CREATE TABLE BaggageInfo (
ticketNo LONG,
fullName STRING,
gender STRING,
contactPhone STRING,
confNo STRING,
bagInfo JSON,
PRIMARY KEY (ticketNo)
)
表2: ストリーミング・メディア・サービス - 永続ユーザー・プロファイル・ストア
このスキーマで使用される表はstream_acct
です。このスキーマでの主キーはacct_id
です。このスキーマにはJSON列(acct_data
)も含まれており、これはスキーマレスです。スキーマなしのJSONには固定データ型がありません。この非固定スキーマレスJSONフィールドには、任意の数のフィールドを追加できます。
CREATE TABLE stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data JSON,
PRIMARY KEY(acct_id)
)
表3: JSONコレクション表 - ショッピング・アプリケーション
JSONコレクション表は、データを純粋にドキュメントとして格納および取得するアプリケーションに役立ちます。JSONコレクション表はスキーマレス表であり、主キー・フィールド宣言を使用して表を柔軟に作成できます。表へのデータの挿入時に、ドキュメント内の他のフィールドとともに主キー・フィールドの値を指定する必要があります。
ショッピング・アプリケーションで使用される表は、storeAcct
です。この表は、買物客のcontactPhone
が主キーであるドキュメントのコレクションです。行は、個々の買物客のレコードを表します。個々の行にドキュメント内と同じフィールドを含む必要はありません。買物客のプリファレンス(name
、address
、email
、notify
など)は、ドキュメントの最上位フィールドとして格納されます。ドキュメントには、ショッピング関連情報を含む任意の数のJSONフィールド(wishlist
、cart
、orders
など)を含めることができます。
JSON配列wishlist
には、買物客が希望する商品が含まれます。この配列の各要素には、item
やpriceperunit
などのネストされたJSONフィールドが含まれており、ウィッシュリスト項目の商品名と価格詳細を格納します。
JSON配列cart
には、買物客が購入する予定の商品が含まれます。この配列の各要素には、商品名、単位数および各単位の価格を格納するネストされたJSONフィールド(item
、quantity
、priceperunit
など)が含まれます。
JSON配列orders
には、買物客が購入した商品が含まれます。この配列の各要素には、orderID
、item
、priceperunit
、EstDelivery
、status
などのネストされたJSONフィールドが含まれ、注文番号、商品名、各単位の価格、商品の配送見積日および注文のステータスを格納します。
CREATE TABLE IF NOT EXISTS storeAcct (
contactPhone STRING,
PRIMARY KEY(SHARD(contactPhone))
) AS JSON COLLECTION