翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ステップ 2: 台帳にテーブル、インデックス、サンプルデータを作成する
重要
サポート終了通知: 既存のお客様は、07/31/2025 のサポート終了QLDBまで Amazon を使用できます。詳細については、「Amazon Ledger QLDB を Amazon Aurora Postgre に移行するSQL
Amazon QLDB台帳がアクティブになると、車両、その所有者、および登録情報に関するデータのテーブルの作成を開始できます。テーブルとインデックスを作成した後、これらにデータをロードできます。
このステップでは、vehicle-registration
台帳に 4 つのテーブルを作成します。
-
VehicleRegistration
-
Vehicle
-
Person
-
DriversLicense
以下のインデックスも作成します。
テーブル名 | フィールド |
---|---|
VehicleRegistration |
VIN |
VehicleRegistration |
LicensePlateNumber |
Vehicle |
VIN |
Person |
GovId |
DriversLicense |
LicensePlateNumber |
DriversLicense |
PersonId |
QLDB コンソールを使用して、インデックスを含むこれらのテーブルを自動的に作成し、サンプルデータでロードできます。または、コンソールの PartiQL エディタを使用して、各 PartiQLステートメント を手動で実行することもできます step-by-step。
テーブル、インデックス、およびサンプルデータを作成するには
-
https://console.aws.amazon.com/qldb
で Amazon 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
メタデータフィールドを外部キーとして使用します。詳細については、「ドキュメントのメタデータのクエリの実行」を参照してください。
テーブル、インデックス、およびサンプルデータを作成するには
-
https://console.aws.amazon.com/qldb
で Amazon QLDBコンソールを開きます。 -
ナビゲーションペイン内で [PartiQL エディタ] を選択します。
-
vehicle-registration
台帳を選択します。 -
まず、4 つのテーブルを作成します。QLDB はオープンコンテンツをサポートし、スキーマを適用しないため、属性やデータ型を指定しません。
クエリエディタウィンドウで、以下のステートメントを入力し、[Run (実行)] を選択します。このステートメントを実行するには、キーボードショートカット Ctrl+Enter (Windows の場合) または Cmd+Return (macOS の場合) を使用することもできます。キーボードショートカットの詳細については、「PartiQL エディタのキーボードショートカット」を参照してください。
CREATE TABLE VehicleRegistration
以下の各項目について、このステップを繰り返します。
CREATE TABLE Vehicle
CREATE TABLE Person
CREATE TABLE DriversLicense
-
次に、各テーブルのクエリパフォーマンスを最適化するインデックスを作成します。
重要
QLDB では、ドキュメントを効率的に検索するためにインデックスが必要です。インデックスがない場合、 はドキュメントを読み取るときに完全なテーブルスキャンを実行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: 台帳のテーブルのクエリを実行する に進みます。