はじめに
※ 本連載では、様々な AWS サービスをグラフィックレコーディングで紹介する awsgeek.com を、日本語に翻訳し、図の解説をしていきます。awsgeek.com は 、Jerry Hargrove 氏が運営しているサイトです。
builders.flash 読者のみなさん、こんにちは! テクニカルライターの米倉裕基と申します。
Amazon Quantum Ledger Database (以下、Amazon QLDB) は、データの改ざん耐性と変更履歴の検証可能性を実現するフルマネージド型の台帳データベースサービスです。Amazon QLDB はデータの完全性と信頼性を守るために設計されており、金融取引の記録や商品の売買記録など、データの改ざんが許されない中央集権型の台帳管理を行うユースケースに適しています。
本記事では、Amazon QLDB の以下の機能と特徴について詳しく解説します。
Amazon QLDB とは
QLDB データベースの特徴
イミュータブルジャーナル
データの格納とクエリ
改ざんの検知と追跡
Amazon QLDB の料金体系
それでは、項目ごとに詳しく見ていきましょう。
builders.flash メールメンバー登録
Amazon QLDB とは
近年、多くの企業がデジタルトランスフォーメーションを推進する中で、データの完全性と信頼性を確保することは極めて重要な課題となっています。
機密性の高い取引データや個人情報など、ビジネスにとって重要なデータが改ざんや不正操作されれば、企業の信頼性が損なわれ、多大な影響が生じかねません。こうしたリスクを回避するには、データを格納するデータベース自体に、高度な改ざん耐性と変更履歴の追跡機能を備える必要があります。
このようなニーズに対応するために、AWS はフルマネージド型の台帳データベースサービス「Amazon QLDB」を提供しています。Amazon QLDB は、データの完全性と変更履歴の検証可能性を実現するための高度な機能とアーキテクチャを備えたサービスです。

Amazon QLDB の主な機能
Amazon QLDB は、データの改ざん耐性と履歴追跡を実現するための以下の主な機能を備えています。
機能 |
説明 |
イミュータブルジャーナル |
データの変更履歴を記録するジャーナルがイミュータブル (書き換え不可能) な構造となっており、一度書き込まれた変更履歴は変更したり削除することができません。 |
インデックス付き履歴 |
ジャーナルにはデータの変更履歴がインデックス付きで維持されるため、SQL クエリで履歴を参照できます。 |
ほぼリアルタイムの値 |
ジャーナルをコミットしたタイミングで Amazon Kinesis Data Streams にストリーミングでき、ほぼリアルタイムで他データストアとの連携が可能です。 |
このように、Amazon QLDB はデータ改ざんの検知に必要な機能と他データストアとの連携が柔軟なため、総合的にデータの改ざん耐性と変更履歴の検証可能性が実現されます。
主なユースケース
Amazon QLDB は、データの完全性と改ざん耐性が重要となる、以下のようなユースケースに適しています。
- 金融取引の記録:
クレジット・デビット取引など、すべての金融取引の完全で正確な記録を作成できます。 - サプライチェーン管理:
各取引の履歴を記録し、製造から販売に至るサプライチェーンの各段階の詳細データを追跡できます。 - クレーム履歴管理:
クレームの履歴を追跡し、データの整合性を暗号化して検証することで、データ入力ミスや不正操作に強いアプリケーションを実現できます。 - デジタル記録の一元化:
給与、ボーナス、福利厚生など従業員の詳細情報を完全に一元化して記録するシステムアプリケーションを構築できます。
Amazon QLDB は、ブロックチェーンと同様にデータの改ざん耐性と検証可能な変更履歴を備えたデータベースサービスです。しかし、ブロックチェーンが分散型のネットワークを前提としているのに対し、Amazon QLDB は AWS アカウント単位でデータ保存、アクセス制御、トランザクション検証などの管理機能を一元的に行う、中央集権型のアーキテクチャを採用しています。また、AWS クラウドのインフラストラクチャ上に構築されているため、高い可用性、耐久性、自動スケーリングなどの特性を備えています。
このように、Amazon QLDB はブロックチェーンに類似したデータ完全性と監査証跡の機能を持ちながら、中央集権型の管理モデルと、高い可用性、耐久性、スケーラビリティを併せ持つデータベースサービスです。これらの特徴を活かし、レコードシステムアプリケーションなど、中央管理とスケーラビリティの両立が必要なユースケースに適しており、特に金融、製造、サプライチェーン管理などでの領域での利用において大きな効果を発揮することができます。
その他、Amazon QLDB の詳細な機能と特徴については、製品ページの「Amazon Quantum Ledger Database (Amazon QLDB) の機能」をご覧ください。

