これと同じような質問をいくつか見つけましたが、保存されているデータの性質、クエリの方法などについての詳細は含まれていませんでした.
私のデータは非常にシンプルで、3 つのフィールドがあります。
私のアプリケーションは非常に書き込みが多い (1 秒あたり数百)。すべての書き込みは新しいレコードです。一度挿入されると、データは決して変更されません。
定期的な読み取りは数秒ごとに行われ、ほぼリアルタイムのダッシュボードに入力するために使用されます。日付/時刻の値と文字列値の 1 つに対してクエリを実行します。たとえば、datetimestamp が特定の範囲内にあり、フィールド "B" が特定の検索値と等しいすべてのレコードを取得します。これらのクエリは通常、それぞれ数千のレコードを返します。
最後に、データベースは無制限に拡大する必要はありません。手動で削除するか、DB がサポートしている場合はキャッシュ期限切れ技術を使用して、10 日以上前のレコードをパージすることを考えています。
私は当初、MongoDB でロックを処理する方法 (書き込みブロック読み取り) を認識せずに、これを実装しました。規模を拡大するにつれて、クエリにかかる時間がどんどん長くなります (適切なインデックス作成を行っても、現在は 30 秒以上)。私が学んだことから、大量の書き込みが私の読み取りを枯渇させていると信じています。
さまざまな NoSQL オプションを比較したkkovacs.euの投稿を読みました。多くのことを学びましたが、私のユース ケースに明確な勝者があるかどうかはわかりません。オプションに詳しい方からの推薦をいただければ幸いです。
前もって感謝します!