SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

最新イベントはこちら!

Enterprise IT Women's Forum

2025年1月31日(金)17:00~20:30 ホテル雅叙園東京にて開催

Security Online Day 2025 春の陣(開催予定)

2025年3月18日(火)オンライン開催

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

EnterpriseZine(エンタープライズジン)

EnterpriseZine編集部が最旬ITトピックの深層に迫る。ここでしか読めない、エンタープライズITの最新トピックをお届けします。

『EnterpriseZine Press』

2024年秋号(EnterpriseZine Press 2024 Autumn)特集「生成AI時代に考える“真のDX人材育成”──『スキル策定』『実践』2つの観点で紐解く」

NoSQLでSQL!? Couchbase Server - N1QLハンズオン!

N1QL入門編


 前回は、Couchbase SDKライブラリを利用したプログラムのコーディングを開始し、Couchbase Serverへ接続して、カウントを集計する簡単なN1QLを実行しました。今回はN1QLならではの、"ARRAY", "UNNEST", "JOIN"を利用したクエリや、グローバルセカンダリインデックス(GSI)を利用したクエリの高速化をご紹介します。

 ハンズオンの内容でご不明な点や、Couchbaseに関するご質問は、FacebookのJapan Couchbase User Group、もしくは、coucchbase@couchbase.comへメールでお問い合わせください。

祝! Couchbase 4.0正式リリース!

 2015年10月6日、遂に強力なN1QLクエリ言語を搭載したCouchbase Server 4.0正式版がリリースされました!

 本連載をご覧の皆さん、今まさにN1QLを使って、スケーラブルかつ柔軟で迅速に成長できる次世代のシステムを開発する時がやってきました。

 是非ダウンロードして、色々なプロジェクトにご活用ください!

http://www.couchbase.com/
http://www.couchbase.com/

アプリケーション開発者がNoSQLに求めるものとは?

 アプリケーション開発者の皆様は、NoSQLに対して、優れたパフォーマンスとスケーラビリティ、シンプルなデータ集計、モバイルやWebアプリケーションと統合できるモダンなツールセットを求めているでしょう。

 N1QLの登場以前でも、Couchbase ServerではView(Map/Reduce)を駆使し、JSONドキュメントに対するクエリや集計機能を開発することができます。しかし、Map/Reduceは特定の処理には適しているものの、複数項目での検索や、アドホックなクエリなどの処理を実装するためには記述性が十分ではありません。また、JOINが行えないため、理想的ではない形でデータを重複させ、利用できるクエリモデルに適合させる対応を行うことがしばしばありました。

 N1QLはSQLをドキュメント型データに対して拡張した新しいクエリ言語です。SQLに加えて、以下の特徴があります。

  •  ネスト構造、配列に対応
  •  スキーマはオプショナルで一致する必要はない
  •  クラスタ上での分散処理

 SQLと比べて最も重要な違いは、データモデルです。SQLでは行列のテーブル構造を扱いますが、N1QLはJSONを扱います。このため、すべてのデータが特定のスキーマに一致する必要はありません。また、データのフィルタリングもJSONに最適化されており、ドット(.)や、カギ括弧([ ])を利用してネスト構造や配列の子要素にアクセスできます。また、値の有無を判定する"IS NULL"に加えて、項目が存在するかを判定する"IS MISSING"が追加されていたり、配列内の要素で絞り込むための、"ANY", "SOME", "EVERY"といった演算子も存在します。

高い記述性を持つ宣言的なクエリ言語

 クエリ言語を評価する際には、三つの重要な要件があります。

 まずは、そのクエリ言語がどれだけ表現力を持っているのか。これは言語の制限を克服するためにたくさんのカスタムコードを記述することなく、取得したい結果をうまく表現できるか、ということです。

 そして、その言語が宣言型か命令型かを評価するべきでしょう。宣言型言語はシステムに何が欲しいかを伝えるだけで、それを効率的に実行するために複雑な処理がどのように実行されるかを意識する必要がありません。

 これらに加えて重要な要件として、言語を取り囲むエコシステムがどれだけ成熟しているか、があります。これはその言語をサポートするアプリケーションやツールのエコシステムだけでなく、どれだけその言語に精通したユーザやデベロッパーコミュニティが存在するかも含まれます。

 SQLはこれらの特徴を持ち、データベースへのクエリ言語として数十年間、利用され続けています。N1QLはクエリ言語として完成度の高いSQLをベースに、JSONを扱えるように拡張されています。

 NoSQLデータベース製品として、複数のサーバで構築した分散環境で動作するという点にも注目です。Couchbase Server 4.0からは、KVSとしてデータ入出力を担当するData Service、保存されたJSONドキュメントのインデックスを集中管理するIndex Service、そしてN1QLの実行を担当するQuery Serviceという三つのサービスを利用できます。

 これらのサービスはそれぞれ異なる性質を持っています。例えば、Deta Serviceはサーバを追加することでリニアにスケールアウトしますが、Index Serviceはインデックスが分散してしまうとクエリのオーバヘッドが大きくなるため、より高スペックなマシンに集約して管理するのが理想的です。

 N1QLを実行すると、Couchbase Serverクラスタが最適な方法でクエリを実行します。クエリを解析し、実行計画を作成して、幾つかのパイプラインに分割され、クラスタ内で実行されます。

 N1QLやグローバルセカンダリインデックス(GSI)をはじめとする、Couchbase Server 4.0の新機能については、先日行われたCouchbase Live Tokyoでの発表資料、What's new in Couchbase Server 4.0 (日本語)もご参照ください。

次のページ
エクササイズの準備: プロジェクトのインポートとアプリケーション起動の確認

この記事は参考になりましたか?

  • Facebook
  • X
  • Pocket
  • note
NoSQLでSQL!? Couchbase Server - N1QLハンズオン!連載記事一覧

もっと読む

この記事の著者

河村康爾(カワムラコウジ)

 Couchbase Japan株式会社 前職ではHadoopやNoSQLデータベースを利用したシステム開発を担当。Japan Couchbase User Groupのリーダを経て2015年より現職。ソリューションエンジニアとして製品説明、提案、導入支援、国内でのCouchbase公式トレーニングなど幅広い分野で活躍。マニュアルの和訳ブログ記事も執筆中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/7360 2015/10/28 14:15

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング