本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Amazon 離子數據格式參考 QLDB
重要
支援結束通知:現有客戶將能夠使用 Amazon,QLDB直到 2025 年 7 月 31 日終止支援為止。有關更多詳細信息,請參閱將 Amazon QLDB 分類帳遷移到 Amazon Aurora 郵政. SQL
Amazon QLDB 使用數據表示法模型,將 Amazon 離
在 Amazon 中使用 PartiQL 查詢離子 QLDB
如需使用 PartiQL 查詢離子資料的語法和語意QLDB,請參閱 Amazon QLDB PartiQL 參考資料使用 PartiQL 查詢離子中的。
如需查詢和處理QLDB分類帳中 Ion 資料的程式碼範例,請參閱Amazon 離子代碼示例和使用 Amazon 離子。
什麼是 Amazon 離子?
Ion 是一種開源的,豐富的類型,自我描述的分層數據序列化格式,最初是在 Amazon 內部開發的。它基於抽象數據模型,可讓您同時存儲結構化和非結構化數據。這是一個超集合JSON,這意味著任何有效的JSON文檔也是一個有效的離子文檔。本指南假設具備的基準工作知識JSON。如果您還不熟悉JSON,請參閱簡介
您可以以人類可讀的文本形式或二進制編碼形式互換表示 Ion 文檔。就像JSON,文本形式易於閱讀和寫入,支持快速原型。二進位編碼對於持續、傳輸和剖析而言更加緊湊且有效率。離子處理器可以在兩種格式之間進行轉碼,以表示完全相同的一組數據結構,而不會丟失任何數據。此功能可讓應用程式針對不同使用案例最佳化處理資料的方式。
注意
Ion 數據模型是嚴格基於價值的,不支持引用。因此,數據模型可以表示可以嵌套到任意深度,但不是定向圖的數據層次結構。
離子規格
有關 Ion 核心數據類型的完整列表,其中包含完整描述和值格式詳細信息,請參閱 Amazon GitHub 網站上的 Ion 規範文檔
為了簡化應用程式開發,Amazon Ion 提供可為您處理 Ion 資料的用戶端程式庫。如需處理 Ion 資料的常見使用案例的程式碼範例,請參閱上的 Amazon Ion 食譜
JSON兼容
類似於JSON,您可以使用一組原始資料類型和一組遞迴定義的容器類型來撰寫 Amazon Ion 文件。Ion 包括以下傳統JSON數據類型:
-
null
:一個通用的,不具類型的空(空)值。此外,如以下部分所述,Ion 支持每個基本類型的不同 null 類型。 -
bool
:布林值。 -
string
: 文字常值。 -
list
:值的排序異構集合。 -
struct
:名稱-值對的無序集合。就像JSON,struct
允許每個名稱多個值,但這通常不鼓勵。
來自的擴充 JSON
數字類型
Amazon Ion 不是模糊的類JSONnumber
型,而是嚴格將數字定義為以下類型之一:
-
int
:任意大小的有符號整數。 -
decimal
: 任意精度的十進制編碼實數。 -
float
: 二進位編碼的浮點數 (64 位元IEEE)。
解析文件時,Ion 處理器會依照下列方式指定編號類型:
-
int
: 沒有指數或小數點的數字 (例如,100200
)。 -
decimal
: 具有小數點且沒有指數的數字 (例如,0.00001
,200.0
)。 -
float
:具有指數的數字,例如科學記數法或 E 表示法(例如,2e0
,3.1e-4
)。
新的資料類型
Amazon 離子添加了以下數據類型:
-
timestamp
:任意精度的日期/時間/時區時刻。 -
symbol
:Unicode 符號原子(如標識符)。 -
blob
: 使用者定義編碼的二進位資料。 -
clob
: 使用者定義編碼的文字資料。 -
sexp
:具有應用程序定義語義的值的有序集合。
空類型
除了由定義的泛型空類型之外JSON,Amazon Ion 還支持每個基本類型的不同空類型。這表示缺乏價值,同時保持嚴格的數據類型。
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 ], }