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