本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 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。
建立資料表、索引和範例資料
-
在 https://console.aws.amazon.com/qldb
開啟 Amazon QLDB主控台。 -
在導覽窗格中,選擇開始使用 。
-
在範例應用程式資料卡的自動選項下,
vehicle-registration
選擇分類帳清單中的 。 -
選擇載入範例資料 。
如果操作成功完成,主控台會顯示範例資料載入 的訊息。
此指令碼會在單一交易中執行所有陳述式。如果交易的任何部分失敗,每個陳述式都會復原,並顯示適當的錯誤訊息。您可以在解決任何問題之後重試操作。
注意
-
交易失敗的一個可能原因,是嘗試建立重複的資料表。如果您的分類帳中已存在下列任何資料表名稱
Vehicle
,則載入範例資料的請求將會失敗:VehicleRegistration
、Person
、 和DriversLicense
。相反地,請嘗試將此範例資料載入空白分類帳。
-
此指令碼會執行參數化
INSERT
陳述式。因此,這些 PartiQL 陳述式會以繫結參數記錄在您的日誌區塊中,而不是文字資料。例如,您可能會在日誌區塊中看到下列陳述式,其中問號 (?
) 是文件內容的變數預留位置。INSERT INTO Vehicle ?
-
您可以將文件插入VehicleRegistration
具有空白PrimaryOwner
欄位的文件,以及DriversLicense
插入具有空白PersonId
欄位的文件。稍後,您會將這些欄位填入id
Person
資料表中系統指派的文件。
提示
最佳實務是使用此文件id
中繼資料欄位作為外部金鑰。如需詳細資訊,請參閱查詢文件元資料。
建立資料表、索引和範例資料
-
在 https://console.aws.amazon.com/qldb
開啟 Amazon QLDB主控台。 -
在導覽窗格中,選擇 PartiQL 編輯器 。
-
選擇
vehicle-registration
分類帳。 -
首先建立四個資料表。QLDB 支援開啟的內容,不會強制執行結構描述,因此您不會指定屬性或資料類型。
在查詢編輯器視窗中,輸入下列陳述式,然後選擇執行 。若要執行陳述式,您也可以使用 Windows 的鍵盤快速鍵 Ctrl+Enter,或 macOS 的鍵盤快速鍵 Cmd+Return。 macOS 如需更多鍵盤快速鍵,請參閱 編 PartiQL 鍵盤快捷鍵。
CREATE TABLE VehicleRegistration
針對下列每個項目重複此步驟。
CREATE TABLE Vehicle
CREATE TABLE Person
CREATE TABLE DriversLicense
-
接下來,建立索引來最佳化每個資料表的查詢效能。
重要
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)
-
建立索引後,您可以開始將資料載入資料表。在此步驟中,將包含分類帳追蹤之車輛擁有者個人資訊的文件插入
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' } >>
-
然後,將包含每個車主駕照資訊的文件填入
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' : '' } >>
-
現在,將車輛註冊文件填入
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' : [] } } >>
-
最後,將描述在分類帳中註冊之車輛的文件填入
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:查詢分類帳中的資料表」。