marcg:
私は後に400万名に増加して50万人以上の名前でオートコンプリートを実装する必要があります。
バックエンドは、春を使用してJavaのREST Webサービスの呼び出しです。私が使用する必要があるのMongoDB、RedisのかElasticsearchを名前を検索/保存および照会のために?
オプスターElasticsearch忍者:
これは非常に重要な検索ユースケースで、MongoDBのとRedisのは、キーベースの検索のために非常に優れているとElasticsearchは、このようなユースケースのために特別に構築された分散検索エンジン、である一方で、検索目的には使用しません。
システムを選択する前に、あなたはあなたの機能は、それを選択するため、と配慮の下に、内部でどのように機能するかを知っている必要があります。
あなたの機能の非機能要件
- 何秒あたりの検索クエリ(QPS)の合計がないだろうか?
- どのくらいの頻度であなたが書類(あなたの例ではつまり名前)を更新することでしょう。
- 更新され、検索結果に来るのが名前の後にSLAとは何ですか?
- 検索結果のSLA。
いくつかの機能要件。
- どのようにオートコンプリートは、名前で検索中置、接頭辞、のようになりますか?
- 最低何文字のユーザーは、彼らにオートコンプリートの結果を表示する前に、入力する必要があります。
- 上記の要件を変更することができますどのくらいの頻度。
Elasticsearchは、それゆえ、超高速検索では、(簡単にスーツのビジネス要件に合わせてカスタマイズすることができます)トークンの試合に転置インデックス内のドキュメントや作品をインデックス化。RedisのとMongoDBは内部的にこのような構造を持っていないと、このユースケースのために使用すべきではありませんそして、あなたはオートコンプリートを実装するためにこれらの上にElasticsearchを選択する任意の疑いを持つべきではありません。
オートコンプリートは、最も重要な機能の1つであるので、そこにある優秀なブログあなたがElasticsearcgとそのトレードオフが提供する様々なアプローチを理解するために読んでください。