はじめに
本記事では、Couchbase Serverの各種サービスの中から、Queryサービス(Quuery Service)について解説します。
Queryサービスの役割を理解することは、Couchbase Server管理者にとって必要であるばかりでなく、JSONデータベースの検討において、適切なテクノロジーを選択する上でも重要です。
Couchbase Serverは、ドキュメント指向型に分類されるNoSQLでありながら、N1QLというSQLをJSONに対して拡張したクエリ言語を用いて、JSONデータに対するクエリを実行することができます。
本記事を読むことによって、Queryサービスの内部機構について理解を深めることにより、N1QLについて、より具体的なイメージを持っていただければ幸いです。
Queryサービスとは
Queryサービスは、N1QLクエリ言語によるクエリをサポートします。
Queryサービスの構成要素
Queryサービスは次の3つの要素から構成されています。
- リスナー
- クエリプロセッサ
- データストア
リスナー
クエリ要求を受信します。
クエリプロセッサ
有効なステートメントであるかどうかを判断するために、受信されたクエリにパーサーを適用します。また、利用可能な実行パスを評価するオプティマイザーを用いて、待ち時間が最も短いパスを決定します。さらに、決定された待ち時間が最も短いパスを使用によってクエリ実行プランを生成します。計画を一連のオペレーターにまとめます。実行エンジンは、オペレータを受け取り、それを実行します。
データストア
データソースへのアクセスを提供します。
(図にある通り、Couchbase Serverストアは、Couchbase Serverのデータ、インデックス、認証情報を処理するために使用されます。また、他のデータストアとして、ローカルファイルシステム等も含まれます。)
クエリの実行
Queryサービス内部の処理順序と、他のサービスとの関連を以下に示します。
- クエリプロセッサは、解析ルーチンを実行して、リクエストされたステートメントを検証の上、実行プランを作成します。
- 次に、Indexサービスにアクセスして、関連するインデックスに対してスキャン操作を実行します。
- 次に、Dataサービスにアクセスしてフェッチ操作を実行し、返されたデータを結合操作で使用します。
- Queryサービスは、Filter、Aggregate、Sortなどの追加の処理を実行して操作を続行します。
上図の通り、可能な場合、処理は並行で実行されます。
最後に
本記事の内容が、Couchbase Server管理者の方だけでなく、JSONデータベースを検討されている方にも、活用いただけるようであれば幸いです。
一つの記事で、全体を敷衍することは不可能ですが、適宜、下記の関連情報を参考としていただきますよう、お願いします。
関連情報
NoSQL/JSONデータベースCouchbase理解・活用へのロードマップ