Amazon Web Services ブログ

Amazon Quantum Ledger Database (QLDB) が利用可能に

データ型、クエリモデル、インデックスオプション、スケーリングの期待値、パフォーマンス要件を幅広く考慮した場合、データベースは 1 つのサイズですべての製品に合わせることはできません。こうした理由から AWS データベースは多くの種類があり、それぞれが異なる種類のアプリケーションのニーズを満たすように作られています。

QLDB の紹介
本日は、AWS データベースファミリーの最新メンバーである Amazon QLDB についてお話ししたいと思います。最初に 2018 年の AWS re:Invent で発表され、プレビュー形式で利用可能でしたが、5 つの AWS リージョンにおいて本番形式で利用できるようになりました。

QLDB は台帳データベースとして、​​保存したデータの信頼できるデータソース (レコードのシステム として知られる) を提供するように設計されています。更新、変更、または変更不可のデータにコミットされたすべての変更において完全かつ不変の履歴を保持します。QLDB は履歴データへの PartiQL SQL クエリをサポートし、履歴が正確かつ正当であることを暗号で検証できる API も提供します。これらの機能により、QLDB は銀行や金融、e コマース、輸送や物流、人事や給与、製造、政府機関のアプリケーションや、保存したデータの整合性と履歴を維持する必要のあるその他の多くのユースケースに大変適しています。

重要な QLDB の概念
詳しく見ていく前に、最も重要な QLDB の概念を確認しましょう。

台帳 – QLDB 台帳は QLDB テーブルのセットと、テーブルに対する変更の完全かつ変更不可の履歴を保持するジャーナルで構成されます。台帳には名前があり、タグを付けることができます。

ジャーナル – ジャーナルはブロックのシーケンスで構成され、各ブロックは暗号化されて前のブロックにチェーンされているため、変更を検証できます。一方、ブロックにはテーブルに加えられた実際の変更が含まれ、効率的に取得できるようインデックスが付けられています。この追加専用モデルにより、以前のデータを編集または削除できなくなり、台帳が変更不可となります。QLDB を使用すると、ジャーナルのすべてまたは一部を S3 にエクスポートできます。

テーブル – テーブルは台帳内に存在し、ドキュメント改訂のコレクションが含まれます。テーブルは、ドキュメントフィールドのオプションのインデックスをサポートしています。インデックスは、等式 (=) 述語を使用するクエリのパフォーマンスを改善できます。

ドキュメント –ドキュメントはテーブル内に存在しており、Amazon Ion 形式でなければなりません。Ion は、追加のデータ型、型の注釈、コメントを追加する JSON のスーパーセットです。QLDB は​ネストした JSON 要素を含むドキュメントをサポートし、これらの要素を参照し含めるクエリを作成する機能を提供します。ドキュメントは特定のスキーマに準拠する必要はないため、変更に対して簡単に適応できるアプリケーションを柔軟に構築できます。

PartiQLPartiQL は新しいオープンスタンダードクエリ言語で、特定のデータソースから独立したまま、リレーショナルデータ、半構造化データ、ネストデータへの SQL 互換アクセスをサポートします。詳細については、「Announcing PartiQL: One query language for all your data」をご参照ください。

サーバーレス – 容量のプロビジョニングや読み書きスループットの設定について心配する必要がありません。台帳を作成し、テーブルを定義すると、QLDB は​​アプリケーションのニーズに合わせて自動的にスケーリングされます。

QLDB の使用
QLDB 台帳とテーブルが AWS マネジメントコンソールAWS コマンドラインインターフェイス (CLI)、CloudFormation テンプレート、または QLDB API を呼び出します。QLDB コンソールを使用し、「Getting Started with the Amazon QLDB Console」の手順に従います。コンソールを開き、[Start tutorial] をクリックして開始します。

Getting Started ページでは、最初の 3 つのステップの概要を説明しています。[Create ledger] をクリックして続行します (新しいブラウザータブから開きます)。

