Amazon QLDB の重要な概念と用語 - Amazon Quantum Ledger Database (Amazon QLDB)

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

Amazon QLDB の重要な概念と用語

このセクションでは、台帳の構造や台帳によるデータの管理方法など、Amazon QLDB の重要な概念と用語の概要について説明します。台帳データベースの QLDB は、主要なコンセプトに関して、他のドキュメント指向のデータベースとは異なります。

QLDB データオブジェクトモデル

Amazon QLDB の基本データオブジェクトモデルは次のとおりです。

  1. 台帳

    最初のステップは、台帳を作成することです。これは QLDB のプライマリ AWS リソースタイプです。台帳の作成方法については、「コンソールの開始方法」の「ステップ 1: 新しい台帳を作成する」、または「Amazon QLDB 台帳の基本的なオペレーション」を参照してください。

    台帳の ALLOW_ALLSTANDARD のどちらのアクセス許可モードでも、この台帳リソースで API オペレーションを実行するアクセス許可を付与する AWS Identity and Access Management (IAM) ポリシーを作成します。

    台帳 ARN 形式:

    arn:aws:qldb:${region}:${account-id}:ledger/${ledger-name}
  2. ジャーナルとテーブル

    QLDB 台帳でデータの書き込みを開始するには、まずテーブルを 基本 CREATE TABLE ステートメントで作成します。台帳データは、台帳のジャーナルにコミットされたドキュメントのリビジョンで構成されます。ユーザー定義テーブルのコンテキストで、ドキュメントリビジョンを台帳にコミットします。QLDB のテーブルは、ジャーナルからのドキュメントリビジョンのコレクションのマテリアライズドビューです。

    STANDARD アクセス許可モードの台帳では、このテーブルリソースで PartiQL ステートメントを実行するために、アクセス許可を付与する IAM ポリシーを作成する必要があります。テーブルリソースに対するアクセス許可を使用すると、テーブルの現在の状態にアクセスするステートメントを実行できます。組み込みの history() 関数を使用してテーブルのリビジョン履歴のクエリを実行することもできます。

    テーブル ARN 形式:

    arn:aws:qldb:${region}:${account-id}:ledger/${ledger-name}/table/${table-id}

    台帳およびその関連リソースに対するアクセス許可の付与の詳細については、「Amazon QLDB で IAM が機能する仕組み」を参照してください。

  3. ドキュメント

    テーブルは QLDB ドキュメント のリビジョンで構成されます。これらは、Amazon Ion struct 形式のデータセットです。ドキュメントリビジョンは、一意のドキュメント ID によって識別される一連のドキュメントの 1 つのバージョンを表します。

    QLDB は、コミットしたドキュメントの完全な変更履歴を保存します。テーブルではドキュメントの現在の状態のクエリを実行できますが、history() 関数を使用するとテーブルのドキュメントのリビジョン履歴全体についてクエリを実行できます。リビジョンのクエリと書き込みの詳細については、「データと履歴の使用」を参照してください。

  4. システムカタログ

    各台帳では、システム定義のカタログリソースも提供され、このリソースでクエリを実行して台帳内のすべてのテーブルとインデックスを一覧表示できます。STANDARD アクセス許可モードの台帳では、次の操作を実行するために、このカタログリソースに対する qldb:PartiQLSelect アクセス許可が必要です。

    • SELECT ステートメントをシステムカタログテーブル schema.user_tables で実行します。

    • テーブルおよびインデックス情報を QLDB コンソールの台帳詳細ページに表示します。

    • テーブルおよびインデックスのリストを QLDB コンソールの PartiQL エディタに表示します。

    カタログ ARN 形式:

    arn:aws:qldb:${region}:${account-id}:ledger/${ledger-name}/information_schema/user_tables

ジャーナルファーストトランザクション

アプリケーションが QLDB 台帳のデータを読み書きするときは、データベーストランザクション内で行われます。すべてのトランザクションは、Amazon QLDB でのクォータと制限 で定義されている制限の対象となります。トランザクション内で、QLDB は次のステップを実行します。

  1. 台帳からデータの現在の状態を読み取ります。

  2. トランザクションで提供されるステートメントを実行して、完全な直列化可能分離を実現するために、オプティミスティック同時実行制御 (OCC) を使用して競合がないかチェックします。

  3. OCC 競合が見つからない場合は、次のようにトランザクション結果を返します。

    • 読み込みの場合は、結果セットを返し、追加専用の方法でジャーナルに SELECT ステートメントをコミットします。

    • 書き込みの場合は、更新、削除、または新しく挿入されたデータを追加専用の方法でジャーナルにコミットします。

ジャーナルは、データに行ったすべてのイミュータブルな変更履歴全体を意味します。QLDB は、トランザクション内のジャーナルに 1 つの連鎖ブロックを書き込みます。各ブロックには、挿入、アップデート、削除するドキュメントリビジョンを表すエントリオブジェクトと、それらをコミットした PartiQL ステートメントが含まれます。

