Help us understand the problem. What is going on with this article?

OSSデータベース調査 サーチエンジン編

More than 1 year has passed since last update.

はじめに

OSS データベースを調査の際に、DB-Engines Ranking のトップ20にサーチエンジンが3つもランクインしています。
私が以前、REGZA や VARDIA の 全文検索エンジンを開発していたことと、近年、サーチエンジンの注目度は高いことから動向が気になっていました。

そこで、今回は各種 OSS サーチエンジンについてライセンス、サポート、導入実績、コミュニティの視点からまとめてみました。

OSS_DBRanking4SearchEngine.jpg

調査対象となる OSS サーチエンジンについて

OSS サーチエンジンである Elasticsearch、Solr、Sphinx について調査してみました。

OSS_SearchEngineRanking.jpg

RDBMS、NoSQLデータベースについては、OSSデータベース調査 RDBMS編OSSデータベース調査 NoSQLデータベース編をご覧下さい。

Elasticsearch

Elasticsearchは、オープソースの高スケーラブルな全文検索および分析エンジンです。大容量のデータをすばやく、ほぼリアルタイムで保存、検索、分析できます。通常、検索の機能と要件が複雑なアプリケーションを強化する基礎となるエンジン/技術として使用されます。構造型、非構造型、地理情報、メトリックなど、多様なタイプの検索に対応しています。
全文検索のための有限状態トランスデューサを使用した転置インデックスや、数値データや地理データを格納するためのBKDツリー、分析用のカラムストアが実装されています。

基本情報

項目 内容
ホームページ https://www.elastic.co/products/elasticsearch
最新バージョン Version: 6.5.4 (2018-12-19)
開発言語 Java
動作環境 Java 8以降が必要。Oracle JDKバージョン1.8.0_131以上のバージョンの使用を推奨しています。
参照 : Set up Elasticsearch
CPU:マルチコアのプロセッサを推進
メモリ:64GB以上を推奨。32GB及び16GBでも動作可
参照 : Hardware
OS:CentOS/RHEL 6/7, Oracle Enterprise 6/7, Ubuntu 14/16/18, SLES12, openSUSE, Debian 8/9, Windows Server 2012/2016
参照 : Support Matrix
ライセンス Apache License Version 2.0
https://github.com/elastic/elasticsearch
特徴 HTTP WebインターフェイスとスキーマフリーのJSONドキュメントを備えており、さまざまなユースケースに対応できる分散型RESTful検索が可能です。スケーラビリティに優れたマルチテナント対応のフルテキスト検索エンジン機能を提供します。
Elasticsearchは、特に、検索速度や分析柔軟性に優れています。強力な検索機能をシンプルに利用でき、データ蓄積/分析/可視化環境を容易に構築できます。
高度なリアルタイム分析、大規模分散、高可用性、マルチテナンシー、全文検索、ドキュメント指向、スキーマフリー、RESTfulAPI、データ保護機能を特徴とします。
参照 : オープンソースの検索エンジン/Elasticsearchとは
適している利用シーン 大容量のデータをほぼリアルタイムで保存、検索、分析が必要なシステム
例えば、顧客が販売製品を検索できるオンラインWebストア、ログデータやトランザクションデータの解析。
参照 : Elasticsearchリファレンス [5.4] » 始めてみよう
適していない利用シーン トランザクションを必要とするようなシステム
参照 : Elasticsearchでアプリを作ってみた。~メリットとデメリットを考える

開発情報

項目 内容
開発主体 Elastic
開発体制 Contributor 943名。Contributor License Agreementを締結する必要有ります。
参加企業 Elastic
リポジトリ https://github.com/elastic/elasticsearch
開発コミュニティ 機能追加リクエストやバグレポートはGitHubのIssuesで話し合われます。
https://github.com/elastic/elasticsearch/issues
開発コミュニティ活動状況 月間 約240件のソースコード・コミット
https://github.com/elastic/elasticsearch/commits/master
月間issues更新 約200件
https://github.com/elastic/elasticsearch/issues