QLDB データベースの特徴
データベースには様々な特徴があり、ワークロードに適したデータベースを選択することが重要です。Amazon QLDB は、データの完全性と変更履歴の追跡を実現する独自のアーキテクチャを備えたデータベースサービスです。
QLDB データベースの主な特徴
Amazon QLDB は、主に以下のような特徴を備えており、データの完全性を担保しつつ、柔軟なデータ形式の扱いを可能にします。
完全なトランザクション処理:
Amazon QLDB は、オプティミスティック同時実行制御 (OCC) などの仕組みにより、完全なトランザクション処理を実現しています。OCC ではトランザクション開始時に排他ロックをかけずに実行し、コミット時にデータの整合性を検証することで、トランザクション処理の不整合を防ぎます。ACID 特性:
Amazon QLDB は、ACID 特性に準拠しています。つまり Atomicity (原子性)、Consistency (一貫性)、Isolation (独立性)、Durability (永続性) の 4 つの要素を満たすトランザクション処理を実現します。こうした ACID 特性の厳格な準拠により、Amazon QLDB はデータ整合性と高い信頼性のトランザクション処理を実現しています。ドキュメント指向データモデル:
Amazon QLDB は、Amazon Ion という独自の半構造化ドキュメント指向データモデルを採用しています。Ion は構造化データと非構造化データの両方を保存できる抽象データモデルで、JSON のデータ型もネイティブレベルでサポートしています。

データベース特徴比較
QLDB データベースと他の AWS データベースサービスとの比較は以下のとおりです。
データベース |
トランザクション処理 |
ACID 特性 |
データモデル |
データ構造 |
改ざん耐性 |
Amazon QLDB |
完全 |
完全 |
ドキュメント |
レジャー |
イミュータブルジャーナル |
完全 |
完全 |
リレーショナル |
テーブル |
ロック機構 |
|
部分的 |
部分的 |
キーバリューストア |
テーブル |
結果整合性 |
|
部分的 |
部分的 |
ドキュメント |
コレクション |
結果整合性 |
Amazon QLDB は、トランザクション処理と ACID 特性を完全に満たすデータベースサービスです。また、結果整合性を実現する Amazon DynamoDB や Amazon DocumentDB 以上に、Amazon QLDB は強い一貫性を保証します。ユーザーは、これらの各種データベースサービスの特性を踏まえた上で、ワークロードに応じた最適なデータベースを選択できます。
開発者フレンドリーな機能
イミュータブルジャーナル
一般的なデータベースでは、データ変更履歴をトランザクションログに記録する仕組みがあります。Amazon QLDB もトランザクションログに類似する「ジャーナル」という機能が存在しますが、性質が大きく異なります。
Amazon QLDB ではデータ自体を「レジャー」と呼び、このレジャーへの変更履歴を「ジャーナル」に記録します。Amazon QLDB のジャーナルは「イミュータブル (書き換え不可)」な性質を持っており、一度ジャーナルに記録された変更履歴は二度と書き換えられることがなく永続的に保持されます。
Amazon QLDB ではこのイミュータブルジャーナルとレジャーが連携することで、データの改ざん耐性と変更履歴の追跡を実現しています。
ジャーナルの仕組み
Amazon QLDB のデータはレジャーに格納されます。レジャーへのデータ変更は以下の流れで行われます。
アプリケーションからデータ変更 (INSERT (挿入)、UPDATE (更新)、DELETE (削除)) のリクエストを受け取る
変更内容をイミュータブルジャーナルに書き込む
ジャーナルの内容をレジャーに適用する
Amazon QLDB では、このようにレジャーのデータを直接変更するのではなく、必ずジャーナルに変更履歴が記録された後に、レジャーが更新されます。

