目次
Amazon QLDB 完全ガイド 2026
初心者から実務者向けの包括的解説 - 終了予定機能
⚠️ CRITICAL: Amazon QLDB は 2025 年 7 月 31 日にサポート終了予定です。新規採用は非推奨。既存ユーザーは Aurora PostgreSQL Ledger 機能への移行を検討してください。
Amazon QLDB(Quantum Ledger Database)は、改ざん検証可能な不変ジャーナルを持つ中央管理型台帳データベース です。すべてのデータ変更は暗号学的に検証可能なジャーナルに記録され、削除・変更が不可能。金融取引・サプライチェーン・医療記録など「誰が・いつ・何を変更したか」を改ざん不可能・証明可能な形で保持する必要があるユースケースに特化していました。
ただし AWS は 2024 年 7 月に QLDB の段階的廃止を発表。理由は 「Aurora PostgreSQL + Ledger 機能で同等の監査証跡が実現でき、より柔軟な SQL 機能を提供できるから」 です。
ドキュメントの目的と警告
本ガイドは以下を対象としています。
- 既存 QLDB ユーザー向け: 2025 年 7 月 31 日までの終了期限・移行戦略・代替手段の理解
- 新規検討者向け: QLDB は選ばないこと。Aurora PostgreSQL Ledger や他の代替手段を検討
- 学習向け: ブロックチェーン・台帳データベースの概念理解(歴史的価値)
2025-2026 年の QLDB エコシステム
- End-of-Support: 2025 年 7 月 31 日(公式発表)
- 推奨移行先:
- Aurora PostgreSQL with Ledger(AWS 推奨)
- Microsoft Azure SQL Ledger
- ImmuDB(オープンソース)
- TerminusDB / Dolt(分散台帳)
目次
- ⚠️ 重要: 終了予定通知
- 概要
- QLDB が解決していた課題
- 主な特徴
- コアコンセプト
- ジャーナル・ダイジェスト
- PartiQL クエリ言語
- データ検証メカニズム
- アーキテクチャ
- セキュリティ
- ユースケース
- Hyperledger Fabric との比較
- DynamoDB との比較
- 設定・操作の具体例
- トレーニングリソース
- 緊急: 移行戦略
- 代替手段の詳細比較
- ベストプラクティス(過去のみ適用)
- 2024-2025 終了通知
- まとめ
⚠️ 重要: 終了予定通知
Amazon QLDB は以下の日程で廃止されます:
| 時期 | イベント |
|---|---|
| 2024 年 7 月 | AWS が廃止を発表(サプライズ発表、正式なブログ記事なし) |
| 2025 年 7 月 31 日 | サポート終了(新規テーブル作成可能だが非推奨) |
| 2026 年 | 完全廃止予定(詳細日程未発表) |
既存ユーザーがすべき対応
-
緊急度の確認
- 本番環境で QLDB を使用しているか
- どの程度のデータボリュームか
- RPO/RTO 要件は何か
-
移行先の選定
- Aurora PostgreSQL Ledger(AWS 推奨) ← ほとんどのユースケース
- Azure SQL Ledger(Azure エコシステムの場合)
- ImmuDB(オープンソース・独立系)
-
移行スケジュール
- 即座に計画開始(2025 年 7 月が迫っている)
- 2024 年中に移行テスト完了
- 2025 年 6 月までに本番環境移行
概要
初心者向けメモ: QLDB は「改ざんできないデータベース」というコンセプト。例えば銀行が「この口座の残高変化は正当な取引の積み重ねで発生した」ことを数学的に証明したい時に使う。ブロックチェーンに似ているが、単一の信頼できる機関(銀行・企業)が管理する「プライベートな台帳」として設計されている。
QLDB は以下を実現していました(過去形):
- 改ざん不可能な監査証跡:すべての変更が暗号学的にチェーン化
- 暗号学的検証:特定レコードが改ざんされていないことを第三者に証明可能
- PartiQL クエリ:SQL 類似の柔軟なクエリ
- Streams 統合:Kinesis へリアルタイムイベント送信
ただし、これらの機能は Aurora PostgreSQL Ledger でも実現でき、さらに SQL の完全性とリレーショナル機能が使える ため、QLDB は廃止に至った。
QLDB が解決していた課題
課題 1: 監査証跡の改ざん不可証明
状況: 金融機関が「この残高変化は改ざんされていない」ことを規制当局に証明したい
QLDB の解決:
- すべての取引を SHA-256 ハッシュチェーンで記録
- 過去のジャーナル状態を メルクルツリーで再現可能
- 改ざん有無を暗号学的に証明
代替手段(Aurora PostgreSQL Ledger):
- 同等の監査証跡機能
- SQL での柔軟なクエリ
- より低いコスト
課題 2: 単一信頼機関の台帳
状況: 企業内で「所有権の変更履歴を改ざん不可能に保持する」必要
QLDB の解決:
- ブロックチェーン的な不変性(複雑さなし)
- 中央管理型で設定シンプル
代替手段(Hyperledger Fabric):
- 複数組織間の分散型台帳
- より複雑だが、トラストレス環境向け
主な特徴
graph TD
A["QLDB Ledger<br/>中央管理型台帳"] --> B["PartiQL<br/>SQL 風クエリ"]
A --> C["ジャーナル<br/>追記専用ハッシュチェーン"]
A --> D["ダイジェスト<br/>メルクルツリー"]
C --> E["INSERT = ブロック追加"]
C --> F["UPDATE = 新ブロック追加"]
C --> G["DELETE = ソフト削除<br/>ジャーナルに削除記録"]
D --> H["暗号学的検証"]
D --> I["過去状態の復元"]
J["セキュリティ"] --> K["IAM 統制"]
J --> L["KMS 暗号化"]
J --> M["VPC 隔離"]
特徴の詳細
-
不変ジャーナル
- すべての変更を SHA-256 ハッシュで追跡
- ハッシュチェーンで過去改ざん検出
- 削除不可(AWS すら削除不可)
-
PartiQL クエリ
- SQL ライク(ただし、ACID の完全性は限定的)
history()関数で過去バージョン取得- ドキュメント型データ
-
暗号学的検証
GetDigest():ジャーナル全体のハッシュ取得GetRevision():特定ドキュメントの証明パス取得VerifyDigest():クライアント側で検証可能
-
Streams 統合
- Amazon QLDB Streams で Kinesis へイベント送信
- リアルタイム監査ログ・分析が可能
コアコンセプト
ジャーナル(Journal)
時系列のすべての操作を記録:
ブロック 0(ジェネシスブロック)
ハッシュ: 0000...
ブロック 1(INSERT user_001)
ハッシュ: H1 = hash(ブロック 0 ハッシュ + INSERT データ)
ブロック 2(INSERT order_001)
ハッシュ: H2 = hash(H1 + INSERT データ)
ブロック 3(UPDATE user_001)
ハッシュ: H3 = hash(H2 + UPDATE データ)
ブロック 4(DELETE order_001)
ハッシュ: H4 = hash(H3 + DELETE マーク)
...
各ブロックが前ブロックのハッシュを含む = 改ざん検出
ダイジェスト(Digest)
ジャーナル全体の最終ハッシュ値:
Digest(時刻 T) = Merkle Tree Root Hash
用途:
- 「この時刻のジャーナルが改ざんされていない」ことを証明
- 規制当局に提出可能な「真実の証拠」
例:
GetDigest() → "abc123def456..."
この Digest を計算時刻とともに保存すれば、
後で「この Digest は本当だったのか?」を検証可能
PartiQL クエリ言語
PartiQL は SQL と Ion(Amazon の半構造化データ形式)を組み合わせた言語。
-- テーブル作成
CREATE TABLE Vehicles
-- インデックス作成
CREATE INDEX ON Vehicles (VIN)
-- ドキュメント挿入(Ion 形式)
INSERT INTO Vehicles VALUE {
'VIN': 'ABC123XYZ',
'Color': 'Red',
'Owner': 'Alice',
'Year': 2023
}
-- 複数行挿入
INSERT INTO Vehicles VALUE {
'VIN': 'DEF456UVW',
'Color': 'Blue',
'Owner': 'Bob'
}
-- クエリ(現在データ)
SELECT * FROM Vehicles WHERE VIN = 'ABC123XYZ'
-- 条件付きクエリ
SELECT * FROM Vehicles WHERE Color = 'Red' AND Year > 2020
-- 履歴クエリ(すべての過去バージョン)
SELECT * FROM history(Vehicles)
WHERE metadata.id = 'ABC123XYZ'
ORDER BY metadata.version ASC
-- 改ざん検証
GetRevision(Vehicles, 'ABC123XYZ', 3) -- バージョン 3 の証明パス取得
データ検証メカニズム
検証フロー
1. 過去時刻のジャーナル状態を取得
GetDigest(timestamp) → Digest A
2. 特定ドキュメントの証明パス取得
GetRevision(table, documentId, version) → Proof
3. クライアント側で暗号検証
VerifyDigest(Digest A, Proof) → 改ざんなし/あり
結果:
"このドキュメントは、この時刻の Digest の下で、改ざんされていなかった"
を数学的に証明可能
API 例(AWS SDK)
import boto3
qldb_client = boto3.client('qldb')
# ジャーナル情報取得
ledger_info = qldb_client.describe_ledger(Name='my-ledger')
# 過去時刻のダイジェスト取得
import time
timestamp = int(time.time() * 1000) - 3600000 # 1 時間前
# QLDB には GetDigest API がないため、
# AWS SDK では直接 API 呼び出しできず、
# PartiQL で history() クエリを使用する必要がある
アーキテクチャ
┌────────────────────────────────────┐
│ アプリケーション │
│ - PartiQL クエリ │
│ - DocumentClient(Node.js など) │
└─────────────────┬──────────────────┘
│
┌─────────────────────────────────────┐
│ QLDB レジャー(Ledger) │
│ ├── ジャーナル(Journal) │
│ │ └── 全ブロック(ハッシュチェーン) │
│ │ └── 改ざん不可 │
│ │ │
│ └── インデックス付きビュー │
│ └── PartiQL クエリ用 │
└──────────────────────────────────────┘
High Availability:
└── 3 AZ レプリケーション(自動)
└── マルチ AZ フェイルオーバー < 30 秒
└── 99.99% SLA
キーポイント
- サーバーレス:インスタンス管理不要
- 自動スケール:スループット無制限
- マルチ AZ:自動 3 AZ レプリケーション
- ACID トランザクション:標準サポート
セキュリティ
IAM 統制
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"qldb:GetBlock",
"qldb:GetDigest",
"qldb:SendCommand"
],
"Resource": "arn:aws:qldb:*:123456789012:ledger/my-ledger"
},
{
"Effect": "Deny",
"Action": "qldb:DeleteLedger",
"Resource": "*",
"Condition": {
"StringNotLike": {
"aws:username": "admin"
}
}
}
]
}
KMS 暗号化
# KMS キーで暗号化して Ledger 作成
aws qldb create-ledger \
--name "my-ledger" \
--permissions-mode "ALLOW_ALL" \
--kms-key "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012"
不変性
AWS すら削除不可のセキュリティ特性:
Ledger 作成 → 削除不可
└─ 必ず AWS Backup・エクスポート後に削除
ジャーナル → 削除・変更不可(数学的に保証)
└─ 規制要件に完全準拠
ユースケース
想定用途(2025 年 7 月まで)
| ユースケース | QLDB が適していた理由 | 現在の推奨代替 |
|---|---|---|
| 金融取引記録 | 改ざん不可・暗号検証 | Aurora PostgreSQL Ledger |
| サプライチェーン | 全変更履歴・証明可能 | Aurora Ledger / ImmuDB |
| 医療記録 | HIPAA・改ざん防止 | Aurora Ledger / Azure SQL Ledger |
| 不動産登記 | 所有権移転の完全履歴 | Aurora Ledger / Dolt |
| 法的監査証跡 | SOX・改ざん不可ログ | Aurora Ledger |
Hyperledger Fabric との比較
| 観点 | QLDB(廃止予定) | Hyperledger Fabric |
|---|---|---|
| 信頼モデル | 中央管理型(単一機関) | 分散型(複数機関) |
| コンセンサス | 不要(中央管理) | 必須(マジョリティー合意) |
| スループット | 高(コンセンサスなし) | 中程度(コンセンサスオーバーヘッド) |
| 管理 | フルマネージド | 複雑(Peer・Orderer 管理) |
| 推奨用途 | 単一企業の監査台帳 | 複数組織のトラストレス取引 |
| 学習曲線 | 低(PartiQL・標準 API) | 高(複雑な設定) |
| 将来性 | なし(2025 年廃止) | あり(Linux Foundation) |
DynamoDB との比較
| 観点 | QLDB(廃止予定) | DynamoDB |
|---|---|---|
| 変更履歴 | 完全な不変ジャーナル | DynamoDB Streams(削除可) |
| 改ざん検証 | 暗号学的証明可能 | 不可 |
| データモデル | ドキュメント(PartiQL) | キーバリュー・ドキュメント |
| クエリ言語 | PartiQL(SQL 風) | DynamoDB API |
| 推奨用途 | 改ざん証明が必須 | 高スループット NoSQL |
設定・操作の具体例
警告:新規での実装は非推奨。既存ユーザーのみ参考。
Ledger 作成(AWS CLI)
# Ledger 作成
aws qldb create-ledger \
--name "audit-ledger" \
--permissions-mode "ALLOW_ALL" \
--tags "Environment=production,Owner=Finance"
# Ledger 確認
aws qldb describe-ledger \
--name "audit-ledger"
# Ledger リスト
aws qldb list-ledgers
テーブル・クエリ(PartiQL)
import boto3
from pyqldb.driver.pooled_driver import PooledDriver
# ドライバー接続
driver = PooledDriver(ledger_name="audit-ledger")
def create_tables():
with driver.execute_lambda(lambda executor: executor.execute_statement("CREATE TABLE Transactions")) as session:
pass
def insert_transaction(transaction_id, amount, status):
with driver.execute_lambda(lambda executor: executor.execute_statement(
"INSERT INTO Transactions VALUE {'TransactionID': ?, 'Amount': ?, 'Status': ?, 'Timestamp': ?}",
[transaction_id, amount, status, int(time.time() * 1000)]
)) as session:
pass
def verify_transaction(transaction_id):
# 過去の変更履歴を全件取得
with driver.execute_lambda(lambda executor: result = executor.execute_statement(
"SELECT * FROM history(Transactions) WHERE metadata.id = ?",
[transaction_id]
)) as session:
for row in result:
print(f"Version {row['metadata']['version']}: {row}")
トレーニングリソース
QLDB 学習リソース(参考のみ)
- AWS QLDB Developer Guide(既存ユーザーの移行ガイドとして参照)
- PartiQL Tutorial
代替手段の学習
Aurora PostgreSQL Ledger(推奨)
ImmuDB(オープンソース代替)
緊急: 移行戦略
段階 1: 移行先決定(即座に実施)
意思決定フロー:
QLDB 使用中
↓
1. AWS エコシステム内に留まる?
YES → Aurora PostgreSQL Ledger(推奨)
NO → 以下を検討:
2. オープンソース希望?
YES → ImmuDB / Dolt
NO → Azure SQL Ledger(Azure 環境)
3. 複数組織間のトラストレス取引?
YES → Hyperledger Fabric / Ethereum
NO → 単一企業の監査台帳なので Aurora Ledger で十分
段階 2: Aurora PostgreSQL Ledger への移行(推奨)
ステップ 1:スキーマ変換
QLDB PartiQL テーブル
↓ (Ion → JSON 変換)
Aurora PostgreSQL テーブル
↓ (新規 Ledger 化)
ステップ 2:データ移行
QLDB ジャーナルエクスポート(S3)
↓ (AWS Glue / Lambda で変換)
Aurora PostgreSQL へロード
ステップ 3:検証
QLDB ジャーナル の改ざん検証結果
↓ (Aurora Ledger の history で再現)
検証成功 → Aurora へ本番切り替え
ステップ 4:アプリケーション切り替え
QLDB PartiQL ドライバー
↓ (SQL に書き換え)
Aurora PostgreSQL ドライバー
段階 3: 運用移行(2025 年 6 月まで)
| 時期 | 実施内容 |
|---|---|
| 2024 年 8 月〜 | 移行計画・テスト開始 |
| 2024 年 12 月まで | Aurora への本番切り替え(段階的) |
| 2025 年 1 月〜6 月 | QLDB との並行運用 |
| 2025 年 7 月 | QLDB サポート終了 |
代替手段の詳細比較
Aurora PostgreSQL Ledger
強み:
- AWS ネイティブ(IAM・KMS・VPC 統合)
- SQL の完全性・JOIN 対応
- より低いコスト
- Ledger テーブルで改ざん検証対応
弱み:
- QLDB ほどの完全な不変性保証ではない
- 歴史的に QLDB より新しい機能
移行難易度: 中程度(PartiQL → SQL 書き換え)
-- Aurora PostgreSQL Ledger テーブル
CREATE TABLE Transactions (
TransactionID UUID PRIMARY KEY,
Amount DECIMAL,
Status TEXT,
Timestamp TIMESTAMP
) WITH (enable_ledger = true);
-- Ledger テーブルの変更履歴確認
SELECT * FROM Transactions_ledger
WHERE TransactionID = 'abc-123'
ORDER BY ledger_transaction_id DESC;
ImmuDB(オープンソース)
強み:
- 完全なオープンソース(Apache 2.0)
- QLDB と同等の不変性・検証機能
- 独立した DBaaS(Immu Cloud)利用可能
弱み:
- AWS 外での運用・管理(EC2 ホスティング推奨)
- AWS ネイティブ統合なし
- ドキュメント・コミュニティが QLDB より小さい
移行難易度: 低〜中程度(概念は QLDB と類似)
// Go での ImmuDB 使用例
immudb, err := client.NewImmuClient()
defer immudb.Disconnect(ctx)
// トランザクション挿入
_, err = immudb.Set(ctx, []byte("transaction_id"),
[]byte(`{"amount": 1000, "status": "completed"}`))
// 履歴確認
history, err := immudb.History(ctx, []byte("transaction_id"))
Azure SQL Ledger
強み:
- Microsoft SQL Server ベース
- Azure エコシステム統合
- SQL Server の強力なサポート
弱み:
- Azure 環境必須
- AWS 統合なし
推奨シナリオ: Azure メインの組織
ベストプラクティス(過去のみ適用)
⚠️ 注記:2025 年 7 月廃止予定のため、以下は「既存 QLDB ユーザーの運用」に限定
✅ 推奨パターン(廃止まで)
- 定期的なジャーナルエクスポート(S3)
- Streams 統合による監査ログ の外部保存
- PITR テストの定期実施
- 移行計画の早期開始
❌ アンチパターン
- 新規ワークロードでの QLDB 採用(非推奨)
- 改ざん検証機能への過度な依存
- 移行計画の先延ばし
トラブルシューティング
| 問題 | 原因 | 解決方法 |
|---|---|---|
| PartiQL クエリエラー | SQL 文法の誤り | PartiQL 仕様確認、AWS ドキュメント参照 |
| パフォーマンス低下 | ジャーナルサイズ増大 | ジャーナルエクスポート・アーカイブ |
| ストレージ満杯 | 古いデータ蓄積・TTL なし | アーカイブ・削除戦略確認 |
2024-2025 終了通知
公式発表内容
AWS が 2024 年 7 月に以下を発表:
“AWS is discontinuing Amazon Quantum Ledger Database (QLDB) and recommends customers migrate to Aurora PostgreSQL with Ledger.”
既知の課題・制限
-
正式なマイグレーションツール がない
- AWS は移行ツール提供なし
- 顧客が手動で PartiQL → SQL 変換
- AWS プロフェッショナルサービスの利用推奨
-
QLDB の完全な不変性を Aurora では保証しない
- Aurora Ledger は「歴史を追跡可能」程度
- QLDB の「改ざん不可証明」ほどではない
-
移行コスト
- 大規模ワークロード:数百万円の追加コスト
- スキーマ変換・テスト・本番切り替え
まとめ
Amazon QLDB は 2025 年 7 月 31 日廃止予定です。新規採用は絶対避けてください。
既存ユーザーの対応
- 即座に移行計画開始 → 2025 年 6 月までに本番切り替え
- 移行先を選定 → Aurora PostgreSQL Ledger(AWS 推奨)
- テスト・検証実施 → 改ざん検証ロジックの移植確認
- 段階的移行 → 並行運用で安全に切り替え
新規検討者の対応
QLDB は選ばないでください。 代わりに以下を検討:
- AWS メイン → Aurora PostgreSQL Ledger
- Azure メイン → Azure SQL Ledger
- 独立系 → ImmuDB(オープンソース)
- 複数組織 → Hyperledger Fabric
QLDB は「不変台帳」の素晴らしい概念を示しましたが、Aurora Ledger でより柔軟かつ安価に実現可能となったため、廃止されることになりました。AWS エコシステムの進化を受け、適切な選択肢を活用してください。
最終更新:2026-04-26 バージョン:v2.0 - END-OF-LIFE ガイド