サポート情報

項目 内容
コミュニティサポート 各種フォーラムメーリングリストでサポート
コミュニティ活動状況 週間 240件のTopic投稿有り
https://discuss.elastic.co/c/elasticsearch
サポート企業 Elastic
サポートメニュー/費用 Elasticがサブスクリプションライセンスでサポートされている。価格は問い合わせ。
参照 : サブスプリクション
また国内のパートナー企業が導入、技術サポート
参照 : 国内パートナー企業一覧

歴史

項目 内容
開発開始時期 2010年 Shay Banonが開発開始
開発の経緯 2010年 Shay banonが最初のElasticsearchを開発しOSS化。「ユーザが、もっと簡単に、本当に欲しいものを手に入れられるように」をコンセプトに開発
2012年 Elastic社を設立。現在、32ヶ国に渡る開発者と、100ヶ国を超えるコミュニティのメンバーがいます。
参照 : Open Source Search & Analytics Elasticsearch
最近のメジャーリリース履歴 2017-11-15 Version 6.0.0 : Cross Cluster Searchなど
2017-12-01 Version 6.1.0 : Shrink Index API、composite aggregationなど
2018/01/08 Version 6.2.0 : SAMLサポート、Rank Evaluation APIなど
2018-06-13 Version 6.3.0 : X-Pack のデフォルト化、SQL 対応、Rollup、Java10 対応
2018-08-23 Version 6.4.0 : Kerberos 認証、FIPS 140-2 対応
2018-11-14 Version 6.5.0 : クロス・クラスター・レプリケーション、ODBC ドライバ、Java 11 対応
参照 : Release Notes
リリース頻度 年間 約35回 リリース
https://github.com/elastic/elasticsearch/releases

適用状況

項目 内容
適用システム 日経電子版の記事検索、ソフトバンク システム基盤本部のIT運用管理など多数
参照 : 導入事例
AWS の Amazon Elasticsearch Service で利用
参照 : Amazon Elasticsearch Service の機能
適用数
OEMパートナーが多数
参照 : OEM, MSP, and CSP Partners
適用企業 ソフトバンク、富士通、星野リゾート、マイクロソフト、日本経済新聞社、Lineなど
参照 : 導入事例

Slor

Solrは、Apache Luceneで非常に高速な、人気のある、オープンソース・エンタプライズ企探索プラットフォームです。Solrは、高信頼性、スケーラブル、フォルトトレラント、分散インデックスの提供、レプリケーション、ロードバランス・クエリ、自動フェイルオーバとリカバリ、集中化された設定などの特徴があります。

基本情報

項目 内容
ホームページ http://lucene.apache.org/solr/
最新バージョン Version: 7.6.0 (2018-12-14)
開発言語 Java
参照 : The Apache Sofrware Foundation
動作環境 Java 8 以降が必要。JRE バージョン1.8以上のバージョンの使用を推奨しています。
OS : Linux, MacOS/OS X, Microsoft Windows
参照 : Solr System Requirements
CPU:マルチコアのプロセッサを推進
メモリ:2 - 16GB以上で動作可
ストレージ : 高速 HDD ( 10,000 RPM / SEC 以上 )または SSD
参照 : Solr: a High-level Overview for Sysadmins
ライセンス Apache License Version 2.0
https://github.com/apache/lucene-solr/blob/master/solr/LICENSE.txt
特徴 高度な全文検索能力、高負荷量の最適化、XML, JSON, HTTPのサポート、、総合的な管理者インタフェース、イージモニタリング、高スケーラブルとフォルトトレラント、イージコンフィグレーションでフレキシブルな適用、リアルタイムに近いインデクシング、拡張プラグイン・アーキテクチャを特徴とする。
参照 : Solr Features
適している利用シーン インターネットのサイト検索システムをはじめ、企業内でのファイルサーバや多様なデータの検索や知識共有システム、図書館の検索システム、SaaS、SNS、広告配信システム、政府系機関システムなど
Apache Solr 事例紹介/サポートバージョン
部門の情報共有のためのスモールスタートから大規模なエンタープライズサーチやコンシューマ向け検索サービスにも対応します。
参照 : Solr of オープンソースソフトウェアの悩みを解決する
適していない利用シーン JOIN、GROUP BY などのSQLのような複雑な検索ができない。ロールバックなどのトランザクション処理ができない。
solrを使う前に知っておくべき事

