ドキュメントのメタデータのクエリの実行 - Amazon Quantum Ledger Database (Amazon QLDB)

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

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

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

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

QLDB が割り当てた ID はすべて汎用一意 ID (UUID、Universally Unique Identifier) であり、それぞれ Base62 エンコード文字列で表されます。(詳細については、「Amazon QLDB で割り当てられる一意の ID」を参照してください)

コミット済みビュー

ドキュメントのメタデータには、コミット済みビュー。このビューでは、システムで定義したテーブルからドキュメントを返します。このテーブルはユーザーテーブルに直接対応するものです。これには、自分のデータも 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 フィールドを対象とし、暗号検証に使用できます。

  • 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 のクエリの実行」に進みます。