使用索引建立資料表並插入文件 - Amazon Quantum Ledger Database (Amazon QLDB)

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

使用索引建立資料表並插入文件

重要

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

建立 Amazon QLDB 分類帳後,您的第一個步驟是建立具有基本CREATE TABLE陳述式的資料表。資料表包含 QLDB 文件,這是 Amazon Ion struct 格式的資料集。

建立資料表和索引

資料表具有簡單、區分大小寫的名稱,沒有命名空間。QLDB 支援開啟的內容,不會強制執行結構描述,因此您在建立資料表時不會定義屬性或資料類型。

CREATE TABLE VehicleRegistration
CREATE TABLE Vehicle

CREATE TABLE 陳述式會傳回新資料表的系統指派 ID。QLDB 中所有系統指派IDs 都是通用的唯一識別符 (UUID),每個識別符都以 Base62-encoded字串表示。

注意

或者,您可以在建立資料表時定義資料表資源的標籤。如要瞭解如何作業,請參閱建立時標記資料表

您也可以在資料表上建立索引,以最佳化查詢效能。

CREATE INDEX ON VehicleRegistration (VIN)
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
CREATE INDEX ON Vehicle (VIN)
重要

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

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

建立索引時請注意下列限制:

  • 索引只能在單一最上層欄位上建立。不支援複合、巢狀、唯一和以函數為基礎的索引。

  • 您可以在任何 Ion 資料類型上建立索引,包括 liststruct。不過,無論 Ion 類型為何,您都只能依整個 Ion 值的相等性執行索引查詢。例如,使用 list 類型做為索引時,您無法透過清單中的一個項目進行索引查詢。

  • 只有在您使用等式述詞時,查詢效能才會獲得改善;例如, WHERE indexedField = 123WHERE indexedField IN (456, 789)

    QLDB 不會遵守查詢述詞中的不等式。因此,不會實作範圍篩選掃描。

  • 索引欄位的名稱區分大小寫,最多可有 128 個字元。

  • QLDB 中的索引建立是非同步的。在非空白資料表上完成建立索引所需的時間,會因資料表大小而有所不同。如需詳細資訊,請參閱管理索引

插入文件

然後,您可以將文件插入資料表。QLDB 文件會以 Amazon Ion 格式儲存。下列 PartiQL INSERT陳述式包含 中使用的車輛註冊範例資料子集Amazon QLDB 主控台入門

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' : '294jJ3YUoH1IEEm8GSabOs' }, 'SecondaryOwners' : [ { 'PersonId' : '5Ufgdlnj06gF5CWcOIu64s' } ] } }, { 'VIN' : 'KM8SRDHF6EU074761', 'LicensePlateNumber' : 'CA762X', 'State' : 'WA', 'City' : 'Kent', 'PendingPenaltyTicketAmount' : 130.75, 'ValidFromDate' : `2017-09-14T`, 'ValidToDate' : `2020-06-25T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId': 'IN7MvYtUjkp1GMZu0F6CG9' }, 'SecondaryOwners' : [] } } >>
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' } >>
PartiQL 語法和語義
  • 欄位名稱以單引號括住 ('...')。

  • 字串值也以單引號括住 ('...')。

  • 時間戳記以反引號括住 (`...`)。後端可用於表示任何 Ion 常值。

  • 整數和小數是不需要表示的常值。

如需 PartiQL 語法和語義的詳細資訊,請參閱 在 Amazon QLDB 中使用 PartiQL 查詢離子

INSERT 陳述式會建立版本編號為零的文件初始修訂。為了唯一識別每個文件,QLDB 會指派文件 ID 做為中繼資料的一部分。插入陳述式會傳回每個插入文件的 ID。

重要

由於 QLDB 不會強制執行結構描述,因此您可以將相同的文件多次插入資料表。每個插入陳述式都會將個別的文件項目遞交至日誌,QLDB 會為每個文件指派唯一的 ID。

若要了解如何查詢您插入資料表的文件,請繼續 查詢您的資料