Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Redmine全文検索システムの実際

 Redmine全文検索システムの実際

Open source Redmine full text search system with Groonga.
Indexed full-text search for 33.3 billion and 100 billion multi-byte characters takes 3 sec or less (Avg per 1 search).
Search into files such as attachments and repositories.

Download this slides as PDF: https://akahane92.page.link/fts20191102pdf

More Decks by Kuniharu, AKAHANE (赤羽根/州晴)

Other Decks in Technology

Transcript

  1. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    Redmine全文検索の実際
    〜1,000億文字を平均3秒以内に検索できる、
    サクサクなRedmine全文検索の作り方〜
    第1版 2019年 8月31日 第20回 Redmine大阪
    第2版 2019年11月 2日 第17回 Redmine東京
    株式会社島津ビジネスシステムズ(SBS)
    赤羽根 州晴 [email protected]

    View full-size slide

  2. ありがとう。
    Thanks a lot.
    Danke schön.
    Merci beaucoup.
    2

    View full-size slide

  3. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    お話しすること
    3
    1)Redmineの全テキストデータを横断検索する仕組みと機能
    2)Redmineの実運用環境への導入手順、ベンチマーク結果
    3)Redmine全文検索のオープンソース化
    Download this slides as PDF:
    https://akahane92.page.link/fts20191102pdf

    View full-size slide

  4. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    ご注意
    4
    本発表の内容には様々な情報や設定が含まれていますが、
    ご利用は自己責任でお願い致します。
    参考になさった場合に生じたいかなる損害も補償できません。
    あらかじめご了承下さい。

    View full-size slide

  5. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    目次
    5
    第1部 背景と要求
    第2部 全文検索システム
    第3部 導入手順
    第4部 ベンチマーク
    第5部 まとめ
    5

    View full-size slide

  6. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    株式会社 島津製作所
    2019年3月31日現在
    創 業|
    設 立|
    資 本 金|
    従 業 員 数 |
    3,912億円 (2019年3月期)
    グループ売上高|
    社 是|科学技術で社会に貢献する
    経営理念|「人と地球の健康」への願いを実現する
    6
    12,684名 (連結)
    明治8(1875)年
    大正6(1917)年
    約266億円

    View full-size slide

  7. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    事業領域
    産業機器
    航空機器
    医用機器
    分析・計測機器
    7

    View full-size slide

  8. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    8
    背景と要求|Redmine標準の全文検索の限界
    1. 処理時間
    • Redmine4.0標準のSQL-Like文による全文検索は30万チケット(
    5億文字)を超えたあたりで検索が遅くなり始め、複数人が同時に
    検索を実行するとRedmineが無応答になってしまう時もある。
    • 将来的なデータ増加で使えなくなってしまう。また、添付ファイ
    ル/リポジトリの内容検索を実現しようとすると、このままでは
    実現が難しい。
    2. 検索結果の精度
    • 大量の情報が蓄積されると、SQL検索では探している情報が埋も
    れてしまい、見つけるまでに時間がかかってしまう。
    3. 検索の対象制約
    • 添付ファイルとリポジトリ内容の検索機能が無いため、ソースコ
    ードやドキュメントの検索ができず効率が悪いだけでなく、情報
    資産を生かせない。

    View full-size slide

  9. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    9
    背景と要求|Redmine文字数増加の経年変化*
    0
    1
    2
    3
    4
    5
    6
    2016年 2017年 2018年 2019年
    億文字 チケット
    題名
    Wiki
    チケット注記
    コミットログ
    調査日 2019/8
    累計 2016年 2億7千万文字
    2019年 5億1千万文字
    3年でおおよそ2倍
    * SBSのデータ

    View full-size slide

  10. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    0
    100
    200
    300
    400
    500
    600
    700
    800
    900
    1,000
    0
    10,000
    20,000
    30,000
    40,000
    50,000
    60,000
    2010 2011 2012 2013 2014 2015 2016 2017 2018
    チケット発行数 説明欄文字数(平均) 近似曲線(線形)
    背景と要求|チケット説明欄の文字数変化*
    10
    2011年
    529文字
    2018年
    725文字
    調査日 2019/1
    文字


















    * SBSのデータ
    チケット発行数
    累計 34万件 55,800/年 4,600/月

    View full-size slide

  11. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    0
    0.2
    0.4
    0.6
    0.8
    1
    1.2
    1.4
    0
    10,000
    20,000
    30,000
    40,000
    50,000
    60,000
    70,000
    2010 2011 2012 2013 2014 2015 2016 2017 2018
    チケット発行数 添付ファイル数
    背景と要求|添付ファイル数の経年変化*
    11
    ファイル
    調査日 2019/1
    累積 2017年 26万3千 ファイル
    2018年 35万8千 ファイル チ



























    * SBSのデータ

    View full-size slide

  12. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    背景と要求|FTS*1ベンチマーク計測結果*2
    12
    調査日 2019/8
    *1 FTS; Full Text Search 全文検索(索引型/非索引型)
    *2 SBSの実データ10万チケットを複写して200万チケットのデータを作成し、耐用試験や性能試験を行うためのデータで計測した
    Redmine4.0 非索引型 全文検索
    チケット数 No Cache Full Cache
    10万 5.6 0.2
    20万 9.9 0.3
    30万 14.2 0.4
    50万 25.6 0.7
    70万 35.0 1.0
    100万 50.0 1.3
    150万 78.5 2.0
    200万 105.8 2.8
    合計 324.6 8.7
    検索対象ワード3種をそれぞれ2並列で1回実行した平均値
    計測値単位: 秒(sec)
    0
    50
    100
    150
    200
    250
    300
    350
    No Cache Full Cache














    キャッシュ状態
    10万 20万 30万 50万 70万 100万 150万 200万

    View full-size slide

  13. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    13
    調査日 2019/8
    Redmine4.0 非索引型 全文検索
    チケット数 No Cache Full Cache
    10万 5.6 0.2
    20万 9.9 0.3
    30万 14.2 0.4
    50万 25.6 0.7
    70万 35.0 1.0
    100万 50.0 1.3
    150万 78.5 2.0
    200万 105.8 2.8
    合計 324.6 8.7
    検索対象ワード3種をそれぞれ2並列で1回実行した平均値
    計測値単位: 秒(sec)
    0
    50
    100
    150
    200
    250
    300
    350
    No Cache Full Cache














    キャッシュ状態
    10万 20万 30万 50万 70万 100万 150万 200万

    *1 FTS; Full Text Search 全文検索(索引型/非索引型)
    *2 SBSの実データ10万チケットを複写して200万チケットのデータを作成し、耐用試験や性能試験を行うためのデータで計測した
    Redmine4.0標準の全文検索はデータ量の増加とともに遅くなる
    実運用環境34万チケットの実測値は平均20秒なので合致
    背景と要求|FTS*1ベンチマーク計測結果*2

    View full-size slide

  14. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    14
    背景と要求|Redmine全文検索への要求
    1. 機能要求
    • Redmineのテキストデータを全て(添付ファイル、リポジトリフ
    ァイル)を検索したい。
    • 欲しい情報を短時間で入手できる検索精度
    • 更新情報は即時、検索結果に反映
    • 情報閲覧の権限制御を検索においても維持
    2. 性能要求
    • このままデータが増え続けても平均3秒以内に横断検索できる。
    3. 非機能要求
    • 高負荷環境で盤石の安定性
    • 運用・保守コストの低減

    View full-size slide

  15. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    15
    背景と要求|要約
    1. 島津製作所グループはRedmineを10年間使用
    2. 蓄積データ*はチケット34万で約5億文字、添付ファイ
    ルは35万に到達
    3. Redmine4.0標準の全文検索(SQL Like文)では限界
    4. 今後も使い続けるには、全文検索の機能、性能、精度
    に対策が必要
    * SBSのデータ

    View full-size slide

  16. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    目次
    16
    第1部 背景と要求
    第2部 全文検索システム
    第3部 導入手順
    第4部 ベンチマーク
    第5部 まとめ
    16

    View full-size slide

  17. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    17
    全文検索システム|実現選択肢*1
    組込み連携型 外部独立型
    方式 Redmineプラグインを中心として、
    検索エンジンと連携
    外部システムが中心となり、Redmine
    をHTTPプロトコルでクロール(crawl)
    例示 Groonga / Elasticsearch*2 Fess / ほか
    長所
    • 変更を検索結果に即時反映できる
    • 情報閲覧制御
    閲覧権限の無い情報が1ワードも検
    索結果に含まれない
    • 導入が容易
    パッケージインストールと設定のみで
    稼働させることが可能
    • 仕組みの作り込みや開発は基本的に
    不要
    短所 • Redmineと連携させる仕組みの作
    り込みが必要
    • 変更が検索結果に反映されるまで時
    間がかかる場合がある
    • 情報閲覧制御が完全でない場合があ

    • 1. Redmine本体への内蔵型も候補にあったが性能上の理由でDeclineになったので選択肢から外れた。
    • 2. Elasticsearchは多くのプロプライエタリコードを含んでおり、独自ライセンスのためOSSと言い切れないため
    選択肢から外れた。

    View full-size slide

  18. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    組込み連携型 外部独立型
    方式 Redmineプラグインを中心として、
    検索エンジンと連携
    外部システムが中心となり、Redmine
    をHTTPプロトコルでクロール(crawl)
    例示 Groonga / Elasticsearch*2 Fess / ほか
    長所
    • 変更を検索結果に即時反映できる
    • 情報閲覧制御
    閲覧権限の無い情報が1ワードも検
    索結果に含まれない
    • 導入が容易
    パッケージインストールと設定のみで
    稼働させることが可能
    • 仕組みの作り込みや開発は基本的に
    不要
    短所 • Redmineと連携させる仕組みの作
    り込みが必要
    • 変更が検索結果に反映されるまで時
    間がかかる場合がある
    • 情報閲覧制御が完全でない場合があ

    18
    全文検索システム|実現選択肢*1
    • 1. Redmine本体への内蔵型も候補にあったが性能上の理由でDeclineになったので選択肢から外れた。
    • 2. Elasticsearchは多くのプロプライエタリコードを含んでおり、独自ライセンスのためOSSと言い切れないため
    選択肢から外れた。
    今回の選択

    View full-size slide

  19. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    19
    全文検索システム|機能
    # 名称 説明
    1
    Redmine全テキストデータ
    大容量検索
    Redmineに蓄積された全てのテキストデータを高速に横断検索が可能
    になった。索引方式の採用によって大容量化に対応しておりデータ量
    の増加による検索時間の変化はあまりない
    2 スコアベース検索
    高精度検索を実現。関連性の高い情報に点数を付け、検索結果の上位
    に浮上させることで探している情報を短時間で見つけられるようにす

    3 ドリルダウン検索
    属性等を指定して「たたみ込む」ように結果を絞り込み、探している
    情報を短時間で見つけられるようにする
    属性:トラッカー、ステータス、担当者、拡張子、データ種別、
    論理条件:AND / OR / NOT
    4 添付ファイル検索
    全ての添付ファイルの内容からテキストを抽出して検索対象にする。
    圧縮ファイルも、ロックされていなければ対象
    5 リポジトリファイル内容検索
    全てのリポジトリの最新リビジョンのファイルを取り寄せて、テキス
    トを抽出して検索対象にする。圧縮されていても、ロックされていな
    ければ対象になる
    6 更新データ即時検索
    情報の追加変更を検索結果に即時反映(100ms前後)(添付ファイルやリ
    ポジトリデータはサイズによって反映時間が変動)
    7 Job永続化、優先Job制御
    Delayed Jobによる「頼まれたことを忘れない」「優先度に従い処理
    順序を遵守」

    View full-size slide

  20. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    20
    全文検索システム|特徴(非機能)
    # 特徴点 説明
    1 安定性 • 実運用環境をフル稼働させたまま、並行してデータ数375万のテキスト抽
    出を無停止で実行し、333億文字を5日で抽出する安定性
    2 信頼性
    • 高負荷の事業用途に耐える全文検索のサービス水準(MTBF 8,364時間(348
    日)、MTTR 15時間、稼働率 99.8%)
    • Redmineの標準データベーステーブル構造を一切変更しない設計とし、依
    存と影響の範囲を絞り込んだ。例えば検索プラグインのフォルダを除去し
    てRedmineを再始動すると、迅速かつ安全にRedmine標準へ戻せる
    3 持続利用性、費用性 • 全てOSSで構成し、利用ライセンスを無償かつ長期的に担保できる
    • 自由なソフトウェア。ベンダーロックインフリー
    4 移植性 • LinuxとMySQL以外にもWindowsやPostgreSQLの利用が可能
    5 機密秘匿性
    • 技術情報を扱う知識基盤システムや業務システムが要求する、検索セキュ
    リティー水準を満たす
    • 閲覧権限が無い情報は1ワードも検索結果や抄録に含まれない
    • 情報流通の利点と、機密秘匿の達成水準のトレードオフ最適均衡点
    6 完全性
    • テキスト抽出Jobの永続化による、抜け漏れのない検索網羅の完全性を維持
    • 検索用データは全て別テーブルに複写。元となるデータには手を加えない
    • 第三者検証(査察、監査、認証)の要求を満足させる
    7 可用性 • VMやコンテナ技術の利用により仮想計算機基盤での冗長性を確保可能

    View full-size slide

  21. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    21
    全文検索システム|仕組み
    環境構成
    OS CentOS7 (64bit)
    Ruby 2.5 (2.6)
    Rails5.2
    Redmine 4.0 DBMS
    MySQL 5.7
    (BP 8GB)
    HTTP
    Apache 2.4
    vMemory 16GB
    vCPU 4cores
    VMware ESXi 6.5 【CPU】Intel Xeon E5-2670 2.3GHz x2 (24Cores/48Threads) , 【Memory】256GB,
    【SSD】8.7TB SAS RAID6, 【HDD】6TB 10K RPM SAS RAID6
    VCS
    Subversion1.9
    vSSD/HDD vNIC
    Groonga
    9.0.7
    Mroonga
    9.0.5
    FTSプラグイン
    Passenger6
    Delayed_Job プラグイン ※
    Docker ※
    テキスト抽出
    chupa-text-
    server ※
    (コンテナ)
    ※ 青色枠は拡張オプション。無くても動作する。
    Systemd
    サービス
    Job Worker
    優先・通常※
    ※ 赤色枠は動作に不可欠なソフトウェア

    View full-size slide

  22. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    目次
    22
    第1部 背景と要求
    第2部 全文検索システム
    第3部 導入手順
    第4部 ベンチマーク
    第5部 まとめ
    22

    View full-size slide

  23. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    23
    導入手順|1/4
    Redmine4が動作する環境
    OS CentOS7 (64bit)
    Ruby 2.5 (2.6)
    Rails5.2
    Redmine 4.0 DBMS
    MySQL 5.7
    (BP 8GB)
    HTTP
    Apache 2.4
    vMemory 16GB
    vCPU 4cores
    VMware ESXi 6.5 【CPU】Intel Xeon E5-2670 2.3GHz x2 (24Cores/48Threads) , 【Memory】256GB,
    【SSD】8.7TB SAS RAID6, 【HDD】6TB 10K RPM SAS RAID6
    VCS
    Subversion1.9
    vSSD/HDD vNIC
    Passenger6
    Systemd
    サービス

    View full-size slide

  24. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    24
    OS CentOS7 (64bit)
    Ruby 2.5 (2.6)
    Rails5.2
    Redmine 4.0 DBMS
    MySQL 5.7
    (BP 8GB)
    HTTP
    Apache 2.4
    vMemory 16GB
    vCPU 4cores
    VMware ESXi 6.5 【CPU】Intel Xeon E5-2670 2.3GHz x2 (24Cores/48Threads) , 【Memory】256GB,
    【SSD】8.7TB SAS RAID6, 【HDD】6TB 10K RPM SAS RAID6
    VCS
    Subversion1.9
    vSSD/HDD vNIC
    Groonga
    9.0.7
    Mroonga
    9.0.5
    FTSプラグイン
    Passenger6
    Systemd
    サービス
    Full text searchプラグインが動作する環境
    導入手順|2/4
    ※ 赤色枠は動作に不可欠なソフトウェア

    View full-size slide

  25. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    25
    OS CentOS7 (64bit)
    Ruby 2.5 (2.6)
    Rails5.2
    Redmine 4.0 DBMS
    MySQL 5.7
    (BP 8GB)
    HTTP
    Apache 2.4
    vMemory 16GB
    vCPU 4cores
    VMware ESXi 6.5 【CPU】Intel Xeon E5-2670 2.3GHz x2 (24Cores/48Threads) , 【Memory】256GB,
    【SSD】8.7TB SAS RAID6, 【HDD】6TB 10K RPM SAS RAID6
    VCS
    Subversion1.9
    vSSD/HDD vNIC
    Groonga
    9.0.7
    Mroonga
    9.0.5
    FTSプラグイン
    Passenger6
    Delayed_Job プラグイン ※
    Systemd
    サービス
    Job Worker
    優先・通常※
    Job永続化、Jobの優先処理が動作する環境
    ※ 拡張オプション。無くても動作する。
    導入手順|3/4

    View full-size slide

  26. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    26
    OS CentOS7 (64bit)
    Ruby 2.5 (2.6)
    Rails5.2
    Redmine 4.0 DBMS
    MySQL 5.7
    (BP 8GB)
    HTTP
    Apache 2.4
    vMemory 16GB
    vCPU 4cores
    VMware ESXi 6.5 【CPU】Intel Xeon E5-2670 2.3GHz x2 (24Cores/48Threads) , 【Memory】256GB,
    【SSD】8.7TB SAS RAID6, 【HDD】6TB 10K RPM SAS RAID6
    VCS
    Subversion1.9
    vSSD/HDD vNIC
    Groonga
    9.0.7
    Mroonga
    9.0.5
    FTSプラグイン
    Passenger6
    Delayed_Job プラグイン ※
    Docker ※
    テキスト抽出
    chupa-text-
    server ※
    (コンテナ)
    ※ 拡張オプション。無くても動作する。
    Systemd
    サービス
    Job Worker
    優先・通常※
    より多くのファイル形式からテキストを抽出できる環境
    導入手順|4/4

    View full-size slide

  27. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    導入手順|詳細 <基本構成>
    27
    リンク先が各ソフトウェアの導入手順書になっています。
    Download this slide as PDF :
    https://akahane92.page.link/fts20191102pdf
    <基本構成>
    ・MySQL 5.7
    ・Groonga 9.0.7
    ・Mroonga 9.0.5
    ・Ruby 2.5, 2.6
    ・Redmine 4.0
    ・Redmine プラグイン(Full text search plugin 1.0.4以降 )

    View full-size slide

  28. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    <オプション:Job永続化>
    ・Redmine プラグイン(delayed_job)
    ・Systemd サービス (job-worker、 High-priority job-worker)
    <オプション:テキスト抽出対象の追加>
    ・docker19.03
    ・docker-compose1.24
    ・chupa-text-docker
    <オプション:Jobエラー通知>
    ・Redmineプラグイン(email_command)
    導入手順|詳細 <オプション>
    28

    View full-size slide

  29. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    目次
    29
    第1部 背景と要求
    第2部 全文検索システム
    第3部 導入手順
    第4部 ベンチマーク
    第5部 まとめ
    29

    View full-size slide

  30. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    ベンチマーク|評価対象データ*
    30
    * SBSで実運用中のデータ。
    調査日 2019/11
    テキスト抽出
    対象種別
    333億文字 1,000億文字
    処理件数 抽出文字数 処理件数 抽出文字数
    Journal (注記、履歴) 1,396,373 174,864,711 644,512 31,477,006
    Issue (チケット) 348,754 242,169,288 119,544 128,015,425
    WikiPage (Wiki) 9,934 51,982,271 12,926 37,661,316
    CustomValue
    (カスタムフィールド)
    382,678 1,836,090 426 208
    Project 166 5,077 426 35,760
    News 208 120,241 320 336,279
    Document (文書) 126 45,097 11 7,809
    Message (会議室) 5 853 754 352,446
    Attachment
    (添付ファイル)
    358,323 20,125,630,906 118,259 15,481,536,154
    Changeset
    (VCSリビジョン)
    269,177 11,371,254 860,697 32,286,330
    Change (VCSファイル) 987,566 12,696,661,162 4,808,515 84,391,618,717
    合計 3,753,310 33,304,686,950 6,566,390 100,103,327,450

    View full-size slide

  31. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    ベンチマーク|導入所用時間の計測*
    31
    調査日 2019/8
    全文検索プラグイン導入時のインデックス作成処理の進捗推移
    実施日程: 2019/08/19~8/24
    所用期間:5日 5時間47分16秒
    処理件数: 375万 Jobs
    処理速度: 10,946件/時間(平均)
    * SBSの実運用中のデータ。終了プロジェクト分を含まない。
    0
    5
    10
    15
    20
    25
    30
    35
    0
    20
    40
    60
    80
    100
    120
    140
    160
    180
    2019/8/19
    2019/8/20
    2019/8/21
    2019/8/22
    2019/8/23
    2019/8/24
    2019/8/25


    残Job数
    処理件数/1時間

    View full-size slide

  32. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    ベンチマーク|導入所用時間の計測*
    32
    調査日 2019/8
    全文検索プラグイン導入時のインデックス作成処理の進捗推移
    * SBSの実運用中のデータ。終了プロジェクト分を含まない。
    0
    5
    10
    15
    20
    25
    30
    35
    0
    20
    40
    60
    80
    100
    120
    140
    160
    180
    2019/8/19
    2019/8/20
    2019/8/21
    2019/8/22
    2019/8/23
    2019/8/24
    2019/8/25


    残Job数
    処理件数/1時間
    実施日程: 2019/08/19~8/24
    所用期間:5日 5時間47分16秒
    処理件数: 375万 Jobs
    処理速度: 10,946件/時間(平均)
    実運用環境をフル稼働させたまま、並行して375万データからのテキス
    ト抽出を無停止で実行し、333億文字を5日と6時間で抽出

    View full-size slide

  33. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    33
    計測条件
    ① 検索キーワード3種に対してそれぞれ2並列で1回アクセスして得られた計測値を平均
    する。
    ② 上記①を下記のキャッシュ状態を切り替えて計測
    全キャッシュクリア → DBMS再起動後 → Fullキャッシュ
    ③ 上記②の全キャッシュクリア、 DBMS再起動後、Fullキャッシュの計測値3種を採用
    ④ 上記①~③を、SBSのRedmine環境で実施
    検索キーワード
    1. Parts (AND) Number
    2. WIP (AND) +order
    3. module (NOT) –test
    調査日 2019/8
    ベンチマーク| FTS* 応答性能計測
    * FTS; Full Text Search 全文検索(索引型/非索引型)

    View full-size slide

  34. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    34
    ベンチマーク| FTS応答性能計測
    * 数値の単位はすべてms (ミリ秒)
    キャッシュ状態
    Cash status
    parts (AND) Number
    WIP (AND)
    +order
    module (NOT) –
    test
    平均
    AVG
    333
    億文字
    No Cash 5,906 2,156 2,044 3,369
    DB Restart 2,104 1,689 1,652 1,815
    Full Cash 117 124 143 128
    1,000
    億文字
    No Cash 4,524 2,754 1,832 3,037
    DB Restart 2,003 2,550 1,622 2,058
    Full Cash 165.3 121.7 222.2 170
    0
    3,000
    6,000
    9,000
    12,000
    No Cash DBMS
    Restarted
    Full Cash No Cash DBMS
    Restarted
    Full Cash
    module (NOT) –test
    WIP (AND) +order
    parts (AND) Number
    333億文字 1,000億文字
    >2,138
    >2,548

    View full-size slide

  35. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    35
    ベンチマーク| FTS応答性能計測
    * 数値の単位はすべてms (ミリ秒)
    キャッシュ状態
    Cash status
    parts (AND) Number
    WIP (AND)
    +order
    module (NOT) –
    test
    平均
    AVG
    333
    億文字
    No Cash 5,906 2,156 2,044 3,369
    DB Restart 2,104 1,689 1,652 1,815
    Full Cash 117 124 143 128
    1,000
    億文字
    No Cash 4,524 2,754 1,832 3,037
    DB Restart 2,003 2,550 1,622 2,058
    Full Cash 165.3 121.7 222.2 170
    0
    3,000
    6,000
    9,000
    12,000
    No Cash DBMS
    Restarted
    Full Cash No Cash DBMS
    Restarted
    Full Cash
    module (NOT) –test
    WIP (AND) +order
    parts (AND) Number
    333億文字 1,000億文字
    >2,138
    >2,548
    • Redmine4.0に全文検索システムを導入し、全テキストデータ
    が333億文字、1,000億文字の実運用環境において、日常的に使
    用するRedmineプロジェクト内検索は1秒未満、全プロジェク
    トの横断検索でも平均3秒以内で検索可能。
    • Redmine4.0標準のSQL Like文による検索は、5億文字で平均
    20秒。文字数と検索時間の相関比較では440倍速くなる。
    Indexed full-text search for 33 and 100 billion multi-byte characters takes 3 sec or less (Avg per 1 search).

    View full-size slide

  36. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    36
    ベンチマーク| FTS応答性能計測
    * 数値の単位はすべてms (ミリ秒)
    キャッシュ状態
    Cash status
    parts (AND) Number
    WIP (AND)
    +order
    module (NOT) –
    test
    平均
    AVG
    333
    億文字
    No Cash 5,906 2,156 2,044 3,369
    DB Restart 2,104 1,689 1,652 1,815
    Full Cash 117 124 143 128
    1,000
    億文字
    No Cash 4,524 2,754 1,832 3,037
    DB Restart 2,003 2,550 1,622 2,058
    Full Cash 165.3 121.7 222.2 170
    0
    3,000
    6,000
    9,000
    12,000
    No Cash DBMS
    Restarted
    Full Cash No Cash DBMS
    Restarted
    Full Cash
    module (NOT) –test
    WIP (AND) +order
    parts (AND) Number
    333億文字 1,000億文字
    >2,138
    >2,548
    • 現時点では333億文字、1,000億文字の横断検索が平均3秒以内
    で検索可能となっているが、その内訳を見るとアクセスチェック
    と結果出力の処理にさらなる高速化の余地がある。
    • 0.2秒 全文検索
    • 1.5秒 アクセスチェック
    • 0.5秒 結果の出力(ハイライト、ドリルダウン、ソート等)
    • 次回のRedmine大阪 (2020/3/xx) をお楽しみに

    View full-size slide

  37. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    目次
    37
    第1部 背景と要求
    第2部 全文検索システム
    第3部 導入手順
    第4部 ベンチマーク
    第5部 まとめ
    37

    View full-size slide

  38. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    38
    まとめ|本開発のOSS成果物
    • 株式会社クリアコードと、株式会社島津製作所の共同開発
    • 本開発成果物は全てオープンソースソフトウェアとして公開
    • 本開発において新規に作成し、オープンソースソフトウェアとして公開済みの成果物
    1. Redmineプラグイン
    delayed_job ( Redmine4のActive JobをメモリベースからDBMSベースへ切替え)
    email_command ( Jobの実行時エラーをRedmineの設定を使ってメールで通知)
    • 本開発において機能追加や改善パッチを提供したオープンソースソフトウェア
    1. Redmineプラグイン
    Full text search (Redmine組込み連携型 全文検索エンジン)
    2. Redmine本体 5件
    2019-05-20: Patch #31402 Add support for customization by block to IssueCustomField.generate!
    2019-05-27: Patch #31457 Add support for reloading plugin assets automatically
    2019-05-31: Patch #31485 Add support for :sql ActiveRecord::Base.schema_format in
    redmine:plugins:migrate
    2019-06-03: Patch #31498 Add redmine_plugin_migration generator
    2019-08-31: Patch #31987 Add rake task which synchronize all revisions in repositories related with all
    active projects
    3. その他
    Groonga, Mroonga (全文検索エンジン)
    chupa-text-server(テキスト抽出サーバー)
    2019-06-09: Puma 1件(Ruby web server)
    2019-08-05: Delayed_Job 1件(Rails 非同期バックグラウンド処理)

    View full-size slide

  39. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    まとめ|お話ししたこと
    39
    1)Redmineの全テキストデータを横断検索する仕組みと機能
    2)Redmineの実運用環境への導入手順、ベンチマーク結果
    3)Redmine全文検索のオープンソース化

    View full-size slide

  40. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    40
    まとめ
    実際
    1. Redmine全文検索の性能問題を解決する方法が実証され、懸念
    が解消した
    2. 添付ファイル、リポジトリファイルが検索対象として追加され、
    Redmineの全てのテキストデータを検索・抽出できる
    3. 索引付きの検索方式により、情報量が増加しても性能が低下し
    にくく、安心して長期利用できる
    4. オープンソースソフトウェアとして公開。オープンソースライ
    センスなのでどなたでも安心して業務用途として長期的に利用
    できる
    今後の課題
    • 検索速度と精度の向上
    • 2,000億文字での耐用試験
    • テキスト抽出時間の短縮
    • テキスト抽出対象の種類を追加
    • 耐障害性の向上

    View full-size slide

  41. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
    41
    Redmine全文検索システムの未来は…
    ここにあります →
    株式会社クリアコード
    須藤功平さん
    スライド https://slide.rabbit-
    shocker.org/authors/kou/redmine-tokyo-17/
    映像(音声解説付)
    https://youtu.be/556_kQtzA-A
    • Redmine検索技術の現状と未来像を解説
    • 1,000億文字の横断検索を1秒以下にし
    たい
    • Milkode のようなコードに特化した検索
    機能をRedmine検索に組み込みたい
    • 検索の高精度化(機械学習など)

    View full-size slide


  42. Special Thanks to
    ブログ等で技術情報を公開して下さったみなさま
    柴田 雅之さん、西川 撒さん
    My Family.

    View full-size slide