どうも、とがみんです。
仕事にて、データの不整合を発生させず、データの正当性を担保するための仕組みを構築するにあたって「Amazon QLDB」というAWSのサービスが有用なのでは?という話が上がったりしてたので、この記事では、AWSサービスの「QLDB(Amazon Quantum Ledger Database)」というサービスの仕組みや特徴に対する整理をしていきます。
Amazon QLDBとは?
Amazon QLDBはQuantum Ledger Databaseの略で、中央集権型フルマネージド型の台帳データベースのことです。
「台帳」とは、ある事柄を記録しておくもので、情報を確実に記録し、記録された情報が改竄されてないことが、台帳に求められる重要な要素になります。
Amazon QLDBは、書き込んだデータは不変で、改竄がされていないことを検証でき、そのデータの正当性を保証することができるデータベースになります。
顧客や監査人に対して、データの整合性を証明する必要があるケースで特に有用なデータベースです。
Amazon QLDBの仕組みについて
全体の流れについて
この図は、台帳に接続してcarsというテーブルに、INSERT(挿入)→UPDATE(更新)→DELETE(削除)を行う例を示しています。
データベースに対して操作が行われると、まずJounal(ジャーナル)に、実施された順に書き込まれていきます(①)。
Jounal(ジャーナル)に格納されたデータから、テーブルが作成され、最新の値や、過去の履歴の両方に対して、問い合わせることができます(③)。
また、Jounal(ジャーナル)に格納されたデータを直接出力したり、シケーンシャルに伝送することも可能で、イベント駆動型のワークフローの開発や、リアルタイム分析が可能になります。
Journal(ジャーナルについて)
Jounal(ジャーナル)は、データに対して意図しない変更が発生していないことを暗号技術により簡単に検証することができるトランザクションのログで、データの変更履歴は変更や削除を行うことができません。
この仕組みがQLDBの肝となる仕組みになります。
QLDBは、一つのトランザクションに対して、一つ以上のブロックをJounal(ジャーナル)に対して書き込みます。
それぞれのブロックは、ハッシュ関数 (SHA-256)を使用し、ハッシュチェーンされており、データの追加変更履歴を時系列に沿って記録されるようにし、データ変更の整合性を遡って確認したり、改竄が行われていないかを検証できるようになっています。
ハッシュチェーン:あるデータに対してハッシュ関数を繰り返し適用したもの。データの追加部分に対して、ハッシュ関数を次々に適用することで、データの追加変更履歴を時系列に沿って記録されるようにする。
Amazon QLDBの特徴
改竄耐性
Amazon QLDBは、暗号技術により、データが改竄されていないことを検証できるため、データの改竄に対して耐性があります。
リレーショナルデータベースでは、意図しないデータの変更を追跡したり、改竄されていないことを検証することは困難です。
この改竄耐性がAmazon QLDBを利用する一番のメリットかと思います。
読み書き性能
Amazon QLDBは、中央集権型のハッシュチェーンであり、分散型のAmazon Managed Blockchainと比べて、2~3倍のパフォーマンスが期待されます。
分散型のAmazon Managed Blockchainは、トランザクションを実行する際に、複数の関係者の合意を得る必要がありますが、QLDBは中央集権型の設計であるため、複数の関係者の合意を得なくともトランザクションを実行できる分、パフォーマンスが良いです。
参考:Amazon Quantum Ledger Database (QLDB) FAQs
ストリーミング機能
Amazon QLDB では、データを直接 Amazon Kinesis Data Streams にストリーミングできるため、この機能を利用すると、イベントに対して素早く対応できるため、イベント駆動型のワークフローの開発や、リアルタイムのデータ分析が行えます。
参考:クエリパフォーマンスの最適化
参考:Amazon Quantum Ledger Database (QLDB)についてご紹介!
参考:LayerX QLDBユースケース
おわりに
Amazon QLDBの仕組みについて整理してみました。
引き続きQLDBのユースケースを調べたり、実際に使いながら理解を深めていこうかと思います。
まずは、とりあえず下記の記事でAmazon QLDBのセットアップをしてみます。