步驟 2:在分類帳中建立資料表、索引和範例資料 - Amazon Quantum Ledger 資料庫 (Amazon QLDB)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

步驟 2:在分類帳中建立資料表、索引和範例資料

重要

支援終止通知:現有客戶將可以使用 Amazon,QLDB直到 07/31/2025 的支援結束為止。如需詳細資訊,請參閱將 Amazon QLDB Ledger 遷移至 Amazon Aurora Postgre。SQL

當您的 Amazon QLDB 分類帳處於作用中狀態時,您可以開始為有關車輛、其擁有者及其註冊資訊的資料建立資料表。建立資料表和索引之後,您可以使用資料載入資料表和索引。

在此步驟中,您可以在vehicle-registration分類帳中建立四個資料表:

  • VehicleRegistration

  • Vehicle

  • Person

  • DriversLicense

您也可以建立下列索引。

資料表名稱 欄位
VehicleRegistration VIN
VehicleRegistration LicensePlateNumber
Vehicle VIN
Person GovId
DriversLicense LicensePlateNumber
DriversLicense PersonId

您可以使用QLDB主控台自動建立具有索引的這些資料表,並使用範例資料載入這些資料表。或者,您可以使用主控台上的 PartiQL 編輯器手動執行每個 PartiQL 陳述式 step-by-step。

建立資料表、索引和範例資料
  1. https://console.aws.amazon.com/qldb 開啟 Amazon QLDB主控台。

  2. 在導覽窗格中,選擇開始使用

  3. 範例應用程式資料卡的自動選項下,vehicle-registration選擇分類帳清單中的 。

  4. 選擇載入範例資料

    如果操作成功完成,主控台會顯示範例資料載入 的訊息。

    此指令碼會在單一交易中執行所有陳述式。如果交易的任何部分失敗,每個陳述式都會復原,並顯示適當的錯誤訊息。您可以在解決任何問題之後重試操作。

    注意
    • 交易失敗的一個可能原因,是嘗試建立重複的資料表。如果您的分類帳中已存在下列任何資料表名稱Vehicle,則載入範例資料的請求將會失敗:VehicleRegistrationPerson、 和 DriversLicense

      相反地,請嘗試將此範例資料載入空白分類帳。

    • 此指令碼會執行參數化INSERT陳述式。因此,這些 PartiQL 陳述式會以繫結參數記錄在您的日誌區塊中,而不是文字資料。例如,您可能會在日誌區塊中看到下列陳述式,其中問號 (?) 是文件內容的變數預留位置。

      INSERT INTO Vehicle ?

您可以將文件插入VehicleRegistration具有空白PrimaryOwner欄位的文件,以及DriversLicense插入具有空白PersonId欄位的文件。稍後,您會將這些欄位填入idPerson資料表中系統指派的文件。

提示

最佳實務是使用此文件id中繼資料欄位作為外部金鑰。如需詳細資訊,請參閱查詢文件元資料

建立資料表、索引和範例資料
  1. https://console.aws.amazon.com/qldb 開啟 Amazon QLDB主控台。

  2. 在導覽窗格中,選擇 PartiQL 編輯器

  3. 選擇vehicle-registration分類帳。

  4. 首先建立四個資料表。QLDB 支援開啟的內容,不會強制執行結構描述,因此您不會指定屬性或資料類型。

    在查詢編輯器視窗中,輸入下列陳述式,然後選擇執行 。若要執行陳述式,您也可以使用 Windows 的鍵盤快速鍵 CtrlEnter,或 macOS 的鍵盤快速鍵 CmdReturn。 macOS 如需更多鍵盤快速鍵,請參閱 編 PartiQL 鍵盤快捷鍵

    CREATE TABLE VehicleRegistration

    針對下列每個項目重複此步驟。

    CREATE TABLE Vehicle
    CREATE TABLE Person
    CREATE TABLE DriversLicense
  5. 接下來,建立索引來最佳化每個資料表的查詢效能。

    重要

    QLDB 需要索引才能有效率地查詢文件。如果沒有索引, 讀取文件時, QLDB 需要執行完整資料表掃描。這可能會導致大型資料表的效能問題,包括並行衝突和交易逾時。

    若要避免資料表掃描,您必須在索引欄位或文件 ID 上使用等式運算子 (=IN) 執行具有WHERE述詞子句的陳述式。如需詳細資訊,請參閱最佳化查詢效能

    在查詢編輯器視窗中,輸入下列陳述式,然後選擇執行

    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)
  6. 建立索引後,您可以開始將資料載入資料表。在此步驟中,將包含分類帳追蹤之車輛擁有者個人資訊的文件插入Person資料表。

    在查詢編輯器視窗中,輸入下列陳述式,然後選擇執行

    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資料表。

    在查詢編輯器視窗中,輸入下列陳述式,然後選擇執行

    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' : '' } >>
  8. 現在,將車輛註冊文件填入VehicleRegistration資料表。這些文件包含巢狀Owners結構,可存放主要和次要擁有者。

    在查詢編輯器視窗中,輸入下列陳述式,然後選擇執行

    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資料表。

    在查詢編輯器視窗中,輸入下列陳述式,然後選擇執行

    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:查詢分類帳中的資料表」。