以下の図は、このジャーナルの構造を示したものです。


                1 つのストランドを構成する一連の連鎖ブロックと、各ブロックのシーケンス番号およびブロックハッシュを示した Amazon QLDB ジャーナル構造図。

この図は、トランザクションがドキュメントのリビジョンのエントリを含むブロックとしてジャーナルにコミットされていることを示しています。各ブロックはハッシュされ、検証のために後続のブロックに連鎖されます。各ブロックには、ストランド内のアドレスを指定するシーケンス番号があります。

注記

Amazon QLDB で、ストランドは台帳のジャーナルの仕切りです。QLDB は現在、単一ストランドのジャーナルのみをサポートしています。

ブロック内のデータコンテンツについては、「Amazon QLDB のジャーナルコンテンツ」を参照してください。

データのクエリの実行

QLDB は、高性能なオンライントランザクション処理 (OLTP) ワークロードのニーズに対応することを目的としています。台帳は、ジャーナルにコミットされたトランザクション情報に基づいて、データのクエリ可能なテーブルビューを提供します。QLDB のテーブルビューは、テーブル内のデータのサブセットです。ビューにはリアルタイムのものが反映されますので、常にクエリを実行するアプリケーションで使用できます。

PartiQL SELECT ステートメントを使用して、以下のシステム定義ビューにクエリを実行できます。

  • ユーザー - テーブルに書き込んだデータのみの最新のアクティブなリビジョン (つまり、ユーザーデータの現在の状態)。これが QLDB のデフォルトビューです。

  • コミット済み - ユーザーデータと、システムによって生成されたメタデータの両方の最新のアクティブなリビジョン。これは完全システム定義テーブルで、ユーザーテーブルに直接対応しています。

これらのクエリ可能なビューに加えて、組み込みの 履歴関数 を使用してデータのリビジョン履歴を照会できます。履歴関数は、コミット済みビューと同じスキーマにあるユーザーデータおよびその関連メタデータの両方を返します。

データストレージ

QLDB には、次の 2 種類のデータストレージがあります。

  • ジャーナルストレージ - 台帳のジャーナルで使用されるディスク容量。ジャーナルには、データへのすべての変更に関する完全、不変、検証可能な履歴が含まれています。

  • インデックス付きストレージ - 台帳のテーブル、インデックス、およびインデックス付き履歴で使用されるディスク容量。インデックス付きストレージは、高パフォーマンスなクエリ用に最適化された台帳データで構成されています。

データがジャーナルにコミットされると、定義したテーブルにマテリアライズされます。これらのテーブルは、より高速で効率的なクエリを可能にするため最適化されています。アプリケーションがトランザクションデータ API を使用してデータを読み取ると、インデックス付きストレージに格納されているテーブルとインデックスにアクセスします。

QLDB API モデル

QLDB は、アプリケーションコードで操作できる 2 種類の API を提供します。

  • Amazon QLDB – QLDB リソース管理 API (コントロールプレーンとも呼ばれます)。この API は、台帳リソースの管理および非トランザクションデータオペレーションにのみ使用されます。これらのオペレーションを使用して、台帳を作成、削除、説明表示、一覧表示、更新できます。また、データを暗号的に検証し、ジャーナルブロックをエクスポートまたはストリーミングすることもできます。

  • Amazon QLDB セッション - QLDB トランザクションデータプレーン。この API を PartiQL ステートメントで使用して、台帳のデータトランザクションを実行できます。

    重要

    QLDB セッション API と直接やり取りする代わりに、QLDB ドライバーまたは QLDB シェルを使用して、台帳のデータトランザクションを実行することをお勧めします。

    • AWS SDK を使用している場合は、QLDB ドライバーを使用します。このドライバーは、QLDB セッションデータ API 上に高レベルの抽象化レイヤーを提供し、SendCommand オペレーションを管理します。サポートされているプログラミング言語の情報とリストについては、「ドライバーの開始方法」を参照してください。

    • AWS CLI で作業している場合は、QLDB シェルを使用します。シェルは、QLDB ドライバーを使用して台帳と対話するコマンドラインインターフェイスです。詳細については、Amazon QLDB シェルの使用 (データ API のみ)を参照してください。

使用できる API オペレーションの詳細については、「Amazon QLDB API リファレンス」を参照してください。

次のステップ

自分のデータで台帳を使用する方法については、「Amazon QLDB でのデータと履歴の使用」を参照し、テーブルの作成、データの挿入、および基本的なクエリの実行の手順を説明する例に従ってください。このガイドでは、コンテキストのサンプルデータとクエリの例を使用して、これらの概念がどのように機能するかについて詳細を説明します。

QLDB コンソールを使用してサンプルアプリケーションチュートリアルをすばやく使用するには、「Amazon QLDB コンソールの使用開始方法」を参照してください。

このセクションで説明する主要な用語と定義のリストについては、「Amazon QLDB 用語集」を参照してください。