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

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

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

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

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

  • VehicleRegistration

  • Vehicle

  • Person

  • DriversLicense

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

テーブル名 Field
VehicleRegistration VIN
VehicleRegistration LicensePlateNumber
Vehicle VIN
Person GovId
DriversLicense LicenseNumber
DriversLicense PersonId

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

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

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

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

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

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

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

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

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

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

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

      INSERT INTO Vehicle ?

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

ヒント

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

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

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

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

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

  4. まず 4 つのテーブルを作成することから始めます。QLDB ではオープンのコンテンツをサポートしており、スキーマを強制しないため、属性やデータ型は指定しません。

    クエリエディタウィンドウで、以下のステートメントを入力し、[Run (実行)] を選択します。このステートメントを実行するには、キーボードショートカットを使用できます。Ctrl+Enter (Windows の場合)、または Cmd+Return で許可されるmacOSアクションの形式について説明します。 キーボードショートカットの詳細については、「」を参照してくださいアクセス Amazon QLDB コンソールの使用[こんそーるのしよう]

    CREATE TABLE VehicleRegistration

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

    CREATE TABLE Vehicle
    CREATE TABLE Person
    CREATE TABLE DriversLicense
  5. 次に、各テーブルに対してクエリを高速化するためのインデックスを作成します。

    クエリエディタウィンドウで、以下のステートメントを入力し、[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: 台帳のテーブルのクエリを実行する」に進みます。