使用索引建立表格並插入文件 - Amazon Quantum 賬本數據庫(AmazonQLDB)

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

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

重要

支援結束通知:現有客戶將能夠使用 Amazon,QLDB直到 2025 年 7 月 31 日終止支援為止。有關更多詳細信息,請參閱將 Amazon QLDB 分類帳遷移到 Amazon Aurora 郵政. SQL

創建 Amazon QLDB 分類帳後,您的第一步是使用基本CREATE TABLE語句創建一個表。資料表包含QLDB 文件,這些資料集是 Amazon Ion struct 格式的資料集。

建立資料表和索引

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

CREATE TABLE VehicleRegistration
CREATE TABLE Vehicle

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

注意

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

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

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 離子格式存儲。下列 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 和語義
  • 欄位名稱以單引號括住 ('...')。

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

  • 時間戳記包含在反引號 () `...` 中。反引號可用於表示任何離子文字。

  • 整數和小數是不需要被表示的文字值。

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

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

重要

由於QLDB不會強制執行結構定義,因此您可以多次將相同的文件插入資料表中。每個 insert 陳述式都會向分錄提交一個單獨的文件項目,並為每個文件QLDB指派唯一的 ID。

若要瞭解如何查詢已插入表格的文件,請繼續執行查詢您的資料