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

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

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

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

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

が割り当てたすべての QLDB は、Base62 でエンコードされた文字列で表される共通の一意の識別子 (UUID) です。IDs詳細については、「の一意の IDsAmazon QLDB」を参照してください。

実行済みビュー

コミット済みビューのクエリを実行して、このメタデータにアクセスできます。このビューでは、システムで定義したテーブルからドキュメントを返します。このテーブルはユーザーテーブルに直接対応するものです。これには、自分のデータも 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—ストランド内でブロックの場所を指定するインデックス番号。

    注記

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

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

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

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

    • version— ドキュメントリビジョンごとに増えていく 0 から始まる整数。

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

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

コミット済みビューとユーザービューの結合

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

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

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