GQLとは
はじめに
皆さんは「GQL」という用語をご存じでしょうか。似た語感の用語には「SQL」があり、こちらは知っている方も多いとは思いますが、「GQL」は知らないという方は多いのではないでしょうか。GQLとは「Graph Query Language」の略称で、新しい標準のグラフクエリ言語の推奨名のことを指しています。この記事ではGQLの歴史やSQLとの違いについて分かりやすく紹介していきたいと思います。
そもそもGQLとは?
GQLとは、宣言型の言語であり独自の構文を持ちます。またデータベースアプリケーションの構築においてはSQLと同様の役割を果たすことが出来ます。GQLはXPath、StruQL、WebSQL、Cypher、GSQL、PGQL、G-Core、SQL / PGQといった既存の言語から大きな影響を受けています。
GQLプロジェクトのスタート
国際標準化機構(ISC)と国際電気標準会議(IEC)の第一合同技術委員会(Joint Technical Committee 1)であるISO/IEC JTC 1によって承認され、2016年からプロジェクトはスタートしました。今までの取り組みや今後に必要とされる作業量に基づき、2022年に最終バージョンが完成すると予想しています。またこのプロジェクトにはAmazon、ArangoDB、DataStax、Neo4j、Redis Graph、Optum、SAP等の様々な企業の協力もあり実現しました。
GQLプロジェクトはSQLの正誤票(ISO)編集者のスティーブン・カナン(Stephen Cannan)氏とApache Sparkプロジェクトのリードエンジニアであったステファン・プランティコウ(Stefan Plantikow)氏によって導入されました。また彼らは、GQLの初期仕様の草案にも携わっています。
グラフデータベースについて
まずGQLの役割に関わってくる3つの用語の「グラフデータベース、Property Graphモデル、Resource Description Frameworkモデル」について簡単に説明します。
グラフデータベース
グラフデータベースとは端的にいうと構造をグラフ化したデータベースのことです。下記のモデルもこのグラフデータベースの一種になります。
Property Graphモデル
プロパティ・グラフモデルは3つの要素ノード(node)、エッジ(edge)、プロパティ(property)で構成されています。ノードは頂点であり、点などで表されるエンティティーです。エッジは辺であり、ノードとノードの関係性を表しています。プロパティは属性であり、ノードとエッジの属性情報を表しています。
Resource Description Frameworkモデル
RDFモデルとはウェブ上のメタデータをに関する情報を表現するための言語です。RDFモデルには3つの要素があります。主語(subject)、述語(predicate)、目的語(object)の要素でデータを表現し、これらはトリプルと呼ばれています。
なぜGQLは必要とされたのか?
それではなぜGQLが必要とされたのかを説明していきます。データモデリングの新しい形としてグラフを使ってデータを管理するアプローチが開発されてきました。このようなアプローチではデータはグラフとしてモデル化し、データそれぞれをグラフの頂点で表しています。2つのデータ間の関係性をエッジとしています。
このようにグラフによりデータを取り扱うことで以下のようなメリットがあります。
複雑な構造のデータを取り扱いやすい
グラフモデルは、階層構造や複雑な構造のデータ群の表現を得意としています。これはテーブルの正規化を必要とするリレーショナルモデルにはない利点といえるでしょう。
データ分析を効率的に行うことができる
グラフモデルは到達可能性クエリや最短パスクエリなどのデータ間の分析を得意としています。
ここまでグラフモデルのメリットを色々と紹介してきましたが、1つだけ問題がありました。RDFモデルはWorld Wide Web Consortium(W3C)によって標準化されていましたが、Property GraphモデルはリレーショナルデータベースシステムのSQLのようなクエリ言語がありませんでした。そこでGQLはクエリ言語として開発されることになりました。
GQLとSQLの違い
GQLのクエリは必ず「SELECT *」から始まります。そしてSQLと違いGQLはJOIN句による結合を行うことはありません。
まとめ
今回の記事ではGQLとはどういったものかというのを簡単にではありますが紹介してきました。今はリレーショナルデータベースの方がメジャーですが、GQLやグラフデータベースを調べていくうちに様々なメリットを知ることで、今後はこちらも浸透していくであろうと感じました。最後までお読みいただきありがとうございました。