隔週連載groonga

最終回 groongaの今と未来

この記事を読むのに必要な時間:およそ 3 分

近い未来の予定

ここまでは現在の最新情報の紹介でした。ここからは,これからの近い未来の予定について紹介します。

groongaの未来

groongaは約5年前の2009年の1月にSennaから名前を変えました※2)⁠これは,大幅に内部構造を刷新するためです。

例えば,Sennaの頃はデータストア機能は持たず,全文検索インデックス関連の機能だけを提供していましたが,groongaにはカラムベースのデータストア機能を実装しました。クエリ実行エンジンもSchemeベースからスタックベースの独自処理系に書き換えました。あわせて,クエリ言語もSchemeベースからECMAScriptベースの構文にしました。

そんなSennaから現代風に大成長したgroongaですが,5年も経つとgroongaでの制限が足かせになるケースがちらほら見えてきました。そこで,groongaのコア部分を再度現代風にブラッシュアップするべく開発しているプロダクトがあります。それがgrnxx(⁠ぐるんたす」と読む)です。

grnxxは,レコードIDのサイズなど現在のgroongaの制限の多くを撤廃した上でさらに高速に動作するように設計・実装を進めています。近い未来,groongaのコア部分はgrnxxを使うようになる予定です。プロダクト名は変わらずgroongaで,APIレベルでの互換性も(それほど)壊れない予定ですが,データベースのフォーマットは変わります。そのため,コア部分がgrnxxに置き換えられたあとにアップデートするときはデータベースを再構築する必要があります。

grnxxのもっと詳しい情報は後述する「groonga勉強会」で開発者の矢田さんから聞ける予定です。grnxxの詳細が気になる方はぜひ参加を検討してください!

※2
詳細は第1回の記事を参照してください。

mroongaの未来

最近のmroongaは前身であるTritonnをリプレースできる機能・品質を目標として開発を進めてきました。そして,その目標が達成されているというのは第6回第7回第10回の記事を読めばわかるはずです。

近い未来のmroongaの目標は「MariaDBへのバンドル」です。先日リリースされたMariaDB 10.0.4からSpiderストレージエンジンがバンドルされるようになりました。SpiderはMySQL/MariaDBにクラスター機能を追加するプラグインで,mroongaの開発チームの1人でもある斯波さんが開発しています。Spiderとmroongaを組み合わせることで複数のサーバで大きなデータの全文検索を実現することができます※3)⁠

第9回の記事でも紹介しましたが,mroongaは簡単に導入できることを大事にしています。mroongaもMariaDBにバンドルされるようになれば,MariaDBをインストールするだけでSpiderもmroongaも揃い,これまでより簡単に導入できます。

MariaDBにバンドルされるためにはプロダクトの品質をあげる必要があるため,そこに注力していきます。

※3
ただし,MariaDBにバンドルされているSpiderはまだ全文検索に対応していません。

大規模データとgroongaの未来

Spiderとmroongaを組み合わせることにより今でも大規模データを全文検索できる仕組みはあります。しかし,SQLで検索することになるため,苦手なクエリもあります。例えば,ドリルダウン検索(ファセット検索)です。このあたりはgroongaの方に分があります。

groongaでも大規模データを扱えればより高度な検索ができるのに…そんな野望を実現するためにdroongaというプロダクトを開発しています。droongaは「distributed groonga」⁠分散groonga)の略で,⁠どぅるんが」と読みます。読みにくいですね。

droongaは,fluentdのプラグインとして実装されている分散検索エンジンモジュールと,HTTPやSocket.IOなど使いやすいプロトコルで分散検索エンジンモジュールにアクセスするためのAPIを提供するAPIサーバモジュールで構成されています。

droongaのモジュール

droongaのモジュール

分散検索エンジンモジュールは直接groongaのデータベースを操作します。ここはRubyで実装しているのでrroongaを使っています。

APIサーバモジュールはnode.jsで実装しています。ここは単にAPIの変換だけを行い,groongaのデータベースには触りません。そのため,分散検索エンジンモジュールと同じRubyではなく,多くの同時接続をさばくのが得意なnode.jsを選択しました。

droongaのモジュールの実装言語

droongaのモジュールの実装言語

droonga,気になってきましたか? droongaについても「groonga勉強会」で開発者の森さんから話を聞ける予定です。droongaの詳細が気になる方はぜひ参加を検討してください!

いい肉の日に第4回groonga勉強会を開催

groonga開発チームは毎月肉の日(29日)にgroongaをリリースし,毎年いい肉の日(11月29日)にgroonga勉強会を開催しています。もちろん,今年も全文検索エンジンgroongaを囲む夕べ 4と題してgroonga勉強会を開催します。すでに参加登録は始まっています!

前述のとおり,grnxxやdroongaの話も聞けますし,mroongaの最新情報やgroongaを商用利用するときに有用な情報も聞けます。また,発表の公募もします。groongaに関する話題ならなんでも構いません。例えば,事例紹介や自作のgroonga関連プロダクトの紹介などでもよいです。先着順で採択するため,ネタがある人は急いで応募してください! 詳細はイベントページの説明を参考にしてください。

今年のgroonga勉強会は例年より2時間早い17:00開始となっていることに注意してください。1ヶ月以上先の話なので,今のうちから調整をして17:00から参加できるように準備しておいてください。

今年はDeNAさんに会場を提供していただきます。ありがとうございます。懇親会も同じ会場で開催できる予定です。ぜひ,懇親会まで参加してgroonga関連情報をたくさん共有してください!

まとめ

最終回ということでこれまでの記事の内容を参照しつつ,最新のgroonga/mroonga/rroongaの情報とこれからのgroongaの予定を紹介しました。連載は今回で終了しますが,groonga勉強会でみなさんに会えることを楽しみにしています!

この連載は「読者の皆さんがgroongaを使いたくなる!」を目標としていました。もし,この連載を読んでgroongaを使いたくなったという人は,groonga勉強会などなにかの機会にでも,⁠この連載を読んでいたよ」とか,⁠連載を読んでgroongaを使い始めたよ」と声を掛けてもらえるとうれしいです。

それでは,groongaでガンガン検索してください!

著者プロフィール

須藤功平(すとうこうへい)

フリーソフトウェアプログラマで株式会社クリアコード代表取締役(2代目)。groongaおよび関連プロジェクトの開発に深く関わっている。最近は開発をしながらgroonga-devメーリングリストでせっせと回答している。