2

スマートハウスの約12個のセンサーからデータを収集するアプリケーションがあります。次のテーブル形式でMySQLデータベースにデータを保存します。

CREATE TABLE IF NOT EXISTS `datapoints` (
  `PointID` int(11) NOT NULL,
  `System` varchar(50) NOT NULL,
  `Sensor` varchar(50) NOT NULL,
  `Value` varchar(50) NOT NULL,
  `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`PointID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

このSystem分野はセンサーをグループ化するためのものです。たとえば、「空気」システムには「温度」センサーと「湿度」センサーがあり、「ソーラーパネル」システムには「発電量(kW)」と「今日の生産量(kWh)」があります。フィールドはすべてvarchar、センサーから入力されるいくつかのデータ型があり、元のデータベース設計者が簡単に抜け出したためです。(このデータ構造はあまり効率的ではないことは知っていますが、変更するには遅すぎます。)

センサーには、気温、湿度、ソーラーパネル出力、ソーラーウォーターヒーター温度などが含まれます。

現在、毎日数万のデータポイントを収集するこのデータベースがあります。これまで、データベースにクエリを実行するアプリケーションを使用して、時間の経過に伴うセンサーデータのグラフを作成してきました。ただし、現在は数ギガバイトのデータがあり、最終的にはロギングハードウェアのストレージスペースが不足します。

データから統計を収集して削除する方法を探しています。私は[GoogleAnalytics| Piwik | データのAwstats]。問題は、どこから始めればいいのかわからないことです。より最近の時代のより詳細なデータを見ることができるようにしたいと思います。たとえば、次のようになります。

  • 1日分のすべてのデータ
  • 1週間分の1時間ごとのデータ
  • 1か月分の日次データ
  • 毎週と毎月の統計を永久に保持したいと思います。

ただし、データをあまり滑らかにしたくありません。最終的にはデータを平滑化する必要がありますが、できるだけ詳細に保持したいと思います。たとえば、発電量が大幅に増加した場合、それが時間単位のデータに平滑化(下)され、次に日次データで再び(下)、次に週次データで再び(下)、週のデータに平滑化されます。平均の平均はすべてのポイントの平均と同じではないため、スパイクがあったことを反映しません。

すでにこれを行っているソフトウェアはありますか?そうでない場合、開始するための良い方法は何ですか?私はどの言語でもそれを行うことができますが、.NET、PHP、またはC(Windowsの場合)(この順序で)が優先されます。これらは他のプロジェクトメンバーがすでに知っている言語であり、ロギングハードウェアがすでにセットアップされているためです。

4

2 に答える 2

1

あなたのデータの問題は非常に大きく、潜在的に制限がないので、あなたの問題を解決する単一のツールはないと思います。あなたはおそらくあなたの特定の問題のためにあなた自身のツールを発明する必要があるでしょう。

科学と工学のコミュニティで使用されているPythonベースのツールを確認する必要があると思います。これには、インタラクティブなデータ分析と視覚化のためのIPythonMatplotlibが含まれます。大きなデータ配列の処理と処理には、NumpyScipyを使用します。最後に、深刻な数値計算を行う必要がある場合は、SciKitLearnを検討してください。

幸運を。

于 2013-08-18T03:43:11.193 に答える
0

今日もこのプロジェクトを実行している場合(およびこのタイプの他のプロジェクトの場合)、時系列データベース(TSDB)を使用します。

TSDBは、時間の経過とともに大量のデータポイントを取り込み、それらの分析を可能にするために特別に設計されています。

私は今、別のプロジェクトのためにPostgreSQLのTimeScale拡張機能で遊んでいますが、それは私が必要としていたことを正確に実行していたでしょう。

于 2018-07-03T15:43:54.587 に答える