タイムスタンプを x 軸として使用して、グラフとして表示する統計データを含む MySQL データベース テーブルがあります。たとえば、1 日と 2 年の分解能の間でグラフをズームインおよびズームアウトできるようにしたいと考えています。
ズームアウトした状態では、テーブルからすべてのデータを取得する必要はありません。これは、サーバーを介して大量のデータが送信されることを意味するためです。グラフの解像度は、データが少なくても十分です。
MySQL では、たとえば 10 番目ごとの値などのみを選択するクエリを作成できます。これは、この場合に使用できます。ただし、データベースに保存される値の間隔は一定ではありません。2 つの値は、最短で 10 分、最長で 6 時間、場合によってはそれ以上離れている可能性があります。
したがって、問題は、クエリの適切なステップ間隔を計算するのが難しいことです。何らかの解決のために 10 番目ごとの値をスキップすると、その間の一連の 10 分間は機能する可能性がありますが、6 時間間隔では、あまりにも多くを捨ててしまいます。グラフの解像度が低すぎて快適ではありません。
私の印象では、MySQL は時間に依存するステップ間隔を持つことができないため、含まれる行の 5 分付近などにある行をスキップします。
解決策の 1 つは、グラフの最小解像度要件として 6 時間を設定することです。そのため、グラフ内で 6 時間が十分に短い距離で表されない限り、値を破棄しません。間隔が実際に短い場合、システムを介して読み取られて送信されるデータが多すぎる可能性があるのではないかと心配しています。
もう 1 つの解決策は、Java コードにさらにインテリジェンスを持たせ、データのセットを低解像度から下方へ、データが十分に良好になるまで繰り返し読み取ることです。
大きすぎる結果セットをデータベースから読み取ることなく、データベースに過度の負荷をかけずに、1 回の読み取りで最適な解像度を得ることができるソリューションのアイデアはありますか? 値を保存するための中間 NoSQL コンポーネントをインストールするというワイルドなアイデアがあります。これは、希望どおりの時間間隔をサポートする可能性があります。それが実際に組織のオプションであるかどうかはわかりません。