0

SQLは初めてです。アドバイスしてください。

将来のグラフプロットのために、センサーからの受信データを5秒ごとにログに記録したいMySQLでデータベースを設計するための最良の方法は何ですか?

  • 時間、日、週、月ごとにグラフを表示したい場合、タイムスタンプを使用してログに記録し、AVG関数を使用できますか?

または、データベースのサイズを減らすために、ログに記録して1分、1時間、1日ごとに平均をとることができますか

トリガー機能を使用して、1分以上のデータを収集するときに平均をとることはできますか?

4

2 に答える 2

0

答えは、実際にログに記録するデータの量、データをクエリする頻度、および応答時間をどれだけ速くする必要があるかによって異なります。センサーが1つしかない場合は、5秒ごとに、通常のSQLクエリで多くの問題が発生することなく、妥当な期間内に平均や合計などを引き出すことができます。

経験から、SQLと時系列データで多くのことができると言いますが、クエリの設計方法には細心の注意を払う必要があります。私は、数十億の行とそれらの行の中に数万の個別のセンサーがある時系列テーブルを使用してきました。その多くの時系列行で非常に高速な実行を実現することは可能ですが、データベースを微調整するために1週間を費やす場合があります。それは間違いなく柔軟性とスピードの間のトレードオフです。

繰り返しになりますが、あなたの目的のために、1つのセンサーについて話しているだけでは、おそらくそれほど大きな違いはありません。通常のSQLクエリを作成するだけです。ただし、センサーをさらに数百個追加したり、サンプルレートを上げたりすることが予想される場合は、提案どおりに定期的な「ロールアップ」機能の実行を検討することをお勧めします。その場合、NoSQLデータベース(Cassandra、Couchbaseなど)を使用し、定期的に実行されるプログラムを使用してロールアップを実行するカスタムソリューションを作成する傾向があります。興味のある方は詳細をお知らせしますが、それほど遠くまで行く必要はないと思います。

この投稿には、SQLとNOSQLでの時系列データの保存に関するかなり良い議論があります: https ://dba.stackexchange.com/questions/7634/timeseries-sql-or-nosql

于 2012-10-01T15:01:57.110 に答える
0

RRDtoolについて読む必要があります。

RRDtoolのWebサイトから:

RRDtoolは、時系列データ用のOpenSource業界標準の高性能データロギングおよびグラフ作成システムです。

http://oss.oetiker.ch/rrdtool/

使用したくない場合(複雑すぎたり、アプリケーションには大きすぎたりする可能性があります)-これがどのように作成されるか、情報がどのように保存されるかなどを確認してください。

于 2012-10-01T16:32:27.310 に答える