22
徹底比較!! Heliosearch vs Solr デジタル・インフォメーション・テクノロジー株式会社 海老澤 志信 第15回Solr勉強会 2014/12/08

徹底比較!! Heliosearch vs Solr

Embed Size (px)

Citation preview

Page 1: 徹底比較!! Heliosearch vs Solr

徹底比較!! Heliosearch vs Solr

デジタル・インフォメーション・テクノロジー株式会社

海老澤 志信

第15回Solr勉強会

2014/12/08

Page 2: 徹底比較!! Heliosearch vs Solr

・ 海老澤 志信

・ 所属

・ 現業務

リクルートグループの検索システム

コンサル・開発・保守・運用・サイト導入

・ 経歴

組み込み系~Android端末開発

自社でのSolr/ElasticSearch業務増加に伴い部署移動

・ Solr歴 半年です。が……

▶ 先日Solrメーリングリストに投稿したパッチが

Lucene4.10.0で採用されました。

■自己紹介

Page 3: 徹底比較!! Heliosearch vs Solr

■自己紹介(2)

こんな感じで。(Lucene 4.10.0 リリースノート抜粋)

(業務用メールの差出人名設定が日本語フルネームだったため。

業務用メアドで送信してしまったが故の悲劇でした……)

Page 4: 徹底比較!! Heliosearch vs Solr

■アジェンダ

・ Heliosearchとは

・ Heliosearchの特徴

・ Heliosearchを検証することにした理由

・ 検証方法

・ 検証結果

・ Heliosearchを使ってみて

Page 5: 徹底比較!! Heliosearch vs Solr

■Heliosearchとは

▶Lucene/Solrのコードを使用して拡張実装された、

次世代のオープンソース検索エンジン

▶Solrの製作者である

“Yonik Seeley”氏のプロジェクト

先日開催されたLucene/Solr Revolution 2014でも

Heliosearchについてスピーチされていました。

Heliosearch is a high-performance NoSQL search server,

the next generation of Solr open source search.

http://heliosearch.org/より引用

Page 6: 徹底比較!! Heliosearch vs Solr

■Heliosearchの特徴(1)

1. クエリ構文はSolrの上位互換

▶ クライアントは相手が

SolrかHeliosearchか意識しないで

そのまま使えます!

Page 7: 徹底比較!! Heliosearch vs Solr

■Heliosearchの特徴(2)

2. ファセット処理の高速化

▶ Heliosearchのファセット処理は

なんと、Solrの約2倍のパフォーマンスが

出る!!

参考:http://heliosearch.org/native-code-faceting/

Page 8: 徹底比較!! Heliosearch vs Solr

■Heliosearchの特徴(3)

3. GC負荷の軽減

▶ フィルタキャッシュを

オフヒープ化することにより

CMS/Full GCを大幅削減!!

参考:http://heliosearch.org/off-heap-filters/

Page 9: 徹底比較!! Heliosearch vs Solr

■Heliosearchの特徴(4)

4. フィルタクエリの最適化

▶ フィルタクエリに、

ORを連結したTermQueryを指定すると

最適化によってクエリが高速!!

参考:http://heliosearch.org/solr-terms-query/

Page 10: 徹底比較!! Heliosearch vs Solr

■Heliosearchを検証することにした理由

本当にHeliosearchって

こんなにすごいの?

Page 11: 徹底比較!! Heliosearch vs Solr

■検証方法

今回は、業務でお世話になっているリクルートグループの2サイトから

インデックス、クエリを一部利用させていただき検証を行います。

4.10.2 0.08

[比較ソフト]

VS

サイト名 Aサイト Bサイト

CPU使用率 低め 高め

平均QPS 高め 低め

[比較データ傾向]

Page 12: 徹底比較!! Heliosearch vs Solr

Select

■検証方法(イメージ)

Select Select

Update Update

Update

ドキュメント1万件単位

Commit

実行後、5分間ウェイト

Web バッチ

検証は、一律30分1セットで実施します。

Page 13: 徹底比較!! Heliosearch vs Solr

■検証環境

サイト名 Aサイト Bサイト

ドキュメント件数 1000万件以下

ノード数 1ノード

検索の負荷 500 QPS 50 QPS

更新の負荷 前述通り

JVMヒープ 約7GB

サーバスペック

CPU: 8コア

OS: Linuxサーバ(Red Hat)

物理メモリ:約96GB

サイト別の条件

※あくまで検証はサイトA・B相当のデータを

使うということだけ。

Page 14: 徹底比較!! Heliosearch vs Solr

■検証開始

Page 15: 徹底比較!! Heliosearch vs Solr

■検証結果

▶ 全て、Solrと変わりませんでした。

・ CPU...

・ QTime...

・ GC負荷...

Page 16: 徹底比較!! Heliosearch vs Solr

QTime 全クエリ ファセットクエリ

Aサイト

Bサイト

■考察(1):ファセット処理の高速化

▶ SolrとHelioの差は誤差の範囲です。

▶ ファセット付クエリは特に速くなかった。

Solr Helio

Page 17: 徹底比較!! Heliosearch vs Solr

■考察(2): GC負荷の軽減

JVM ヒープ 使用サイズ

Aサイト

Bサイト

Solr Helio

0%

25%

50%

75%

100%

125%

0%

25%

50%

75%

100%

125%

▶ Aサイト・Bサイトともに

ヒープ使用サイズはがくっと下がった。が……

-22%

-77%

Page 18: 徹底比較!! Heliosearch vs Solr

GC実行時間

Aサイト

Bサイト

■考察(3): GC負荷の軽減

-1.7秒

(-5% )

-0.03秒

(-9% )

▶ またも、誤差の範囲……。

Solr Helio

Page 19: 徹底比較!! Heliosearch vs Solr

■考察(4)

今後に向けて

(1) 試験方法の見直し

▶ Heliosearchに適した

クエリ・インデックスの 組み方は無いか?

(2) Heliosearchの理解

▶ ソースコードを読み込み

実装面からもHeliosearchの特性を追求。

[おまけ]

今回の検証では本格的に比較していないが、

フィルタクエリの最適化についても、

処理速度はあまり変わらない印象があった。

Page 20: 徹底比較!! Heliosearch vs Solr

■Heliosearchを使ってみて(1)

1. Heliosearchのクラス仕様差分

▶ カスタマイズ処理周りで修正が発生し

Solr4.10.2と同一コードを使用出来なかった。

2. “facet.offset=-1”でJVMクラッシュ

▶ SolrだとExceptionとなるコード。

Nativeメモリへの不正アクセスでNG。

Page 21: 徹底比較!! Heliosearch vs Solr

■Heliosearchを使ってみて(2)

3. ログ仕様変更

(1) 500文字以上省略

(2) QTime/Status非出力化

▶ 必要なら、Solr相当に戻しましょう!

[...115 more chars]hits=37340 status=0 QTime=313

4. 新機能周りの品質

▶ 「フィルタクエリの最適化」に関わるコードで

見つけた不具合をプルリクしコミットしてもらいました。

▶ まだあまりgithubが盛り上がってないですが

ぜひ皆さんも使って、向上させて行きましょう!

Page 22: 徹底比較!! Heliosearch vs Solr

■Q&A

この時間を借りてご紹介させて下さい。

弊社製品『 』が

「ITpro EXPO AWARD 2014」で

優秀賞を受賞いたしました。

http://www.ditgroup.jp/

ご清聴ありがとうございました。

お問い合わせ先・エンジニア募集中

[email protected]