Amazon QLDB
透過的でイミュータブルかつ暗号的に検証可能なトランザクションログを使用する台帳データベース。`
Amazon QLDB はフルマネージド型の台帳データベースで、信頼された中央機関が所有する、透過的でイミュータブルであり、暗号的に検証可能なトランザクションログを備えています。Amazon QLDB ではアプリケーションデータの変更すべてが追跡され、完全で検証可能な変更履歴が長期間維持されます。
まとめ
内部はTxチェーンだが、見た目はRDB。SQLで読み書き可能 / クエリで変更履歴取得可能 /hash値による検証機能あり で、内部犯行絶対防ぐマン。
BCとの違い:他社とのデータ共有ではないよ、プログラムはのせられないよ
いまはS3 exportのみで、よそへ持っていくことはできないが、将来的にcross account replication機能も出てきたら監査会社からのverifiabilityはあるのでは
触れていないけどstreams機能もpreview版で出ているので、方向性は近いかもしれない
特徴
PartiQLをサポート。SQL互換。構造化+非構造化(ドキュメント指向)。
SHA256によるダイジェスト(データ変更履歴の保護された出力ファイル)を生成
サーバーレス(自動スケーリング)
ユースケース
企業内に閉じていたとしても、immutableで、追加のみ可能なデータ構造であることが嬉しいユースケースが多々あるみたい。
金融: ほとんどの銀行では、お客様の銀行口座の貸方取引、借方取引などの重要なデータを記録するための台帳のような集中型アプリケーションが必要です。銀行は、監査機能が複雑なカスタムの台帳を構築する代わりに、QLDB を使用してすべての金融取引の正確で完全な記録を簡単に保存できます。
製造業: ほとんどのメーカーでは、サプライチェーンシステム間のデータを調整し、製品のすべての製造履歴を追跡する必要があります。台帳データベースを使用して、各トランザクションの履歴を記録し、施設で製造された製品の各バッチの詳細を得ることができます。製品のリコールが発生した場合、メーカーは QLDB を使用して、製品の生産流通ライフサイクル全体の履歴を簡単に追跡できます。
スナップショットやバックアップ、復元: サポート外。S3 export機能あり。
これをもとにクロスリージョンレプリしてね
region: tokyoきてるよ
performance: 一般的なブロックチェーンフレームワークの台帳に比べ、2~3 倍多くのトランザクション
楽観的ロックによる並列化
driver: Java, Node.js, python, golang(preview)
耐久性高
複数のAZ、またAZごとに複数のコピーがdeployされ、AZ障害耐性と高可用性。書き込み処理は複数のAZで完了するまで認識されない。
FAQ
Q: 台帳データベースと他のデータベースの違いは何ですか?
従来のデータベースでは、データを上書きまたは削除できるため、開発者は監査テーブルや監査証跡などの技術を使用して、データ系列を追跡する機能を実装します。このような手法は機能していますが、カスタム開発が必要とされ、スケーリングが難しい場合があります。また、適切なデータすべてを確実に記録する責任がアプリケーション開発者にのしかかります。Amazon QLDB 内のデータは、追記のみ可能なジャーナルに書き込まれるため、完全なデータ系列が開発者に提供されます。さらに、Amazon QLDB ジャーナル内のデータがイミュータブルかつ検証可能なことは、台帳内のデータを信頼できることを意味します。
Q: 台帳データベースにはどのようなデータを保存すればよいですか?
Amazon QLDB の特徴は、データ整合性、完全性、検証可能性が必要不可欠な SoR アプリケーションに自然に適合します。例えば、サプライチェーンや物流の分野では、運送業者間での移動や国外配送などの変更履歴全体を Amazon QLDB 上に構築されたアプリケーションで管理し、クエリと分析に利用します。金融では、SoR アプリケーションで、債権債務取引などの重要なデータを追跡します。銀行では、自社のアプリケーション内にレコード保管用の複雑なシステムを構築する代わりに QLDB を使用して、すべての金融取引の永続的で完全なレコードを簡単に保管できます。
Q: Amazon Quantum Ledger Database は分散型台帳ですか? ブロックチェーンサービスですか?
Amazon QLDB のテクノロジーは、ブロックチェーンや分散型台帳ではありません。ブロックチェーンと分散型台帳のテクノロジーでは、アプリケーションが単一の組織によって所有されておらず、必ずしも関係者がお互いに完全に信頼し合う必要のない、複数の関係者が関わる分散型アプリケーションの問題の解決に焦点が置かれています。一方、QLDB は、所有するアプリケーション内で完全かつ検証可能なデータ変更履歴を管理する必要のあるお客様向けの、台帳専用データベースです。Amazon QLDB では、履歴、不変性、検証可能性などの特徴を生かしながら、完全マネージド型 AWS データベースの既存知識、スケーラビリティ、使いやすさを活用できます。アプリケーションの要件に分散化や信頼されない複数の関係者が関わることが含まれる場合は、ブロックチェーンソリューションが適している可能性があります。アプリケーションで、完全かつ検証可能なアプリケーションデータ変更履歴を必要とし、信頼されない複数の関係者が関わることがない場合は、Amazon QLDB が最適です。分散型台帳またはブロックチェーンに該当するユースケースについては、「Amazon Managed Blockchain」を参照してください。
https://gyazo.com/da4df68fdd8f8ff27130bfc6cfed16a7
クエリ例
デモデータがあって簡単に試せるので手触り感つかみやすい。
https://gyazo.com/21c5fad724d5c961cc012318dda52d8e
例:joinして出力
IDはmetadataにあり、BY で取る。
非構造データもJSONクエリみたいなかんじで取れる
code: sql
select * from VehicleRegistration AS r BY r_id, Person AS p BY p_id
WHERE r.Owners.PrimaryOwner.PersonId = p_id
例:update.あるVehicleの持ち主をBrentに, cityをEverettへ。
内部ではTxが追記されている
code: (sql)
UPDATE VehicleRegistration AS r
SET r.Owners.PrimaryOwner.PersonId = '6xA6b3p7WUGJW8KAHcxENt',
r.City = 'Everett'
WHERE r.VIN = '1N4AL11D75C109151'
例:履歴を見る。さきほどの追記履歴がわかる
code:sql
SELECT * FROM history(VehicleRegistration) AS h
WHERE h.metadata.id = '3GH39wNCa9P69llXdbS2DK'
どのブロックでどう変わったかが, block noとともに一覧でわかる。https://gyazo.com/bc4b4fad7f3fcc317a58094ad11c44c9
検証
ある時点でそのドキュメントが存在していることを、markle proofで検証可能。
https://gyazo.com/96ab50b838539dd5c96507f438822c85
事前に、検証用のダイジェスト(markle rootのsnapshot)を出力しておき、検証に用いる。
code:9BYkACdUvRMGdbJG1eqweJ.195-277.ion
{"digest":"xN7Wp3QYtXAc55QKG453PDnIlpgsan8moFpI9stOrss=","digestTipAddress":"{strandId:\"9BYkACdUvRMGdbJG1eqweJ\",sequenceNo:180}","ledger":"xxxxxx","date":"2019-12-10T02:01:12.795Z"}
他AWSアカウントのledgerを指定することはできないので、まだ社内用。
データの整合性とは?
QLDB におけるデータ整合性とは、台帳のジャーナルが実際にイミュータブルであることを意味します。言い換えると、お客様のデータ (具体的には、各ドキュメントリビジョン) が、以下に該当する状態にあることをいいます。
マークルツリーの監査プルーフを使うと、台帳の全ドキュメントの履歴を確認しなくても、ダイジェストと照合することで、ジャーナル内にドキュメントリビジョンが存在するかどうかや、リビジョンが正しい位置にあるかどうかを検証できます。この検証は、リーフノードからルートまで走査する方法で行うため、この監査パス内にあるノードのハッシュを計算するだけで済みます。このプロセスには、ツリーの log(n) ノードの時間計算量があります。QLDB におけるプルーフは、特定のリーフノードハッシュ (ドキュメント) をルートハッシュ (ダイジェスト) に数学的に変換するために必要なノードハッシュの単純なリストです。
データを検証するには、台帳にダイジェストをリクエストし、後の照合に使用できるよう保存しておく必要があります。ダイジェストによりカバーされる最新のブロックより前にコミットされたすべてのドキュメントリビジョンが、ダイジェストに照らし合わせて検証できる対象となります。
export
S3にすべてのジャーナルをexport可能だった。取り込みはまだ無理
こんなノリのION形式で全データが出力される
code:ion.json {
VIN: "KM8SRDHF6EU074761",
LicensePlateNumber: "CA762X",
State: "WA",
City: "Kent",
PendingPenaltyTicketAmount: 130.75,
ValidFromDate: 2017-09-14T,
ValidToDate: 2020-06-25T,
Owners: {
PrimaryOwner: {
PersonId: "6xA6b3p7WUGJW8KAHcxENt"
},
SecondaryOwners: []
},
FirstName: "Brent",
LastName: "Logan",
DOB: 1967-07-03T,
GovId: "LOGANB486CG",
GovIdType: "Driver License",
Address: "43 Stockert Hollow Road, Everett, WA, 98203",
blockAddress: {
strandId: "9BYkACdUvRMGdbJG1eqweJ",
sequenceNo: 3
},
hash: {{VVWxpTgtwhGFLlPSnFKapvrxr6kvIOGjpsJ8vx7DnSU=}},
data: {
FirstName: "Brent",
LastName: "Logan",
DOB: 1967-07-03T,
GovId: "LOGANB486CG",
GovIdType: "Driver License",
Address: "43 Stockert Hollow Road, Everett, WA, 98203"
},
metadata: {
id: "6xA6b3p7WUGJW8KAHcxENt",
version: 0,
txTime: 2019-12-10T01:29:30.183Z,
txId: "4I9LQ9zGqrEGcFYzbWabTt"
}
}
re:invent 2019
技術的詳細
https://www.youtube.com/watch?v=ZfYDl4kaVCo
streams機能もpreview版として発表されており、気になる。
https://gyazo.com/6c5b850e32180581e52a8b0f8ff586a4
AWS managed blockchainで複数社間をつなぎつつ、社内ではQLDBを使う例
https://www.youtube.com/watch?v=bmNBD_q38XU&feature=youtu.be
ユースケース
https://www.youtube.com/watch?v=TMQuN0eqPck
nrryuya.icon >
Building system-of-record applications with Amazon QLDB - SVC218 - New York AWS Summit Slide