Skip to content

Instantly share code, notes, and snippets.

@kaznum
Last active March 24, 2021 23:29
Show Gist options
  • Save kaznum/14d9b399190405c51eff9b94ecf68d58 to your computer and use it in GitHub Desktop.
Save kaznum/14d9b399190405c51eff9b94ecf68d58 to your computer and use it in GitHub Desktop.
Amazon QLDB

Amazon QLDB

Amazon Quantum Ledger Database (QLDB) 透過的でイミュータブル、かつ暗号的に検証可能なトランザクションログを提供するフルマネージド型台帳データベース。ログは信頼された中央機関が所有。

https://aws.amazon.com/jp/qldb/ https://ap-northeast-1.console.aws.amazon.com/qldb/home?region=ap-northeast-1#getting-started

特徴

  • アプリケーションデータの各変更を追跡し、完全で順番に並んだ変更履歴を長期間維持するジャーナルを使用

    • ジャーナルなので追記型(削除、変更はできない)
    • RDBやブロックチェーンではない
  • 高い性能とスケーラビリティ

    • QLDB は集中型の設計(BCと違い分散させない)
      • 一般的なブロックチェーンフレームワークの台帳よりも 2~3 倍多くのトランザクションを実行可能
      • 複数の関係者の合意を得なくてもトランザクションを実行可能(BCではない)
        • 信頼されない複数の関係者がアクセスするようなアプリはBCのほうが良い
  • サーバーレス

  • 可用性

    • AZ内および リージョン内の 3 つの AZ 内で、データの複数のコピーをレプリケート
  • 暗号的に改ざんの検証可能

    • QLDB Data Verification
  • PartiQL

    • 新しいオープンソースの SQL 互換クエリ言語
  • ストリーミング機能

    • Kinesis Data Streamsにストリーミングできる→イベント駆動型のワークフローが採用可能

QLDBはジャーナルファースト

ジャーナルに変更を「追記」してから、状態の変化をステートデータベースに書き込んでおく。 さらに、ステートデータベースは現在の状態情報と過去のバージョン情報を保持している

ある時点でのデータを簡単に取得できる

利用ケース

  • 銀行取引の貸方と借方の履歴追跡
  • 保険金請求のデータ来歴の検証
  • サプライチェーンネットワークの商品移動の追跡
  • ・・・

クエリ

参照

SELECT v.VIN, r.LicensePlateNumber, r.State, r.City, r.Owners
FROM Vehicle AS v, VehicleRegistration AS r
WHERE v.VIN = '1N4AL11D75C109151'
AND v.VIN = r.VIN

更新

UPDATE VehicleRegistration AS r
SET r.Owners.PrimaryOwner.PersonId = '294jJ3YUoH1IEEm8GSabOs'
WHERE r.VIN = '1N4AL11D75C109151'

履歴の参照

SELECT h.data.VIN, h.data.City, h.data.Owners
FROM history(VehicleRegistration) AS h
WHERE h.metadata.id = 'ADR2LQq48kB9neZDupQrMm' 

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment