このアプリケーションは、短いテキスト(100〜1000文字の文字列)でレコードを保存します。特定のクエリテキストに最も類似したレコードの検索を提供します。テキストのインデックス作成にはLuceneを使用します。完全なレコードはデータベースに保存されます。各レコードは正確に1つのドメインに属しており、現在は1000を超えるドメインがあります。ドメインの数は無制限ですが、ゆっくりと成長します。レコードはすべてのドメインに継続的に追加されています(均一ではありません)。
Mysqlをデータベースとして採用し、各ドメインには独自のテーブルがありました。スケールアウトのため、MongoDBへの移行を試みます。すべてのレコードはそこに単一のコレクションに格納され、ドメインはレコードの属性です。IDは引き続きLucene検索から取得されます。ただし、Mysqlを使用したソリューションと比較して、MongDBからレコードをロードするとパフォーマンスが低下することがわかります。MongoDBの「メモリマップドストレージエンジン」が原因だと思います。各検索は「ランダムレコード」を返すことができます。多くの場合、1つのドメインから連続してより多くの検索が行われます。1つのドメインのレコードは、コレクション内の1つの場所に保存されません。これにより、多くのページフォールトが発生する可能性があります。
私の説明は正しいですか?MongoDBはそのようなレコードの読み込みに適していますか?何がパフォーマンスを向上させることができますか?MongoDBサーバーとアプリケーションはLinux上で実行されています。どうもありがとう。