バックグラウンド
私たちは、「高性能」アプリケーション向けのソリューションを考え出すために、懸命に取り組んできました。このアプリケーションは、基本的には高スループットのメモリ内マネージャーであり、ディスクへの同期が行われます。「読み取り」と「書き込み」は非常に高く、1 秒あたり約 3000 トランザクションです。可能な限りメモリ内で実行しようとしますが、最終的にはデータが古くなり、ディスクにフラッシュする必要があり、これが大きな「ボトルネック」になります。アプリはマルチスレッドで、約 50 のスレッドがあります。IPC(プロセス間通信)はありません
試み
最初はこれを Java で書きましたが、一定の負荷がかかるまでは非常にうまく機能し、ボトルネックが発生して追いつくことができませんでした。その後、C# で試してみましたが、同じボトルネックに達しました。これをアンマネージ コード (C#) で試してみたところ、最初のテストでは MMF (メモリ マップ ファイル) を使用すると非常に高速でしたが、運用環境では読み取りが遅くなりました (ビューを使用しています)。CouchBase を試してみましたが、ネットワークの使用率が高いという問題に遭遇しました。これは、私たちの構成が不適切である可能性があります。
追加情報: Java の試み (非 MMF) では、ディスクにフラッシュする必要がある情報のキューを持つスレッドが、ディスクへの「書き込み」を維持できない程度までビルドされます。私たちの C# メモリ マップ ファイル アプローチの問題は、読み取りが非常に遅く、書き込みが完全に機能することです。何らかの理由で、ビューが遅い!
質問
問題は、大量のデータを転送しようとする状況です。誰かが支援できる可能性のあるアプローチまたはアーキテクチャ設計を支援してもらえますか? これは少し大雑把に思えるかもしれませんが、高性能、高スループットの特定の性質によって答えが絞り込まれるはずです。
そのようなレベルで Couchbase、MongoDB、または Cassandra を使用することを保証できる人はいますか? 他のアイデアや解決策をいただければ幸いです。