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
関連記事
-
VPC新コンソールの日本語UIでルートテーブル編集時のエラー(2021/6/10)が発生したのでフィードバックを送った
VPCの新コンソールがリリースされていたので使って作業してましたところ、こんなエ …
-
CloudTrailイベントのコストしか発生していないリージョンのコスト発生源を調査しました
調査のきっかけ ふと検証用AWSアカウントのCostExplorerを見てました …
-
Amazon Aurora Serverlessを使い始めてみました(1日経過しての課金結果も)
祝!!! Amazon Aurora ServerlessがGAになりました! …
-
Amazon API GatewayのIAM認証の動作を確認しました
API GatewayのIAM認証は、IAMユーザーが実行できるように認証する、 …
-
[JapanTaxi] Athena 指向アナリティクス 〜真面目に手を抜き価値を得よ〜(AWS Summit Tokyo 2017)を聞いてきました
Athenaのユースケースとして聞きにいきましたが、最近触ってるRe:dashも …
-
CloudWatch LogsメトリクスフィルタでNginxのaccess_logから転送バイト数をモニタリングする
ユーザーガイドのApache ログからのフィールドの抽出を見てて、これ、Ngin …
-
Amazon EC2のスクリーンショットとは
ドキュメント見てたらAmazon EC2でスクリーンショットって機能があったので …
-
EC2 Instance Connect向けのセキュリティグループのソースにプレフィックスリストを
EC2 Instance Connect、便利ですね。 キーペア不要で、EC2イ …
-
Amazon Aurora Serverless のログをCloudWatch Logsに出力する
WordPress W3 Total Cache のDatabaseCacheを …
-
AWS Organizationsで組織全体のAWS CloudTrailを有効にしました
Organizationsのサービスメニューから、CloudTrailを選択して …