開発情報

項目 内容
開発主体 Apache Software Foundation
開発体制 Slor は、上位プロジェクトである Apache Lucene Committee で開発されている。
PMC ( Project Management Committee ) Chair 1名 ( Cassandra Targett 氏 )、PMC Roster 50名, Committers 75名、Contoributors 273名
参照 : Apache Lucene CommitteeHow to Contribute to Solr
参加企業 Apache Software Foundation
リポジトリ https://git-wip-us.apache.org/repos/asf/lucene-solr.git
開発コミュニティ 開発者メーリングリストCommit 用メーリングリストを提供
開発コミュニティ活動状況 月間 約180件のソースコード・コミット
https://gitbox.apache.org/repos/asf?p=lucene-solr.git;a=shortlog

サポート情報

項目 内容
コミュニティサポート ユーザ用のメーリングリスト一般的なディスカッション用メーリングリストを提供
コミュニティ活動状況 メーリングリストに月間約 300件の投稿
サポート企業 多くの企業がサポートやコンサルタントを行っているようですが、国内では atilika、ロンウイットがサポート
参照 : Support for Solr
サポートメニュー/費用 例:ロンウイット の Solr サブスクリプション・パッケージ
バグフィックスパッチのご提供や回避策の提示、最適な解決策の提供
参照 : Solr サブスクリプション・パッケージ
サブスプリクション以外にもコンサルティングサービスやトレーニングもあります。
参照 : コンサルティングサービストレーニング

歴史

項目 内容
開発開始時期 2004年 CNET Networks が開発開始
開発の経緯 2004年 CNET Networks 社内プロジェクトで Yonik Seeley 氏が Web サイトの検索機能を開発
2006-01 CNET Networks は、Apache Software Foundation の Lucene プロジェクトにソースコードを OSS として寄贈
2008-09 分散検索機能を含んだ機能と性能を強化して、Solr 1.3 をリリース
2012-10 Solr Cloud 機能を含んだ Solr 4.0 をリリース
参照 : Intorduction Apache Solr
最近のメジャーリリース履歴 2015-04 5.0 日付範囲インデクシングのためDateRangeField追加、TransactionLog
2016-04 6.0 パラレルSQL、JDBCドライバ
2017-09 7.0 ReplicaType の追加、Auto-scaling、API が XML から JSON、Facetの改善
https://github.com/apache/lucene-solr/releases
リリース頻度 年間 9回のリリース

適用状況

項目 内容
適用システム 日本経済新聞社 : 英文メディアサイト Nikkei Asian Review
参照 : WEBSAS : 実績紹介
AWS の Amazon CloudSearch で使用されています。
参照 : Amazon CloudSearch よくある質問
適用数 WEBサイトを中心に多くの企業で使用されています。
参照 : PubulicServvers
適用企業 Goldman Sachs, Disney, Apple, CISCO, Netflix など
参照 : PubulicServvers

Sphinx

Sphinx は、パフィーマンス、関連、統合を全てシンプルに設計したオープンソース・フルテキスト検索サーバです。
Pythonドキュメント・ジェネレータのSphinxとは別モノなので注意が必要です。

基本情報

