本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon QLDB 文档
Amazon QLDB 将数据记录存储为文档,这些文档只是插入到表中的Amazon Ion struct
对象。有关 Ion 规范,请访问 Amazon Ion GitHub
Ion 文档结构
与 JSON 一样的是,QLDB 文档由以下结构中的名称/值对组成。
{
name1: value1,
name2: value2,
name3: value3,
...
nameN: valueN
}
名称为符号标记,其值不受限制。每个名称/值对都称为一个字段。字段的值可以是任何 Ion数据类型,包括以下容器类型:嵌套结构、列表和结构列表。
与 JSON 一样的是,struct
用大括号 ({...}
) 表示,list
用方括号 ([...]
) 表示。以下示例是Amazon QLDB 控制台入门中示例数据的文档,其中包含各种类型的值。
{
VIN: "1N4AL11D75C109151",
LicensePlateNumber: "LEWISR261LL",
State: "WA",
City: "Seattle",
PendingPenaltyTicketAmount: 90.25,
ValidFrom: 2017-08-21T,
ValidTo: 2020-05-11T,
Owners: {
PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" },
SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }]
}
}
重要
在 Ion 中,双引号表示字符串值,未加引号符号表示字段名。但在 PartiQL,单引号表示字符串和字段名。
这种语法差异允许 PartiQL 查询语言保持 SQL 兼容性,使 Amazon Ion 数据格式保持 JSON 兼容性。有关 QLDB 中 PartiQL 的语法和语义详细信息,请参阅使用 PartiQL 查询 Ion。
PartiQL-ion 类型映射
在 QLDB,PartiQL 扩展了 SQL 的类型系统,以覆盖 Ion 数据模型。此映射描述如下:
-
SQL 标量类型包含在 Ion 对应物之中。例如:
-
CHAR
和VARCHAR
是映射到 Ionstring
类型的 Unicode 序列。 -
NUMBER
映射至 Iondecimal
类型。
-
-
Ion 的
struct
类型等同于 SQL 元组,传统上表示表行。-
但是,在内容开放且没有架构的情况下,不支持依赖 SQL 元组有序性质的查询 (例如
SELECT *
的输出顺序)。
-
-
除
NULL
之外,PartiQL 还有一个MISSING
类型。这是一种专业化NULL
,表明缺少字段。此类型为必要项,因为 Ionstruct
字段可能很稀少。
文档 ID
QLDB 会为您插入到表格中的每个文档分配一个文档 ID。所有系统分配的 ID 都是通用唯一标识符 (UUID),每个标识符都以 Base62 编码的字符串表示 (例如3Qv67yjXEwB9SjmvkuG6Cp
)。有关更多信息,请参阅Amazon QLDB 中的唯一编号。
每个文档修订版都由文档 ID 和从零开始的版本号组合作为唯一标识。
文档 ID 和版本字段都包含在文档元数据中,您可以在提交视图(系统定义的表格视图)中对其进行查询。有关 QLDB 中的这些视图的更多信息,请参阅核心概念。了解有关元数据的更多信息,请参阅 查询文档元数据。