サンプル・データ

サンプル・データは、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"
      }
   }
}