Solrは「使える」。Solrは「使える」。Solrは「使える」。Solrは、オープンソースの全文検索エンジンとして、現時点でデファクトスタンダートとなっている製品です。Solrを組み込んで動作しています。標準で用意するスケールアウト機能がSolrCloudです。コンピュータシステムで、大量のデータを対象とする処理の性能を引き上がるための手段として、複数のマシンを並べて処理を行うことを「スケールアウト」と言います。(なお、単一マシンにおいて、CPUのグレードアップやメモリの増設/ディスク増設によって性能を引き上げる「スケールアップ」と対比される言葉です。)検索システムにおいてのスケールアウトの目的は、下記の2点となります。対象ドキュメントの数量が大きい大規模検索を可能にする、巨大な検索インデックスを構築・維持可能にするため。実際に1台のサーバに配置できないような巨大な全文検索インデックスも、shardと呼ばれる単位に分割して、複数台のサーバに分散配置することを可能にしています)多数のユーザからの、同時多数検索クエリ要求に速やかに応答するため。1台のサーバでは応答性能に限界がありますが、インデックスのデータを分散配置させた複数サーバによって、同時に多数のクエリ要求に応答できるようになります)検索インデックスのデータを複製して分散配置する、「冗長化」によって・・・ハードウェア障害による検索システムの停止リスクを小さくするため。「SolrCloudを使って、複数マシンの処理を分散する」と言うと、何か1台のマシンでやるよりもすごいことのように聞こえるかもしれません。1台で可能なら、1台で実現するほうが、間違いなく簡単で安上がりです。下記のような「無意味なスケールアウト」はやめましょう。近年のIT技術の進歩は著しいものです。普通のPCサーバに詰めるメインメモリの量も、ずいぶんと大きくなりました。2018年1月現在、普通の1Uラックサーバでもメモリスロットが16本はあるでしょう。32GB✕16=512GBあるいは64GB✕16=1TBのメモリを搭載できる計算です。64GBメモリのマシンを8台調達するより、512GBメモリのマシン1台で済ませたほうが当然、安上がりです。1台で処理できない高負荷処理を多数のハードウェアで実現する「スケールアウト」とは完全に逆のアプローチです。既存の仮想サーバインフラ上に、あえて複数の仮想マシンを構築して処理を分散させるよりも、できるだけ高性能の仮想マシン1台を構築して処理させたほうが高性能になる可能性が高いでしょう。利用可能な総リソースが同じであるので、あえて分散させる理由はあまり見当たりません。「データアクセス(ファイルサーバ)が遅ければ、がんっばっても性能は出ません」ファイルサーバ検索エンジンの性能は、ファイルサーバの性能に依存します。ファイルサーバ上のデータに対するアクセス性能が低ければ、検索エンジンのインデックス構築の所要時間はどうしても長くなってしまいます。ファイルサーバのディスク性能にかぎらず、ファイルサーバと検索サーバ間のネットワーク性能も、ファイルサーバ全文検索システムの実用性能に大きく影響します。検索インデックス構築が遅いという場合があるかもしれませんが、10GbEネットワークが普及すれば、このボトルネックが一気に解消されることでしょう。全文検索エンジンは起動時にインデックスデータの読取りを行うため、インデックスのデータ量に比例した(再)起動時間が必要です。数千万文書のインデックスをハードディスクから読み取るだけで、起動処理に数十分を要することもありえますが、インデックスデータがSSD上に格納されていれば、その数十分を数分に短縮できたりするのです。SolrCloudによる分散構成は、性能問題に対する特効薬ではありません。時間が許すなら、安くて遅いディスク・ネットワークでも構いませんが、予算が許すなら、速いディスク/速いネットワークを選択して後悔することは無いでしょう。