ジャーナルの特徴
Amazon QLDB のジャーナルには以下のような特徴があります。
一度書き込まれた変更履歴は二度と書き換え不可能
変更履歴がインデックス付きで維持されるため、SQL クエリで参照可能
ジャーナルにハッシュ値を付与してハッシュチェーンを形成し、改ざん検知を実現
このように Amazon QLDB のアーキテクチャの中核をなすイミュータブルジャーナルにより、データの改ざん耐性と変更履歴の追跡が実現されています。一度記録された変更履歴は改ざんできず、すべての履歴が暗号化された監査証跡とともに保持されます。
Amazon QLDB のジャーナルについて詳しくは、「Amazon QLDB のジャーナルコンテンツ」をご覧ください。
データの格納とクエリ
Amazon QLDB では、レジャーに格納するデータは半構造化データ (ドキュメントデータ) の Amazon Ion 形式で格納されます。また、レジャーに記録された Ion データは、PartiQL というクエリ言語を用いて問い合わせを行います。
ドキュメントデータモデルと Amazon Ion
Amazon Ion は、Amazon 製の軽量で高性能なデータ記述言語です。Amazon QLDB ではこの Ion 形式をドキュメントデータモデルとして採用しています。
次は、Amazon QLDB で格納可能な Ion データ形式の例です。主に以下のような点で通常の JSON 形式とは異なっています。
型注釈が省略可能
フィールド名に引用符不要
タイムスタンプ型のネイティブサポート
複数行コメントと構造化注釈のサポート
バイナリエンコーディングによるデータサイズ圧縮
データ型に応じた最適エンコーディング方式の自動選択
Amazon Ion は、柔軟性が高く利便性に優れたデータ形式です。豊富な型システムと構造化注釈などの機能により、データの構造と意味をより詳細に表現でき、またバイナリエンコーディングをサポートしているため、コンパクトでパースが高速です。Amazon Ion の仕様について詳しくは、Amazon Ion ドキュメントの「Specification」をご覧ください。
Ion データ形式の例
Amazon Ion は、柔軟性が高く利便性に優れたデータ形式です。
{
orderId: 12345, // 型注釈なしの数値リテラル
customerName: 'Yamada Taro', // 型注釈なしの文字列リテラル
orderDate: 2023-05-01T00:00:00.000Z, // タイムスタンプ型
items: [
{productId: 4567, name: 'ProductA', quantity: 2}, // フィールド名は引用符不要
{productId: 8901, name: 'ProductB', quantity: 1}
],
shippingAddress: {
city: 'Shinagawa-ku, Tokyo', // フィールド値は型注釈なし
street: 'x-x-x Kamiosaki'
},
/*
複数行コメント
*/
_annotations: { // 構造化注釈
lastModified: 2024-07-01T12:34:56.789Z
}
}
PartiQL のサポート
PartiQL は、AWS が提供する統合クエリ言語で、構造化データ、非構造化データの両方にクエリを発行できるのが大きな利点です。
一つのクエリ言語で Amazon Athena、AWS Glue、Amazon DynamoDB など複数の AWS サービスに対して統合的にクエリを実行できます。また、SQL に準拠した構文を持つため、一般的な SQL の知識があればスムーズに習得が可能です。

