本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
重要
支援終止通知:現有客戶將可以使用 Amazon QLDB,直到 07/31/2025 的支援結束為止。如需詳細資訊,請參閱將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL
Amazon QLDB 使用將 Amazon Ion
在 Amazon QLDB 中使用 PartiQL 查詢 Ion
如需在 QLDB 中使用 PartiQL 查詢 Ion 資料的語法和語意,請參閱 Amazon QLDB PartiQL 參考使用 PartiQL 查詢 Ion中的 。
如需查詢和處理 QLDB 分類帳中 Ion 資料的程式碼範例,請參閱 Amazon Ion 程式碼範例和 使用 Amazon Ion。
什麼是 Amazon Ion?
Ion 是一種開放原始碼、輸入豐富、自我描述的階層式資料序列化格式,最初是在 Amazon 內部開發。它以抽象資料模型為基礎,可讓您同時存放結構化和非結構化資料。這是 JSON 的超集,這表示任何有效的 JSON 文件也是有效的 Ion 文件。本指南假設 JSON 的基礎工作知識。如果您尚未熟悉 JSON,請參閱介紹 JSON
您可以用人類可讀文字形式或二進位編碼形式,以互換方式標註 Ion 文件。如同 JSON,文字格式易於讀取和寫入,支援快速原型設計。二進位編碼更精簡且更有效率,可以保存、傳輸和剖析。Ion 處理器可以在兩種格式之間轉碼,以完全代表相同的一組資料結構,而不會遺失任何資料。此功能可讓應用程式最佳化處理不同使用案例資料的方式。
注意
Ion 資料模型嚴格以值為基礎,不支援參考。因此,資料模型可以代表可巢狀至任意深度的資料階層,但無法指向圖形。
離子規格
如需 Ion 核心資料類型的完整清單,其中包含完整說明和值格式詳細資訊,請參閱 Amazon GitHub 網站上的 Ion 規格文件
為了簡化應用程式開發,Amazon Ion 提供用戶端程式庫,可為您處理 Ion 資料。如需處理 Ion 資料的常見使用案例程式碼範例,請參閱 GitHub 上的 Amazon Ion 技術指南
JSON 相容
與 JSON 類似,您會編寫具有一組基本資料類型和一組遞迴定義容器類型的 Amazon Ion 文件。Ion 包含下列傳統 JSON 資料類型:
-
null
:一般、未輸入的 null (空白) 值。此外,如下節所述,Ion 支援每個基本類型的不同 null 類型。 -
bool
:布林值。 -
string
:Unicode 文字常值。 -
list
:排序的異質值集合。 -
struct
:未排序的名稱值對集合。如同 JSON,每個名稱struct
允許多個值,但通常不建議這樣做。
JSON 的延伸模組
數字類型
Amazon Ion 會嚴格將數字定義為下列其中一種number
類型,而不是不明確的 JSON 類型:
-
int
:任意大小的已簽署整數。 -
decimal
:十進位編碼的真實任意精確度數。 -
float
:二進位編碼浮點數 (64 位元 IEEE)。
剖析文件時,Ion 處理器會指派數字類型,如下所示:
-
int
:沒有指數或小數點的數字 (例如100200
)。 -
decimal
:具有小數點且不含指數的數字 (例如0.00001
、200.0
)。 -
float
:具有指數的數字,例如科學符號或 E 符號 (例如2e0
、)3.1e-4
。
新資料類型
Amazon Ion 新增下列資料類型:
-
timestamp
:任意精確度Date/time/timezone時刻。 -
symbol
:Unicode 符號原子 (例如識別符)。 -
blob
:使用者定義編碼的二進位資料。 -
clob
:使用者定義編碼的文字資料。 -
sexp
:具有應用程式定義語意的排序值集合。
Null 類型
除了 JSON 定義的一般 null 類型之外,Amazon Ion 還支援每個基本類型的不同 null 類型。這表示在維護嚴格的資料類型時缺少值。
null null.null // Identical to untyped null null.bool null.int null.float null.decimal null.timestamp null.string null.symbol null.blob null.clob null.struct null.list null.sexp
離子文字範例
// Here is a struct, which is similar to a JSON object. { // Field names don't always have to be quoted. name: "fido", // This is an integer. age: 7, // This is a timestamp with day precision. birthday: 2012-03-01T, // Here is a list, which is like a JSON array. toys: [ // These are symbol values, which are like strings, // but get encoded as integers in binary. ball, rope ], }