項目 内容
ホームページ http://sphinxsearch.com
最新バージョン Version: 3.1.1 (2018-10-17)
開発言語 C++
参照 : About Sphinx
動作環境 OS : 以下の OS をサポート
  • Linux 2.4.x, 2.6.x, 3.x (many various distributions)
  • Windows 2000, XP, 7, 8
  • FreeBSD 4.x, 5.x, 6.x, 7.x, 8.x
  • NetBSD 1.6, 3.0
  • Solaris 9, 11
  • Mac OS X
CPU : x86, x86_64, amd64, SPARC64, and ARM
参照 : Sphinx 2.3.2-beta reference manual
ライセンス Sphinx 2系は製品ライセンスと GPL version 2 のデュアルライセンスです。
Sphinx 3系は現在、製品ライセンスのみです。
http://sphinxsearch.com/services/embedding/
特徴 バッチとリアルタイム・フルテキスト・インデックス、非テキスト属性をサポート、SQLデータベース・インデクシング(MySQL, PostgreSQL, Oracle, Microsoft SQL Server, SQLite, Drizzle などと連携)、非SQLストレージインデクシング、アプリケーションとの統合が簡単、複雑なフルテキスト検索、SQLが利用可能、分散検索などの特徴があります。
参照 : About Sphinx
適している利用シーン 動的な高速フルテキスト検索を必要とするシステムなど
Sphinx Case Studies
適していない利用シーン 情報がありませんでしたが、
トランザクションを必要とするようなシステムには向いていないと思われます。

開発情報

項目 内容
開発主体 Sphinx Technologies
開発体制 GitHub の Contributors は 8名
参照 : Contributors : spinx search
参加企業 Sphinx Technologies
Sponsored and Custom development で参加企業を募集しています。
リポジトリ https://github.com/sphinxsearch/sphinx/
ただし、Sphinx 3.0 以上はソースコードを公開していない。
開発コミュニティ ForumBugTrackerを提供
開発コミュニティ活動状況 3年間で 28 件の Pull Requests
Pull Requests : spinx search

サポート情報

項目 内容
コミュニティサポート Forum, Wiki, BugTrackerを提供
コミュニティ活動状況 Forumに月間約 20件の投稿
サポート企業 Sphinx Technologies
サポートメニュー/費用 サポートパッケージが用意されている。費用については要問い合わせ。
参照 : Sphinx Enterprise Support Package Matrix

歴史

項目 内容
開発開始時期 2001年 Andrew Aksyonoff が開発開始
開発の経緯 2001年 Andrew Aksyonoff が既存データベースのフルテキスト検索の問題点(検索品質、検索速度、インデクシング時のCPU, ディスク条件)を解決するために、Sphinxの開発を開始した。
参照 : Sphinx Hisstory
最近のメジャーリリース履歴 2016-09 2.3.2 mmapを使用した検索、デーモン対応とインデクシング処理スレッド分離、HTTPプロトコル・インタフェース
https://github.com/sphinxsearch/sphinx/releases
リリース頻度 年間 1回ぐらいのリリース

適用状況

項目 内容
適用システム レンタルサービス、ビッグデータ・ログ解析など
参照 : Sphinx Case Studies
適用数 WEBサイトを中心に多くの企業で使用されています。
参照 : Powered by Sphinx
適用企業 Infegy, Boardreader, craigslist など
参照 : Powered by Sphinx

最後に

今回調査対象とした OSS サーチエンジンは機能的に大きな差がないように見えます。Elasticsearch、Solr は、既に多くの導入実績がありコミュニティの活動も活発なことから、導入対象としての選択肢としては、十分に対象となると考えられます。
Sphinx はライセンスがデュアルライセンスとなっていて、ライセンスによって機能や性能が異なりますので、導⼊する際にはライセンス条項を確認する必要があります。また、Sphinx は国内のサポート企業がないので注意が必要です。

もし、記述について誤りがあったり、気になることがあれば、編集リクエストやコメントでフィードバックしていただけると助かります。

toshiba
東芝グループの技術者有志により運営しているコミュニティです。
https://www.toshiba.co.jp/index_j.htm
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away