PartiQL によるクエリ
PartiQL は、SQL の構文を Ion のデータ型にマッピングします。そのため、一般的な SQL クエリの構文を使って、Ion のドキュメントデータ型やタイムスタンプ型などの豊富なデータ型を扱えます。
PartiQL はドキュメントデータ内の特定のフィールドやネストされた構造体にもアクセスできます。例えば、orders というテーブルに格納された Ion ドキュメントデータから、注文 ID、顧客名、配送先市区町村、携帯電話番号を取得するには次のようなクエリを実行します。
Amazon QLDB では、柔軟な形式の Ion のデータ型を PartiQL を使った SQL 構文で簡単に操作できます。PartiQL を使った QLDB データベースのクエリ方法について詳しくは、「Amazon QLDB の PartiQL リファレンス」をご覧ください。
PartiQL によるクエリ
PartiQL は、SQL の構文を Ion のデータ型にマッピングします。そのため、一般的な SQL クエリの構文を使って、Ion のドキュメントデータ型やタイムスタンプ型などの豊富なデータ型を扱えます。
SELECT
orderId,
customerName,
shippingAddress.city,
phones[0] AS mobileNumber
FROM orders
インデックス化によるクエリ高速化
Amazon QLDB では、データがインデックス化されてストレージに保存されます。インデックスはジャーナルに記録された変更履歴から自動的に作成および更新されます。インデックス化により、クエリ実行時の検索性能が大幅に向上します。インデックス化により、Amazon QLDB ではデータの整合性が保たれたまま、高速なクエリ実行が可能になっています。
インデックス管理について詳しくは、「インデックスの管理」をご覧ください。
改ざんの検知と追跡
Amazon QLDB はデータの改ざんを検知し防止するため、ダイジェスト暗号化とハッシュチェーンの仕組みを組み合わせます。
ダイジェスト暗号化
ダイジェスト とは、データの内容を表す暗号化された固定長の値です。ダイジェストは、SHA-256 などの一方向ハッシュ関数を用いて生成されます。SHA-256 は入力データから 256 ビットのハッシュ値を出力します。
ダイジェストの特徴
ダイジェストとは、Amazon QLDB のレジャーに格納されたデータの内容を表す暗号化された固定長の値です。ダイジェストには以下の特徴があります。
レジャーのデータから不可逆的に算出される固定長 (16 進数表記で 64 桁) の値
データが少しでも変更されるとダイジェストの値は大きく変わる
ダイジェストから元のデータを逆算的に復元することはできない
例えば、レジャー 1 のデータが "Book"、メタデータが "2024-07-01T12:34:56Z" (レジャー作成日時)、前のダイジェストが "c3ab8ff1..." (64 桁) の場合、これらの情報を組み合わせて SHA-256 ハッシュ関数を適用した結果が、レジャー 1 のダイジェストとなります。さらに次のレジャー 2 では、レジャー 2 のデータとレジャー 1 のダイジェストから同様の方法でダイジェストが計算されます。
このようにレジャー同士がダイジェストを介して連鎖し、ハッシュチェーンを形成していきます。
ハッシュチェーン
Amazon QLDB ではデータの変更履歴がジャーナルに記録されます。ジャーナルデータは、「ブロックオブジェクト」と呼ばれる不変のデータ構造で構成されています。各ブロックオブジェクトには、そのブロックのデータ、メタデータ、ハッシュダイジェストなどの情報が含まれています。
新しいレジャーが作成されると、そのレジャーのデータ、メタデータ、直前のブロックオブジェクトのダイジェストを組み合わせて新しいダイジェストが算出される。
算出されたダイジェストは該当のブロックオブジェクトに永続的に保存される。
次のレジャーが作成される際には、新しいレジャーの情報と直前のブロックオブジェクトのダイジェストから新しいダイジェストが計算される。
ブロックオブジェクトがチェーン状に連なり、各ブロックのダイジェストは直前のブロックのダイジェストに依存する。
このように、Amazon QLDB のトランザクション履歴は、複数のブロックオブジェクトがチェーン状に連なり、各ブロックが保持するダイジェストが直前のブロックのダイジェストに依存するハッシュチェーン構造を持ちます。