台帳の名前 (vehicle-registration) を入力してタグを付け、もう一度 [Create ledger] をクリックして続行します。

台帳は「Creating」ステータスから開始し、1〜2 分で「Active」に移行します。

Getting Started ページに戻り、台帳のリストを更新し、新しい台帳を選択して、[Load sample data] をクリックします。

これには 1 秒ほどかかり、4 つのテーブルと 6 つのインデックスが作成されます。

CREATE TABLECREATE INDEXINSERT INTO などの PartiQL ステートメントを使用して、同じタスクを実行することもできます。

テーブル、インデックス、サンプルデータが読み込まれた状態で、[Editor] をクリックし、最初のクエリ (単一テーブル SELECT) を実行します。

これは単一の行を返すもので、VIN フィールドのインデックスのメリットも享受できます。2 つのテーブルを結合する、さらに複雑なクエリを実行することもできます。

ドキュメント ID を取得して (こちらのクエリを使用)、ドキュメントを更新できます。

特定の範囲内でおよび特定のドキュメント内の変更を検索する機能を使用して、テーブルまたはテーブル内の特定のドキュメントの変更履歴をクエリできます (詳細については、「Querying Revision History」をご覧ください)。以下は、この投稿を書いた日に作成した VehicleRegistration テーブル内のすべてのドキュメントの変更履歴を返す簡単なクエリです。

ご覧のとおり、各行は構造化された JSON オブジェクトです。必要な行を選択し、[View JSON] をクリックして詳細を確認できます。

先ほど、PartiQL はネストされたデータを処理できると言いました。VehicleRegistration テーブルには、次のような所有権情報が含まれています。

{
   "Owners":{
      "PrimaryOwner":{
         "PersonId":"6bs0SQs1QFx7qN1gL2SE5G"
      },
      "SecondaryOwners":[

      ]
  }

PartiQL では「.」表記を使用して、ネストしたデータを参照できます。

台帳のジャーナルに保存されているドキュメントの整合性を確認することもできます。これについては「Verify a Document in a Ledger」で詳しく説明されており、暗号検証が持つ力 (そして価値) を示す優れた例でもあります。各 QLDB 台帳には、関連付けられたダイジェストがあります。ダイジェストは 256 ビットのハッシュ値で、ある時点での台帳のドキュメント改訂履歴全体を一意に表します。ダイジェストにアクセスするには、台帳を選択し、[Get digest] をクリックします。

[Save] をクリックすると、台帳の検証に必要なすべての情報を含んだ短いファイルがコンソールに表示されます。このファイルを安全な場所に保存し、台帳のドキュメントを確認する際に使用します。ドキュメントを確認するときにファイルを取得し、左手のナビゲーションにある [Verification] をクリックして、検証の実行に必要な値を入力します。これには、ドキュメント改訂のブロックアドレスとドキュメントの ID が含まれます。以前に保存したダイジェストも選択し、[Verify] をクリックします。

QLDB は​​ハッシュを再計算して、ドキュメントが不正に変更されていないことを確認し、検証を表示します。

本番環境では、QLDB API を使用してダイジェストを定期的にダウンロードし、ドキュメントの整合性を検証してください。

QLDB でアプリケーションを構築する
Amazon QLDB Driver for Java を使って、台帳データベースにアクセスして操作するコードを作成できます。これは、セッションの作成、トランザクションのスコープ内での PartiQL コマンドの実行、および結果の取得を可能にする Java ドライバーです。他の言語のドライバーを現在開発中です。詳細については、少々お待ち下さい。

今すぐ利用可能です
Amazon QLDB は、米国東部 (バージニア北部)米国東部 (オハイオ)米国西部 (オレゴン)欧州 (アイルランド) およびアジアパシフィック (東京)のリージョンでご利用いただけます。料金は次の要素に基づいており、実例を含む Amazon Quantum Ledger Database (QLDB) 料金ページで詳しく説明されています。

  • 書き込み操作
  • 読み込み操作
  • ジャーナルストレージ
  • インデックスストレージ
  • データ転送

Jeff