ステップ 2: 台帳にテーブル、インデックス、サンプルデータを作成する - Amazon Quantum Ledger Database (Amazon QLDB)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ステップ 2: 台帳にテーブル、インデックス、サンプルデータを作成する

Amazon QLDB 台帳がアクティブになったら、車両、車両の所有者、登録情報に関するデータのテーブルを作成できるようになります。テーブルとインデックスを作成した後、これらにデータをロードできます。

このステップでは、vehicle-registration 台帳に 4 つのテーブルを作成します。

  • VehicleRegistration

  • Vehicle

  • Person

  • DriversLicense

以下のインデックスも作成します。

テーブル名 フィールド
VehicleRegistration VIN
VehicleRegistration LicensePlateNumber
Vehicle VIN
Person GovId
DriversLicense LicenseNumber
DriversLicense PersonId

QLDB コンソールを使用して、インデックス付きのこれらのテーブルを自動的に作成し、そこにサンプルデータをロードできます。または、を使用できます。PartiQL エディターコンソールでそれぞれを手動で実行するPartiQLステートメント step-by-step。

テーブル、インデックス、およびサンプルデータを作成するには

  1. Amazon QLDB コンソール (https://console.aws.amazon.com/qldb) を開きます。

  2. ナビゲーションペインで、[Getting started (開始方法)] を選択します。

  3. [Sample application data] (サンプルアプリケーションデータ) カードの [Automatic option] (自動オプション) で、台帳のリストから vehicle-registration を選択します。

  4. [Load sample data (サンプルデータのロード)] を選択します。

    オペレーションが正常に終了すると、コンソールに「Sample data loaded (サンプルデータがロードされました)」というメッセージが表示されます。

    このスクリプトは、すべてのステートメントを単一のトランザクションで実行します。トランザクションの一部が失敗すると、すべてのステートメントがロールバックされ、該当するエラーメッセージが表示されます。問題に対処した後、オペレーションを再試行できます。

    注記
    • 考えられる原因の 1 つとして、重複するテーブル複製を作成しようとすると、トランザクションが失敗することがあります。サンプルデータをロードするためのリクエストは、VehicleRegistrationVehiclePersonDriversLicense のいずれかのテーブル名が台帳に既に存在する場合、失敗します。

      代わりに、このサンプルデータを空の台帳にロードしてみてください。

    • このスクリプトは、パラメータ化された INSERT ステートメントを実行します。したがって、これらの PartiQL ステートメントは、リテラルデータではなくバインドパラメータを使用してジャーナルブロックに記録されます。たとえば、ジャーナルブロックに次のステートメントがあるとします。ここで、疑問符 (?) はドキュメントコンテンツの変数プレースホルダーです。

      INSERT INTO Vehicle ?

空の PrimaryOwner フィールドを含む VehicleRegistration と、空の PersonId フィールドを含む DriversLicense にドキュメントを挿入します。後で、Person テーブルからシステムによって割り当てられたドキュメント id をこれらのフィールドに入力します。

ヒント

ベストプラクティスとして、このドキュメント id メタデータフィールドを外部キーとして使用します。(詳細については、「ドキュメントのメタデータのクエリの実行」を参照してください)

テーブル、インデックス、およびサンプルデータを作成するには

  1. Amazon QLDB コンソール (https://console.aws.amazon.com/qldb) を開きます。

  2. ナビゲーションペインで、[] を選択します。PartiQL エディター

  3. vehicle-registration 台帳を選択します。

  4. まず、4 つのテーブルを作成します。QLDB ではオープンコンテンツがサポートされており、スキーマは適用されないため、属性やデータ型は指定しません。

    クエリエディタウィンドウで、以下のステートメントを入力し、[Run (実行)] を選択します。このステートメントを実行するには、キーボードショートカット Ctrl+Enter (Windows の場合) または Cmd+Return (macOS の場合) を使用することもできます。キーボードショートカットの詳細については、「PartiQL エディタのキーボードショートカット」を参照してください。

    CREATE TABLE VehicleRegistration

    以下の各項目について、このステップを繰り返します。

    CREATE TABLE Vehicle
    CREATE TABLE Person
    CREATE TABLE DriversLicense
  5. 次に、各テーブルのクエリパフォーマンスを最適化するインデックスを作成します。

    重要

    ドキュメントを効率的に検索するには、インデックスが必要です。インデックスがないと、QLDB はドキュメントを読み取るときにテーブルスキャンを実行する必要があります。これにより、同時実行の競合やトランザクションのタイムアウトなど、大きなテーブルでパフォーマンスの問題が発生する可能性があります。

    テーブルスキャンを回避するには、インデックス付きフィールドまたはドキュメント ID で等価演算子 (= または IN) を使用する WHERE 述語句でステートメントを実行する必要があります。(詳細については、「クエリパフォーマンスの最適化」を参照してください)

    クエリエディタウィンドウで、以下のステートメントを入力し、[Run (実行)] を選択します。

    CREATE INDEX ON VehicleRegistration (VIN)

    以下に対してこの手順を繰り返します。

    CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
    CREATE INDEX ON Vehicle (VIN)
    CREATE INDEX ON Person (GovId)
    CREATE INDEX ON DriversLicense (LicenseNumber)
    CREATE INDEX ON DriversLicense (PersonId)
  6. インデックスを作成したら、テーブルへのデータのロードを開始することができます。このステップでは、台帳が追跡している車両の所有者に関する個人情報を含む Person テーブルにドキュメントを挿入します。

    クエリエディタウィンドウで、以下のステートメントを入力し、[Run (実行)] を選択します。

    INSERT INTO Person << { 'FirstName' : 'Raul', 'LastName' : 'Lewis', 'DOB' : `1963-08-19T`, 'GovId' : 'LEWISR261LL', 'GovIdType' : 'Driver License', 'Address' : '1719 University Street, Seattle, WA, 98109' }, { 'FirstName' : 'Brent', 'LastName' : 'Logan', 'DOB' : `1967-07-03T`, 'GovId' : 'LOGANB486CG', 'GovIdType' : 'Driver License', 'Address' : '43 Stockert Hollow Road, Everett, WA, 98203' }, { 'FirstName' : 'Alexis', 'LastName' : 'Pena', 'DOB' : `1974-02-10T`, 'GovId' : '744 849 301', 'GovIdType' : 'SSN', 'Address' : '4058 Melrose Street, Spokane Valley, WA, 99206' }, { 'FirstName' : 'Melvin', 'LastName' : 'Parker', 'DOB' : `1976-05-22T`, 'GovId' : 'P626-168-229-765', 'GovIdType' : 'Passport', 'Address' : '4362 Ryder Avenue, Seattle, WA, 98101' }, { 'FirstName' : 'Salvatore', 'LastName' : 'Spencer', 'DOB' : `1997-11-15T`, 'GovId' : 'S152-780-97-415-0', 'GovIdType' : 'Passport', 'Address' : '4450 Honeysuckle Lane, Seattle, WA, 98101' } >>
  7. 次に、各車両の所有者の運転免許証情報を含むドキュメントを DriversLicense テーブルに入力します。

    クエリエディタウィンドウで、以下のステートメントを入力し、[Run (実行)] を選択します。

    INSERT INTO DriversLicense << { 'LicenseNumber' : 'LEWISR261LL', 'LicenseType' : 'Learner', 'ValidFromDate' : `2016-12-20T`, 'ValidToDate' : `2020-11-15T`, 'PersonId' : '' }, { 'LicenseNumber' : 'LOGANB486CG', 'LicenseType' : 'Probationary', 'ValidFromDate' : `2016-04-06T`, 'ValidToDate' : `2020-11-15T`, 'PersonId' : '' }, { 'LicenseNumber' : '744 849 301', 'LicenseType' : 'Full', 'ValidFromDate' : `2017-12-06T`, 'ValidToDate' : `2022-10-15T`, 'PersonId' : '' }, { 'LicenseNumber' : 'P626-168-229-765', 'LicenseType' : 'Learner', 'ValidFromDate' : `2017-08-16T`, 'ValidToDate' : `2021-11-15T`, 'PersonId' : '' }, { 'LicenseNumber' : 'S152-780-97-415-0', 'LicenseType' : 'Probationary', 'ValidFromDate' : `2015-08-15T`, 'ValidToDate' : `2021-08-21T`, 'PersonId' : '' } >>
  8. 次に、車両登録ドキュメントを VehicleRegistration テーブルに入力します。これらのドキュメントには、代表所有者と共有所有者を格納する、ネストされた Owners 構造が含まれています。

    クエリエディタウィンドウで、以下のステートメントを入力し、[Run (実行)] を選択します。

    INSERT INTO VehicleRegistration << { 'VIN' : '1N4AL11D75C109151', 'LicensePlateNumber' : 'LEWISR261LL', 'State' : 'WA', 'City' : 'Seattle', 'PendingPenaltyTicketAmount' : 90.25, 'ValidFromDate' : `2017-08-21T`, 'ValidToDate' : `2020-05-11T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId': '' }, 'SecondaryOwners' : [] } }, { 'VIN' : 'KM8SRDHF6EU074761', 'LicensePlateNumber' : 'CA762X', 'State' : 'WA', 'City' : 'Kent', 'PendingPenaltyTicketAmount' : 130.75, 'ValidFromDate' : `2017-09-14T`, 'ValidToDate' : `2020-06-25T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId': '' }, 'SecondaryOwners' : [] } }, { 'VIN' : '3HGGK5G53FM761765', 'LicensePlateNumber' : 'CD820Z', 'State' : 'WA', 'City' : 'Everett', 'PendingPenaltyTicketAmount' : 442.30, 'ValidFromDate' : `2011-03-17T`, 'ValidToDate' : `2021-03-24T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId': '' }, 'SecondaryOwners' : [] } }, { 'VIN' : '1HVBBAANXWH544237', 'LicensePlateNumber' : 'LS477D', 'State' : 'WA', 'City' : 'Tacoma', 'PendingPenaltyTicketAmount' : 42.20, 'ValidFromDate' : `2011-10-26T`, 'ValidToDate' : `2023-09-25T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId': '' }, 'SecondaryOwners' : [] } }, { 'VIN' : '1C4RJFAG0FC625797', 'LicensePlateNumber' : 'TH393F', 'State' : 'WA', 'City' : 'Olympia', 'PendingPenaltyTicketAmount' : 30.45, 'ValidFromDate' : `2013-09-02T`, 'ValidToDate' : `2024-03-19T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId': '' }, 'SecondaryOwners' : [] } } >>
  9. 最後に、台帳に登録されている車両について記述したドキュメントを Vehicle テーブルに入力します。

    クエリエディタウィンドウで、以下のステートメントを入力し、[Run (実行)] を選択します。

    INSERT INTO Vehicle << { 'VIN' : '1N4AL11D75C109151', 'Type' : 'Sedan', 'Year' : 2011, 'Make' : 'Audi', 'Model' : 'A5', 'Color' : 'Silver' }, { 'VIN' : 'KM8SRDHF6EU074761', 'Type' : 'Sedan', 'Year' : 2015, 'Make' : 'Tesla', 'Model' : 'Model S', 'Color' : 'Blue' }, { 'VIN' : '3HGGK5G53FM761765', 'Type' : 'Motorcycle', 'Year' : 2011, 'Make' : 'Ducati', 'Model' : 'Monster 1200', 'Color' : 'Yellow' }, { 'VIN' : '1HVBBAANXWH544237', 'Type' : 'Semi', 'Year' : 2009, 'Make' : 'Ford', 'Model' : 'F 150', 'Color' : 'Black' }, { 'VIN' : '1C4RJFAG0FC625797', 'Type' : 'Sedan', 'Year' : 2019, 'Make' : 'Mercedes', 'Model' : 'CLK 350', 'Color' : 'White' } >>

次に、SELECT ステートメントを使用すると、vehicle-registration 台帳のテーブルからデータを読み取ることができます。ステップ 3: 台帳のテーブルのクエリを実行する に進みます。