サンプル・データ
サンプル・データは、person_contacts.json
に含まれています。ここでは、JSONデータを格納する簡単な2列の表を作成します。
最初の列はアカウントIDで、主キーとして機能します。少なくとも、すべての表に、主キーとして機能する単一の非JSONフィールドが常に含まれます。複合主キー、または1つ以上のシャード・キーを使用する場合、非JSONフィールドの数が拡張されます。
2番目のフィールドはJSONフィールドです。すべてのこのようなフィールドと同様、このフィールドには有効なJSONデータを含めることができます。これにより、表スキーマに大幅な柔軟性がもたらされ、データのスキーマを展開する必要がある場合に特に便利です。ただし、JSONに予想どおりのデータが含まれていることを確認するために、さらにエラー・チェックを必要とするというコストがあります。
CREATE TABLE personContacts (account INTEGER,
person JSON,
PRIMARY KEY(account))
この表には23行をロードしますが、その一部は意図的に不完全なものです。各行は単一のJSONオブジェクトとして表されます。次に、参照用にサンプル・データ・ファイルの代表的なセクションを示します。
次のリストで、アカウント3は勤務先住所のみを示し、自宅住所はありません。アカウント4は住所情報を一切提供しません。アカウント5は、person
フィールドのあらゆるデータの提供に失敗しています。アカウント22では、アドレス・オブジェクトが明示的にnull
に設定されています。アカウント23では、自宅住所と勤務先住所の両方が明示的にnullに設定されています。これはすべて有効なJSONで、すべてコードで処理する必要があります。
{
"account" : 1,
"person" : {
"lastName" : "Jones",
"firstName" : "Joe",
"address" : {
"home" : {
"street" : "15 Elm",
"city" : "Lakeville",
"zip" : "12345"
},
"work" : {
"street" : "12 Main",
"city" : "Lakeville",
"zip" : "12345"
}
},
"phone" : {
"home" : "800-555-1234",
"work" : "877-123-4567"
}
}
}
{
"account" : 2,
"person" : {
"lastName" : "Anderson",
"firstName" : "Nick",
"address" : {
"home" : {
"street" : "4032 Kenwood Drive",
"city" : "Boston",
"zip" : "02102"
},
"work" : {
"street" : "541 Bronx Street",
"city" : "Boston",
"zip" : "02102"
}
},
"phone" : {
"home" : "800-555-9201",
"work" : "877-123-8811"
}
}
}
{
"account" : 3,
"person" : {
"lastName" : "Long",
"firstName" : "Betty",
"address" : {
"work" : {
"street" : "10 Circle Drive",
"city" : "Minneapolis",
"zip" : "55111"
}
},
"phone" : {
"home" : "800-555-2701",
"work" : "877-181-4912"
}
}
}
{
"account" : 4,
"person" : {
"lastName" : "Brown",
"firstName" : "Harrison",
"phone" : {
"home" : "800-555-3838",
"work" : "877-753-4110"
}
}
}
{
"account" : 5
}
{
"account" : 6,
"person" : {
"lastName" : "Abrams",
"firstName" : "Cynthia",
"address" : {
"home" : {
"street" : "2 Fairfield Drive",
"city" : "San Jose",
"zip" : "95054"
}
},
"phone" : {
"home" : "800-528-4897",
"work" : "877-180-5287"
}
}
}
# ...
# sample data removed for the book. See person_contact.json
# in ..../examples/table for the complete data
# file.
# ...
{
"account" : 21,
"person" : {
"lastName" : "Blase",
"firstName" : "Lisa",
"address" : {
"home" : {
"street" : "72 Rutland Circle",
"city" : "Boston",
"zip" : "02102"
},
"work" : {
"street" : "541 Bronx Street",
"city" : "Boston",
"zip" : "02102"
}
},
"phone" : {
"home" : "800-555-4404",
"work" : "877-123-2277"
}
}
}
{
"account" : 22,
"person" : {
"address" : null,
"phone" : {
"home" : "800-555-1234",
"work" : "877-123-4567"
}
}
}
{
"account" : 23,
"person" : {
"address" : {
"home" : null,
"work" : null
},
"phone" : {
"home" : "800-555-1234",
"work" : "877-123-4567"
}
}
}