イミュータブルで透過的

追加専用のジャーナル

Amazon QLDB は、全データ変更の正確で順序があるエントリを格納する、組み込みのイミュータブルジャーナルを備えています。このジャーナルは追加専用です。これは、データはジャーナルに追加することはできますが、上書きや削除はできないことを意味します。これにより、格納された変更履歴は削除や変更が不可能であることが保証されます。台帳からデータを削除した場合でも、イミュータブルジャーナルから読み取ることで、そのデータの変更履歴に引き続きアクセスすることができます。

変更履歴へのアクセスは容易

Amazon QLDB では、アプリケーションのデータの変更履歴全体にアクセスできます。履歴の変更のサマリー (ある車両の以前の所有者全員のリストなど) をクエリし、取引履歴に関連する具体的な詳細 (車両販売の日時と新しい所有者の名前など) もクエリすることができます。

暗号的に検証可能

変更履歴のダイジェスト

Amazon QLDB は暗号を使用して変更履歴の簡潔なサマリーを作成します。この堅牢なサマリーは、一般にダイジェストと呼ばれており、暗号ハッシュ関数 (SHA-256) を使用して生成されます。ダイジェストは、データの変更履歴の証拠として機能し、データ変更の整合性をさかのぼって見直して検証することができます。このダイジェストを QLDB の API で使用して、任意の取引の整合性 (ある取引が発生したかどうかなど) を証明することができます。QLDB ではデータの履歴のクエリとデータの履歴へのアクセスも可能ですが、特定の取引に関連する証拠が必要なビジネスシナリオでは、検証可能性が役に立ちます。たとえば e コマース企業であれば、落札の証拠を示す必要がある場合があります。

サーバーレス

スケールも簡単

Amazon QLDB は、シームレスな自動スケーリングを提供し、アプリケーションの需要を満たします。容量のプロビジョニングや読み書きの限度の設定は不要です。また、QLDB はデータベースであるため、ブロックチェーンフレームワークよりも優れたパフォーマンスとスケールを備えています。QLDB は容易にスケールアップでき、一般的なブロックチェーンフレームワークの 2 倍から 3 倍ものトランザクションを実行できます。ブロックチェーンフレームワークは分散されるため、台帳への保存前にトランザクションを検証するうえでピアノードが必要とされます。これがパフォーマンスに影響を及ぼします。一方 QLDB でのトランザクションの実行は、他の AWS データベースと同様に簡単です。

容易な設定

管理するサーバーやプロビジョニングする容量がないため、Amazon QLDB を使い始めるのは簡単です。AWS マネジメントコンソール、AWS コマンドラインインターフェイス (CLI)、AWS CloudFormation テンプレートを使用するか、QLDB API に対してコールを作成すれば、新しい台帳を数分で作成できます。

モニタリングとメトリクス

Amazon QLDB では、台帳用の Amazon CloudWatch メトリクスを利用できます。QLDB を使用すると、読み書き IO の運用上の主要なメトリクスを確認できます。

使いやすさ

PartiQL のサポート

Amazon QLDB では、オープンソースの新しい標準クエリ言語である PartiQL をサポートしています。 PartiQL は特定のデータソースから独立しながら、半構造化データ、ネストされたデータを含む QLDB のドキュメント指向のデータモデルへの SQL 互換アクセスをサポートしています。PartiQL では、使い慣れた SQL 演算子を使用してデータのクエリ、管理、更新を簡単に行えます。

ドキュメント指向のデータモデル

データモデルでは、データベース内でデータを処理し、保存する方法が定義されます。Amazon QLDB はドキュメント指向のデータモデルを使用してデータを保存します。このモデルでは、構造化データと半構造化データを柔軟に保存することができます。QLDB のデータモデルは、ネストされたデータ構造もサポートしているため、アプリケーションを簡素化できます。

トランザクションの整合性と ACID セマンティクス

データベース操作の実行時に、Amazon QLDB はアトミック性、整合性、分離性、耐久性 (ACID) の各特性を提供します。また、QLDB トランザクションは最高レベルの隔離である完全なシリアル化を備えています。トランザクションの ACID 特性によって、正しいアプリケーションを記述することが容易になっています。たとえば銀行アプリケーションで、口座 A から口座 B に 100 ドルの送金が行われようとしている場合、操作は完全に整合性を持って実行される (この金額が口座 A の出金、口座 B の入金となる) か、まったく実行されないかのいずれかとなります。トランザクションが部分的で整合性のない形 (この金額が口座 B の入金となっても、口座 A の出金にならない、またはその逆) で実行されることは一切ありません。