Amazon Quantum Ledger Database(QLDB)でサンプル台帳の作成と検証
Quantum Ledger Database(QLDB)を触ったことなかったので、デベロッパーガイドのチュートリアルをやりました。
Amazon QLDB コンソールの使用開始方法
目次
台帳の作成
[台帳の作成]を押下しました。
自動的に複数のAZで複数のコピーを持っているということなので、VPCやアベイラビリティゾーンを指定する必要はありませんでした。
アクセス権限と暗号化の設定のみでした。
サンプルデータのロード
[チュートリアルの開始]を押下しました。
[サンプルデータをロード]を押下して数分すると、「サンプルデータがロードされました」と表示されて完了しました。
サンプルデータは車両の所有者変更履歴のようです。
PartiQLクエリの実行
PartQLエディタでサンプルクエリを実行してみました。
車両のマスタです。アウディです。
車両登録テーブルとの結合クエリです。
OwnerにGJMmrMsneiS8zTDBTGdoseが登録されています。
1 2 3 4 5 6 |
select p.data from _ql_committed_Person AS p, VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' and r.Owners.PrimaryOwner.PersonId = p.metadata.id |
GJMmrMsneiS8zTDBTGdoseは_ql_committed_PersonというPersonテーブルのコミット済みビューで検索できるidのようです。
結果は、Raul Lewisさんがアウディの所有者とわかりました。
このql_committedというビューを作成する手順はサンプル作成手順にはなかったので、自動的にできているものらしい。
ということで他のテーブルにもちゃんとありました。
1 2 |
select * from _ql_committed_Vehicle |
次のサンプルはガイドでは、l.LicenseNumberでしたが、そんなフィールドはないので多分l.LicensePlateNumberが正しそう。
1 2 3 |
SELECT * FROM Person AS p, DriversLicense AS l WHERE p.GovId = l.LicensePlateNumber |
台帳ドキュメントの更新
1 2 3 |
SELECT metadata.id FROM _ql_committed_Person AS p WHERE p.data.FirstName = 'Brent' and p.data.LastName = 'Logan' |
Brent Loganさんのidを調べて。
6xA6z2YUkOtBmu1pypWNWyでした。
1 2 3 4 5 |
UPDATE VehicleRegistration AS r SET r.Owners.PrimaryOwner.PersonId = '6xA6z2YUkOtBmu1pypWNWy', r.City = 'Everett' WHERE r.VIN = '1N4AL11D75C109151' |
所有者と都市を変更しました。
1 2 3 4 5 6 |
select p.data.FirstName, p.data.LastName, r.City from _ql_committed_Person AS p, VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' and r.Owners.PrimaryOwner.PersonId = p.metadata.id |
変更が確認できました。
1 2 3 |
SELECT metadata.id FROM _ql_committed_Person AS p WHERE p.data.FirstName = 'Alexis' and p.data.LastName = 'Pena' |
次にAlexis Penaさんのidを調べました。
CxlpVdeZWIz15q9wPXGMi0でした。
1 2 3 4 5 |
FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' INSERT INTO r.Owners.SecondaryOwners VALUE { 'PersonId' : 'CxlpVdeZWIz15q9wPXGMi0' } |
共同所有者として追加しました。
1 2 3 4 5 6 |
select p.data.FirstName, p.data.LastName from _ql_committed_Person AS p, VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' and r.Owners.SecondaryOwners[0].PersonId = p.metadata.id |
SecondaryOwnersが配列のようなので、確認SQLどうするんだろう?って思って素直に試したらこれでできました。
Alexis Penaさんが共同所有者になったことが確認できました。
リビジョン履歴の表示
1 2 3 |
SELECT r_id FROM VehicleRegistration AS r BY r_id WHERE r.VIN = '1N4AL11D75C109151' |
ドキュメントのID(5EhcY0X2q4c9VD6gAUjxK1)を取得しました。
BY r_idとすると取得できるようです。
「コミット済みビューにクエリを実行する以外に、ドキュメントidを取得する方法として」と書いていたので、コミット済みビューも確認してみます。
1 2 3 |
SELECT v.metadata.id FROM _ql_committed_VehicleRegistration as v WHERE v.data.VIN = '1N4AL11D75C109151' |
こういうことですか。なるほど。
1 2 3 4 5 6 |
SELECT h.data.City, h.data.Owners.PrimaryOwner.PersonId, h.data.Owners.SecondaryOwners[0] FROM history(VehicleRegistration) AS h WHERE h.metadata.id = '5EhcY0X2q4c9VD6gAUjxK1' |
そして履歴はhistory(VehicleRegistration)で確認するのですね。
履歴が確認できました。
1 2 3 4 |
SELECT VALUE h.metadata FROM history(VehicleRegistration) AS h WHERE h.metadata.id = '5EhcY0X2q4c9VD6gAUjxK1' |
履歴のメタデータが確認できました。
台帳内ドキュメントの検証
[ダイジェストを取得]を押下しました。
1 2 3 4 |
SELECT r.metadata.id, r.blockAddress FROM _ql_committed_VehicleRegistration AS r WHERE r.data.VIN = '1N4AL11D75C109151' |
ドキュメントIdとブロックアドレスを取得しました。
台帳を選択、ドキュメントId、ブロックアドレスを入力、ダイジェストファイルのアップロードをして、[検証]を押下しました。
一致したことが検証されました。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
DynamoDB IAMポリシーで特定項目だけを許可する
検証記録です。 対象テーブル 書籍のサンプルで作ったこちらです。 所属バンドの楽 …
-
-
Amazon Keyspacesのキースペースを作成してみました
Amazon Keyspaces(Apache Cassandra互換のマネージ …
-
-
Active Directory認証でAWSマネジメントコンソールにSSO
こちらの2つのサイトを参考にすすめました。 Active Directory資産 …
-
-
AWSアカウント内のLambda関数を削除するLambda(Python)
やりたいこと 特定のAWSアカウントの特定リージョンのAWS Lambda関数を …
-
-
S3署名付きURL(GetObject)生成後にオブジェクトを上書きアップロードしたら
ダウンロードリクエストを実行したタイミングのオブジェクトがダウンロードされるので …
-
-
CloudFormationスタックポリシーでスタック更新を防止する
CloudFormationのスタックにスタックポリシーを設定することによって、 …
-
-
AWS Firewall Managerを設定して結果を確認
CloudFront対応のポリシーとして作成したかったので、Globalを選択し …
-
-
EC2ユーザーデータからメタデータを取得してRocket.Chatで80ポートを使用する
Rocket.Chatのデフォルトポート番号は3000です。 80を使うようにす …
-
-
Amazon Elasticsearch ServiceにMySQLのデータを投入してkibanaで可視化してみる
MySQLのデータの可視化にAmazon Elasticsearch Servi …
-
-
WordPress W3 Total Cache のDatabaseCacheをAmazon ElastiCacheのmemcachedに格納する
このブログのアーキテクチャは現在こちらです。 データベースは、Amazon Au …