NoSQLデータベースがSQLクエリ言語を提供するというのはどういうことなのか?Couchbaseに聞いてみた。同社は米国時間6月3日にカリフォルニア州サンタクララで開催した「Couchbase Connect」で、スケールアウト型のNoSQLデータベースでSQLの方言を追加することを明らかにしたのだ。
SQLの方言「N1QL」(ニッケルと読む)が、同日ベータ公開した次期版「Couchbase 4.0」に導入されている。JSONベースのドキュメントデータ向けに設計したもので、ユーザーが期待する通りのことをやってくれるものだ。ユーザーとパートナー、それにより重要なこととして開発者はこれを利用して、Couchbaseが「バケット(buckets)」をクエリできる。N1QLはSQLシンタックスを拡張して、バケットに含まれるJSONドキュメントデータのネスト化の特性とやりとりができる。
parent.child.elementシンタックスは子データに対応するだけではなく、UNNESTキーワードを利用してデータを解除できる。N1QLはバケット間、さらには同一ドキュメントにある親と子データ間の結合も可能だ。つまりN1QLの導入は代替となるシンタックスを超える意味を持つ。慣れ親しんだリレーショナルコンセプトと機能も可能にするのだ。
N1QLの機能はネスト化されたデータ向けにとどまらない。非構造化データにも対応し、たとえばバケットにある複数のドキュメントからアイテム/カラムのセットを選択し、アイテムのいくつかがドキュメントに存在しない場合はリストされない。特定のドキュメントがWHERE文の条件を満たすが、SELECT文にはアイテムが含まれないという場合は、空のドキュメント(「{}」)として表示される。
Couchbaseは専用ページでN1QLのチュートリアルやサンプルを提供しており、CouchbaseをインストールすることなくN1QLを試すことができる。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。