はじめに
こんにちは。孔子の80代目子孫兼技術4課の孔です。急に寒くなりましたね!ただでさえ全然外に出てないのに、これで完全に引きこもりな毎日を過ごしてます。引きこもり生活が続いてるのは、やっと入手できたNintendo Switch三昧になったからでなく、本当にコロナと寒波が怖いからです。本当に!
今回のブログは、シリーズとなります。PartiQLに関する入門知識から活用方法まで、お伝えできればと思います。Parti「QL」からおそらくおわかりになられた方が多くいらっしゃるかと思いますが、こちらのものはデータベースのクエリの際に使われるものとなります。ですので、AWS上でデータベースを使っている方であれば有用な情報がいくつかもらえるのではないかと思います。
本シリーズはPartiQLの知識が全くない方であってもスラスラ読めるように書く予定ですが、データベースに関する知識は多少あればよりわかりやすいような内容となります。例えば、AWS上にデータベースサービスが何があるのか・SQLを書けるなどとなります。しかし予備知識が全くなくても読めるようになるべく詳しく説明しますので、ご安心ください。
それでは、はじめましょ!
PartiQLの概要
Amazon QLDBのFAQの中に、このようなFAQがあります。
Q: PartiQL とは何ですか? Amazon QLDB はどのようにこれをサポートしていますか?
Amazon QLDB では PartiQL を用いてデータにアクセスし、操作できます。PartiQL は QLDB ドキュメント指向のデータモデルへの SQL 準拠のアクセスをサポートする新しいオープン標準のクエリ言語で、このモデルには半構造化およびネストされたデータを含みながら、どのようなデータソースからも独立しています。PartiQL の詳細についてはこちらをご参照ください。(引用先 : https://aws.amazon.com/jp/qldb/faqs/ )
要は、「ドキュメント指向のデータモデルへの SQL 準拠のアクセスをサポートする新しいオープン標準のクエリ言語」がPartiQLとなります。それでは、一つずつみていきましょう。まず定義のところで、「ドキュメント指向のデータモデル」とはなんでしょうか。以下の表をご覧ください。
(table : hr.employees) Id name title ---- ------------- ---------------- 3 Bob Smith null 4 Susan Smith Dev Mgr 6 Jane Smith Software Eng 2
データベースを学んだことがある方にはおなじみのあるテーブルかと思います。そうでなくても、Excelを触るとデータをこのように保存していますね。各列には格納する属性を定義し(社員番号や社員名、役職など)、各行には一社員のデータを記載していきます。これに対して、ドキュメント指向のデータモデルはデータを以下のように保存します。
{ "hr" : { "employees": [ { "id": 3, "name": "Bob Smith", "title": null }, { "id": 4, "name": "Susan Smith", "title": "Dev Mgr" }, { "id": 6, "name": "Jane Smith", "title": "Software Eng 2"} ] } }
このように、一つの列=一つのカッコ形でデータを保存するようなものがドキュメント指向のデータモデルとなります。このようなドキュメント指向のデータモデルのデータをクエリする際に、SQL文でクエリができるようにするのがPartiQLとなります。例えば、Select文を使ってデータを取得する際に、select id from employees
(employeesテーブルからIDを取得する)とクエリしたとします。一般的なRDBなら、IDの列を読むんだ!と直感的にわかりますね。でもドキュメント指向データモデルだったら…?ちょっと悩ましいです。それをユーザーに意識させずにSQL文をRDBだけでなくドキュメント指向データモデルでも使用できるようにしてくれるのがメリットですね!
それでは、ここで一つ疑問があります。なんでRDBでなくドキュメント指向データモデルなんだ?どんなメリットがあるの?というところです。ぱっとみて、RDBのような表の形でデータを保存した方が直感的にもわかりやすいですね。でも、ドキュメント指向のデータモデルには実はいろいろなメリットがあります。それは、次回のブログをお楽しみに!