私は、センサー (水質汚染関連の活動) からデータを収集し、特定のイベントで特定のセンサーのデータを処理することを決定するクラウドベースのシステム (IaaS) を作成しようとしています。データの特徴は次のとおりです。 1. 各センサーのデータは、数日に 1 回 (月に 6 回まで) 送信されます。このような「セッション」には約 20 分かかり、メッセージは 5 秒ごとに送信されます) 3. 1 秒あたり 30,000 メッセージのレートを処理するシステムを構築しています。4. データの処理はリアルタイムであってはなりません。「セッション」が終了してから約 10 分で処理を行います。5. セッションの 90% は面白くなく、終わったらすぐに捨てることができます。
1 秒あたり 5000 メッセージを生成するツールを作成し、シナリオに最適なデータベースを見つけようとしています。これらは私が試してみようと考えているデータベースです:
Cassandra - セッションごとにキーのメモリ コレクションを保存します。キーは、cassandra に保存されているメッセージ用です。不正な読み取りを含むメッセージを検出したら、「セッション」内の他のすべてのメッセージをプルして処理する必要があります (つまり、cassandra への 50 ~ 100 のリクエスト)。ここでの私の懸念は、書き込みパフォーマンスに関するものです (多くの読み取り操作と書き込み操作があるため) + 不要なセッションの 90% を削除するための適切な戦略がありません。
Couchbase - センサー ID に従って「セッション」ごとにドキュメントを保存し、各メッセージをドキュメントに追加します。不適切な読み取りを含むメッセージを検出したら、ドキュメントの要求を 1 回送信するだけで済みます。ここでの私の懸念は、読み取りパフォーマンスに関するものです。
Redis - Cassandra のように使用します。パフォーマンスは最高になると思いますが、メモリ制限に達しないように、データのシャーディングとレプリケーションを自分で処理する必要があります
どのオプションが最も適切かを知りたい
ありがとう