Amazon Ion データ形式リファレンス - Amazon Quantum Ledger Database (Amazon QLDB)

Amazon Ion データ形式リファレンス

Amazon QLDB は、Amazon IonPartiQL タイプのサブセットと統合するデータ表記モデルを使用します。このセクションでは、Ion ドキュメントデータ形式のリファレンス概要を、PartiQL との統合とは別に紹介します。

Amazon QLDB での PartiQL による Ion のクエリ

QLDB で PartiQL を使用して Ion データをクエリする構文とセマンティクスについては、Amazon QLDB PartiQL リファレンスの「PartiQL での Ion のクエリ」を参照してください。

QLDB 台帳の Ion データをクエリおよび処理するコード例については、「Ion コード例」を参照してください。

Amazon Ion とは?

Ion は、Amazon 内部で独自に開発された、オープンソースでリッチタイプの自己記述型階層データシリアル化フォーマットです。Ion は、構造化データと非構造化データの両方を一緒に保存する抽象データモデルに基づいています。Ion は JSON のスーパーセットであるため、有効な JSON ドキュメントは有効な Ion ドキュメントでもあります。このガイドの内容は、JSON を使って基本的な作業ができる程度の知識があることを前提としています。JSON についてまだよく理解できていない方は、「JSON の紹介」を参照してください。

Ion ドキュメントは、人間が読めるテキスト形式またはバイナリエンコード形式で互換的に表記できます。JSON と同様に、テキスト形式は読み書きが容易で、ラピッドプロトタイピングをサポートしています。バイナリエンコード形式はよりコンパクトで、効率よく保持、送信および解析できます。Ion プロセッサは、データ喪失なく同じデータ構造セットを正確に再現できるように、両形式間でコードを変換できます。このためアプリケーションは、さまざまなユースケースに応じてデータを処理方法を最適化できます。

注記

Ion データモデルは厳格な値ベースであり、リファレンスはサポートしていません。このため 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 からの拡張機能

数値型

曖昧な JSON number 型に代え、Amazon Ion では、数値を次のいずれかの型として厳格に定義しています。

  • int: 任意の大きさの符号付き整数。

  • decimal: 任意精度の 10 進数エンコード実数。

  • 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 で定義されている汎用 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

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 リファレンス