ドキュメントのメタデータのクエリの実行 - Amazon Quantum 台帳データベース (Amazon QLDB)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ドキュメントのメタデータのクエリの実行

重要

サポート終了通知: 既存のお客様は、07/31/2025 のサポート終了QLDBまで Amazon を使用できます。詳細については、「Amazon Ledger QLDB を Amazon Aurora Postgre に移行するSQL」を参照してください。

INSERT ステートメントで、バージョン番号が 0 というドキュメントの最初のリビジョンが作成されます。各ドキュメントを一意に識別するために、Amazon はメタデータの一部としてドキュメント ID をQLDB割り当てます。

は、ドキュメント ID とバージョン番号に加えて、各ドキュメントの他のシステム生成メタデータをテーブルにQLDB保存します。このメタデータには、トランザクション情報、ジャーナル属性、およびドキュメントのハッシュ値が含まれます。

システム割り当てはすべて、Base62-encoded文字列で表されるIDs汎用一意識別子 (UUID) です。詳細については、「Amazon IDsで一意 QLDB」を参照してください。

コミット済みビュー

コミット済みビューのクエリを実行して、ドキュメントのメタデータにアクセスできます。このビューでは、システムで定義したテーブルからドキュメントを返します。このテーブルはユーザーテーブルに直接対応するものです。これには、自分のデータもシステムによって生成されたメタデータも、最後にコミットされ削除されていないリビジョンで含まれます。このビューのクエリを実行するには、クエリ内のテーブル名にプレフィックス _ql_committed_ を追加します。(プレフィックス_ql_は、システムオブジェクトQLDB用に で予約されています。)

SELECT * FROM _ql_committed_VehicleRegistration AS r WHERE r.data.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')

このクエリの出力では、以前に インデックスを持つテーブルの作成とドキュメントの挿入 に挿入したデータを使用して、それぞれの削除されていないドキュメントの最新リビジョンのシステムコンテンツを表示します。システムドキュメントには、metadata フィールドのネストされたメタデータ、data フィールドのネストされたユーザーデータがあります。

{ blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:14 }, hash:{{wCsmM6qD4STxz0WYmE+47nZvWtcCz9D6zNtCiM5GoWg=}}, data:{ VIN: "1N4AL11D75C109151", LicensePlateNumber: "LEWISR261LL", State: "WA", City: "Seattle", PendingPenaltyTicketAmount: 90.25, ValidFromDate: 2017-08-21T, ValidToDate: 2020-05-11T, Owners: { PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" }, SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }] } }, metadata:{ id:"3Qv67yjXEwB9SjmvkuG6Cp", version:0, txTime:2019-06-05T20:53:321d-3Z, txId:"HgXAkLjAtV0HQ4lNYdzX60" } }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:14 }, hash:{{wPuwH60TtcCvg/23BFp+redRXuCALkbDihkEvCX22Jk=}}, data:{ VIN: "KM8SRDHF6EU074761", LicensePlateNumber: "CA762X", State: "WA", City: "Kent", PendingPenaltyTicketAmount: 130.75, ValidFromDate: 2017-09-14T, ValidToDate: 2020-06-25T, Owners: { PrimaryOwner: { PersonId: "IN7MvYtUjkp1GMZu0F6CG9" }, SecondaryOwners: [] } }, metadata:{ id:"JOzfB3lWqGU727mpPeWyxg", version:0, txTime:2019-06-05T20:53:321d-3Z, txId:"HgXAkLjAtV0HQ4lNYdzX60" } }
コミット済みビューフィールド
  • blockAddress: ドキュメントリビジョンがコミットされた台帳のジャーナルのブロックの場所。暗号検証に使用するアドレスには、以下の 2 つのフィールドがあります。

    • strandId - ブロックを含むジャーナルストランドの一意の ID。

    • sequenceNo: ストランド内でブロックの場所を指定するインデックス番号。

    注記

    この例にあるドキュメントにはどちらにも、sequenceNo が同じ blockAddress が含まれています。これらのドキュメントは、1 回のトランザクションで (この場合には、1 つのステートメントに) 挿入されたため、同じブロックにコミットされています。

  • hash – ドキュメントリビジョンを一意に表す SHA-256 Ion ハッシュ値。ハッシュは data フィールドと metadata フィールドを対象とし、暗号検証に使用できます。

  • data – ドキュメントのユーザーデータ属性。

    リビジョンを秘匿化すると、この data 構造は dataHash フィールドに置き換えられ、その値は削除された data 構造の Ion ハッシュになります。

  • metadata: ドキュメントのメタデータ属性。

    • id: ドキュメントのシステムによって割り当てられた一意の ID。

    • version – ドキュメントのバージョン番号。これは、ドキュメントリビジョンごとに増えていく、0 から始まる整数です。

    • txTime: ジャーナルにドキュメントリビジョンがコミットされたときのタイムスタンプ。

    • txId: ドキュメントリビジョンをコミットしたトランザクションの一意の ID。

コミットされたビューとユーザービューへの参加

コミットされたビュー内のテーブルをユーザービューのテーブルと結合するクエリを記述できます。例えば、あるテーブルのドキュメント id を別のテーブルのユーザー定義フィールドと結合することができます。

次のクエリは、PersonIdDriversLicensePerson という名前の 2 つのテーブルをドキュメント id のフィールドとそれぞれ結合します。後者にはコミット済みビューを使用します。

SELECT * FROM DriversLicense AS d INNER JOIN _ql_committed_Person AS p ON d.PersonId = p.metadata.id WHERE p.metadata.id = '1CWScY2qHYI9G88C2SjvtH'

デフォルトのユーザービューでドキュメント ID フィールドのクエリを実行する方法については、「BY 句を使用したドキュメント ID のクエリの実行」に進みます。