翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ステップ 2: 台帳にテーブル、インデックス、サンプルデータを作成する
重要
サポート終了通知: 既存のお客様は、07/31/2025 のサポート終了まで Amazon QLDB を使用できます。詳細については、「Amazon QLDB 台帳を Amazon Aurora PostgreSQL に移行する
Amazon QLDB 台帳がアクティブになったら、車両、車両の所有者、登録情報に関するデータのテーブルを作成できるようになります。テーブルとインデックスを作成した後、これらにデータをロードできます。
このステップでは、vehicle-registration 台帳に 4 つのテーブルを作成します。
-
VehicleRegistration -
Vehicle -
Person -
DriversLicense
以下のインデックスも作成します。
| テーブル名 | フィールド |
|---|---|
VehicleRegistration |
VIN |
VehicleRegistration |
LicensePlateNumber |
Vehicle |
VIN |
Person |
GovId |
DriversLicense |
LicensePlateNumber |
DriversLicense |
PersonId |
QLDB コンソールを使用して、インデックス付きのこれらのテーブルを自動的に作成し、そこにサンプルデータをロードできます。または、コンソールの [PartiQL エディタ] を使用して、各 PartiQL ステートメントをステップごとに手動で実行できます。
テーブル、インデックス、およびサンプルデータを作成するには
-
Amazon QLDB コンソール (https://console.aws.amazon.com/qldb
) を開きます。 -
ナビゲーションペインで、[Getting started (開始方法)] を選択します。
-
[Sample application data] (サンプルアプリケーションデータ) カードの [Automatic option] (自動オプション) で、台帳のリストから
vehicle-registrationを選択します。 -
[Load sample data (サンプルデータのロード)] を選択します。
オペレーションが正常に終了すると、コンソールに「Sample data loaded (サンプルデータがロードされました)」というメッセージが表示されます。
このスクリプトは、すべてのステートメントを単一のトランザクションで実行します。トランザクションの一部が失敗すると、すべてのステートメントがロールバックされ、該当するエラーメッセージが表示されます。問題に対処した後、オペレーションを再試行できます。
注記
-
考えられる原因の 1 つとして、重複するテーブル複製を作成しようとすると、トランザクションが失敗することがあります。サンプルデータをロードするためのリクエストは、
VehicleRegistration、Vehicle、Person、DriversLicenseのいずれかのテーブル名が台帳に既に存在する場合、失敗します。代わりに、このサンプルデータを空の台帳にロードしてみてください。
-
このスクリプトは、パラメータ化された
INSERTステートメントを実行します。したがって、これらの PartiQL ステートメントは、リテラルデータではなくバインドパラメータを使用してジャーナルブロックに記録されます。たとえば、ジャーナルブロックに次のステートメントがあるとします。ここで、疑問符 (?) はドキュメントコンテンツの変数プレースホルダーです。INSERT INTO Vehicle ?
-
空の PrimaryOwner フィールドを含む VehicleRegistration と、空の PersonId フィールドを含む DriversLicense にドキュメントを挿入します。後で、Person テーブルからシステムによって割り当てられたドキュメント id をこれらのフィールドに入力します。
ヒント
ベストプラクティスとして、このドキュメント id メタデータフィールドを外部キーとして使用します。詳細については、「ドキュメントのメタデータのクエリの実行」を参照してください。
テーブル、インデックス、およびサンプルデータを作成するには
-
Amazon QLDB コンソール (https://console.aws.amazon.com/qldb
) を開きます。 -
ナビゲーションペイン内で [PartiQL エディタ] を選択します。
-
vehicle-registration台帳を選択します。 -
まず、4 つのテーブルを作成します。QLDB ではオープンのコンテンツをサポートしており、スキーマを強制しないため、属性やデータ型は指定しません。
クエリエディタウィンドウで、以下のステートメントを入力し、[Run (実行)] を選択します。このステートメントを実行するには、キーボードショートカット Ctrl+Enter (Windows の場合) または Cmd+Return (macOS の場合) を使用することもできます。キーボードショートカットの詳細については、「PartiQL エディタのキーボードショートカット」を参照してください。
CREATE TABLE VehicleRegistration以下の各項目について、このステップを繰り返します。
CREATE TABLE VehicleCREATE TABLE PersonCREATE TABLE DriversLicense -
次に、各テーブルのクエリパフォーマンスを最適化するインデックスを作成します。
重要
ドキュメントを効率的に検索するには、インデックスが必要です。インデックスがないと、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 (LicensePlateNumber)CREATE INDEX ON DriversLicense (PersonId) -
インデックスを作成したら、テーブルへのデータのロードを開始することができます。このステップでは、台帳が追跡している車両の所有者に関する個人情報を含む
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' } >> -
次に、各車両の所有者の運転免許証情報を含むドキュメントを
DriversLicenseテーブルに入力します。クエリエディタウィンドウで、以下のステートメントを入力し、[Run (実行)] を選択します。
INSERT INTO DriversLicense << { 'LicensePlateNumber' : 'LEWISR261LL', 'LicenseType' : 'Learner', 'ValidFromDate' : `2016-12-20T`, 'ValidToDate' : `2020-11-15T`, 'PersonId' : '' }, { 'LicensePlateNumber' : 'LOGANB486CG', 'LicenseType' : 'Probationary', 'ValidFromDate' : `2016-04-06T`, 'ValidToDate' : `2020-11-15T`, 'PersonId' : '' }, { 'LicensePlateNumber' : '744 849 301', 'LicenseType' : 'Full', 'ValidFromDate' : `2017-12-06T`, 'ValidToDate' : `2022-10-15T`, 'PersonId' : '' }, { 'LicensePlateNumber' : 'P626-168-229-765', 'LicenseType' : 'Learner', 'ValidFromDate' : `2017-08-16T`, 'ValidToDate' : `2021-11-15T`, 'PersonId' : '' }, { 'LicensePlateNumber' : 'S152-780-97-415-0', 'LicenseType' : 'Probationary', 'ValidFromDate' : `2015-08-15T`, 'ValidToDate' : `2021-08-21T`, 'PersonId' : '' } >> -
次に、車両登録ドキュメントを
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' : [] } } >> -
最後に、台帳に登録されている車両について記述したドキュメントを
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: 台帳のテーブルのクエリを実行する に進みます。