データ改ざん検知
ハッシュチェーンの構造により、特定のレジャーのデータが改ざんされると、そのレジャーのダイジェストが変わり、その後に続くすべてのレジャーのダイジェストも連鎖的に変更が必要になります。このように、ひとつのレジャーが改ざんされた場合、その影響が連鎖的に後続のレジャーにも及ぶため、改ざんを効率的に検知できます。
データ改ざんの検知方法については、例えば AWS マネジメントコンソールからレジャーのデータとダイジェストを確認し、クライアント側で再計算したダイジェストと比較することで変更内容を検証することが可能です。また、QLDB API から「GetDigest」「GetBlock」「GetRevision」などのメソッドを利用して、アプリケーションからプログラム的に検証することも可能です。
各レジャーのダイジェストはジャーナルに永続的に記録されるため、ダイジェストの連鎖に不整合が生じれば、それを追跡して改ざんされたレジャーを特定できます。このように、Amazon QLDB ではダイジェスト暗号化とハッシュチェーンの仕組みを組み合わせることで、データの改ざんを効率的に検知し、変更履歴を暗号的に検証します。
Amazon QLDB のデータ検証について詳しくは、「Amazon QLDB でのデータ検証」をご覧ください。
Amazon QLDB の料金体系
Amazon QLDB の利用料金は、従量課金制を採用しています。最低利用料金やサービス利用の義務はありません。フルマネージド型のサーバーレスサービスのため、事前にストレージや I/O をプロビジョニングしておく必要もなく、使用したリソース分のみに課金されます。
5 つの料金の要素
料金は以下の 5 つの要素から構成されており、それぞれ利用量に応じて個別に課金されます。
項目 |
課金対象 |
アジアパシフィック (東京) リージョンの料金 |
書き込み I/O 料金 |
Amazon QLDB へのデータ書き込み時に発生するリクエストに対する料金です。 |
100 万リクエストあたり 0.799USD |
読み取り I/O 料金 |
Amazon QLDB からのデータ読み取り時に発生するリクエストに対する料金です。 |
100 万リクエストあたり 0.155USD |
ジャーナルストレージ料金 |
ジャーナルの保存に利用するストレージ利用料金です。 |
月額 0.034 USD/GB が課金されます。 |
インデックス化ストレージ料金 |
PartiQL クエリの高速化のため、Amazon QLDB がメタデータをストレージに保存する分に対する料金です。 |
月額 0.285 USD/GB が課金されます。 |
データ転送料金 |
インターネットから Amazon QLDB へのデータ転送受信 (イン) は無料です。 |
最初の 10 TB / 月まで:0.114 USD/GB |
コスト最適化の仕組み
Amazon QLDB は、フルマネージドサービスかつ従量課金制など、データベースの総運用コスト (TCO) を最適化する仕組みが整っています。
フルマネージドのため、インフラ管理の手間が不要で運用コストが抑えられます。
リソースのプロビジョニングは自動で行われ、ユーザーによる手動プロビジョニングが不要です。
従量課金制のため、実際に使用した分のみの支払いで済み、ワークロードに応じた柔軟な料金体系です。
自動スケーリング機能により、ピーク需要に合わせてリソースを最適化でき、過剰なプロビジョニングが不要です。
データ転送料金には段階的ディスカウントがあり、大量データ転送でもコストを抑制できます。
AWS 無料枠の対象で、1 か月あたり 100GB のインターネットへのデータ転送を無料で利用できます。小規模環境では無料で利用可能です。
Amazon QLDB の利用料金について詳しくは、「Amazon Quantum Ledger Database (Amazon QLDB) 料金」をご覧ください。

まとめ
最後に、本記事で紹介した機能の全体図を見てみましょう。
この記事では、AWS のフルマネージド型台帳データベースサービスである Amazon QLDB の機能と特徴について解説しました。
ここまでのように、Amazon QLDB は、ACID 特性を完全に満たすトランザクション処理、ドキュメント指向データモデルによる柔軟なデータ構造の定義、イミュータブルなデータ構造とハッシュチェーンによるデータの改ざん耐性、トランザクションログの永続的な追跡など、データの信頼性を重視したアーキテクチャが特徴のデータベースサービスです。また、本記事で紹介した機能以外にも、AWS SDK を使った QLDB データベースの操作 や、IAM ポリシーによるアクセス制御、ジャーナルのエクスポート など、さまざまな機能が提供されています。
本記事を読んで Amazon QLDB に興味を持たれた方、実際に使ってみたいと思われた方は、ぜひ 製品ページ や「開発者のための Amazon QLDB 入門」、「海外と日本における Amazon QLDB のお客様事例と導入効果」などの資料も合わせてご覧ください。
全体図
筆者・監修者プロフィール

筆者プロフィール
米倉 裕基
アマゾン ウェブ サービス ジャパン合同会社
テクニカルライター・イラストレーター
日英テクニカルライター・イラストレーター・ドキュメントエンジニアとして、各種エンジニア向け技術文書の制作を行ってきました。
趣味は娘に隠れてホラーゲームをプレイすることと、暗号通貨自動取引ボットの開発です。
現在、AWS や機械学習、ブロックチェーン関連の資格取得に向け勉強中です。

監修者プロフィール
中武 優樹
アマゾン ウェブ サービス ジャパン合同会社
シニアソリューションアーキテクト
ブロックチェーンフォーカスのソリューションアーキテクトとして活動。筋トレとお酒と子供が好き。
Did you find what you were looking for today?
Let us know so we can improve the quality of the content on our pages