亚马逊中的 Amazon Ion 数据格式参考 QLDB - 亚马逊 Quantum Ledger 数据库(亚马逊QLDB)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

亚马逊中的 Amazon Ion 数据格式参考 QLDB

重要

终止支持通知:现有客户可以在2025年7月31日终止支持QLDB之前使用亚马逊。有关更多详细信息,请参阅将亚马逊QLDB账本迁移到亚马逊 Aurora Postgr SQL e。

亚马逊QLDB使用一种数据表示法模型,该模型将 Amazon Ion 与一部分 Parti QL 类型的子集统一起来。本节提供了 Ion 文档数据格式的参考概述,其与 PartiQL 的集成是分开的。

在亚马逊中使用 partiQL 查询 Ion QLDB

有关在 PartiQL QLDB 中查询 Ion 数据的语法和语义,使用 PartiQL 查询 Ion请参阅 Amazon PartiQL 参考文献QLDB。

有关在QLDB账本中查询和处理 Ion 数据的代码示例,请参阅Amazon Ion 代码示例使用 Amazon Ion

什么是 Amazon Ion?

Ion 是一种开源、类型丰富、自我描述的分层数据序列化格式,最初由 Amazon 内部开发。它基于抽象数据模型,允许您存储结构化和非结构化数据。它是的超集JSON,这意味着任何有效的JSON文档也是有效的 Ion 文档。本指南假设具备以下基本工作知识JSON。如果您还不熟悉JSON,请参阅简介了解JSON更多信息。

你可以用人类可读的文本形式或二进制编码的形式交替标注 Ion 文档。比如JSON,文本表单易于阅读和编写,支持快速原型制作。二进制编码在保存、传输和解析方面更紧凑和高效。离子处理器可在两种格式之间进行转码,以表示完全相同的数据结构集,而不会丢失任何数据。此功能允许应用程序针对不同的用例优化其数据处理方式。

注意

Ion 数据模型严格基于值,不支持引用。因此,数据模型可以表示可以嵌套至任意深度的数据层次结构,但不能表示有向图。

Ion 规格

有关 Ion core 数据类型的完整列表以及完整描述和值格式化细节,请参阅 Amazon GitHub 网站上的 Ion 规范文档

为了简化应用程序开发,Amazon Ion 提供了可处理 Ion 数据的客户端库。有关处理 Ion 数据的常见用例的代码示例,请参阅上 GitHub的 Amazon Ion Cookbook

JSON兼容

与此类似JSON,您可以使用一组原始数据类型和一组递归定义的容器类型来编写 Amazon Ion 文档。Ion 包括以下传统JSON数据类型:

  • null: 一个通用的非类型空值(空)。此外,如下一节所述,Ion 支持每种基元类型使用不同的空类型。

  • bool: 布尔值。

  • string:Unicode 文本文字。

  • list:有序的异构值集合。

  • struct:名称/值对的无序集合。比如JSON,struct允许每个名字有多个值,但通常不鼓励这样做。

来自的扩展 JSON

号码类型

Amazon Ion 不是模棱两可的JSONnumber类型,而是将数字严格定义为以下类型之一:

  • int:任意大小的有符号整数。

  • decimal:任意精度的十进制编码实数。

  • float: 二进制编码的浮点数(64 位)。IEEE

解析文档时,Ion 处理器会按以下方式分配数字类型:

  • int:带有小数点但没有指数的数字(例如,100200)。

  • decimal: 没有指数或小数点的数字(例如,0.00001200.0)。

  • float: 带指数的数字,例如科学记数法或 E 记数法(例如2e03.1e-4)。

新数据类型

Amazon Ion 添加了以下数据类型:

  • timestamp:任意精度的日期/时间/时区时刻。

  • symbol:Unicode 符号原子(例如标识符)。

  • blob:用户定义编码的二进制数据。

  • clob:用户定义编码的文本数据。

  • sexp:具有应用程序定义语义的有序值集合。

Null 类型

除了定义的通用空类型外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

Ion 文本示例

// 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 ], }

API参考文献