10000 を超えるノード (増加する可能性があります) から数分ごとに生成されるテレメトリ データを保存する必要があり、それぞれがインターネット経由でサーバーにログ記録用のデータを提供します。また、Web アプリケーションからこのデータをクエリする必要があります。
最適なストレージ ソリューションを決定するのに少し苦労しています。
各ノードには一意の ID があり、変数の各パケットにはタイムスタンプがあります。(おそらく、サーバーによって生成される必要があります)。
テレメトリ データにはすべての変数が同じパケットに含まれているため、概念的には、変数ごとに列を持つ 1 つのデータベース テーブルに簡単に格納できます。シリアル番号 + タイムスタンプがキーとして十分です。各テレメトリ パケットのサイズは、デバイス ID とタイムスタンプを含めて 64 バイトです。つまり、年間約 100Gb+ です。
データをクエリして時間範囲全体の変数を取得し、このデータの集計レポートを保存してグラフを描画できるようにしたいと考えています。
さて、これをどのように処理するのが最善でしょうか?私は MySQL の使用にかなり慣れているので、これに傾倒しています。MySQL を使用する場合、デバイス ID ごとに個別のテーブルを用意することは理にかなっていますか? - これによりクエリがはるかに高速になりますか、それとも数万のテーブルが問題になるでしょうか?
一度にすべてのデバイスから変数を照会する必要はないと思いますが、必要になる可能性があります。または、すべてを単一のテーブルに貼り付けて、MySQL クラスターが非常に大きくなった場合に使用する必要がありますか?
または、より良い解決策はありますか?私はいくつかの非リレーショナル データベースを見回してきましたが、法案に完全に適合するものや非常に成熟しているように見えるものは見当たりません。たとえば、MongoDB は行ごとにかなりのサイズのオーバーヘッドがあり、MySQL と比較して、単一の変数の値を広い時間範囲でクエリする際にどれほど効率的かはわかりません。また、MySQL はしばらく前から存在しており、堅牢です。
また、データの複製とバックアップを簡単に行えるようにしたいと考えています。
任意のアイデア、または誰かが同様のことを行っている場合は、入力していただければ幸いです。