2011-01-20 6 views
3

レポートを後で生成するために照会するセンサーデータを保存するデータベースを作成する必要があります(グラフとAVG/MAX/MINの値を一定期間表示する)。多数のセンサーデータレコードを保存する

データポイントは次のようになり:

CREATE TABLE [dbo].[Table_1](
    [time] [datetime] NOT NULL, 
    [sensor] [int] NOT NULL, 
    [value] [decimal](18, 0) NULL 
) 

データ(センサーに依存)秒から数分の範囲の間隔で添加することができます。

何年ものデータが蓄積されるとデータベースが大きくなりすぎるのではないかと心配してください(DBはMS SQL Server 2008ワークグループ版で動作します)。

+0

センサー数はいくつですか? 1か4000000000か –

+0

まだ決定されていますが、決定的には50未満です。 – grimmig

答えて

1

すべては、それに費やすリソースと労力によって異なります。 1秒あたり1行では、1年あたりセンサーあたり0.5GB以下の容量しかなく、非常に小さくなります。何千ものセンサーがある場合は、データのレポート作成や分析に役立つサマリー表を作成するかどうかを検討することをお勧めします。

このようなセンサーデータは、しばしば非常に反復的です。繰り返し値を格納する方が便利な方法があります。たとえば、異なる時間の複数の行ではなく、ある時間の範囲で1つの行を格納するなどです。

この種の時系列データの保存と管理に役立つソフトウェアパッケージが多数あります。また、あなたに役立つかもしれない主題に関する研究と文献の重要なボディがあります。もしあなたがそれに慣れていなければ、 "Process Historian"、 "Complex Event Processing"、 "SCADA"のような言葉をGoogleに送ります。

+0

実際には、データはSCADAシステムからのものです。;-) SQL Serverは、レポートシステムやオフィスアプリケーションをこの単純なテーブル構造に結びつけるのが簡単なデータ量を扱うことができるように見えるので、上記の表の設計を行っています。 – grimmig

0

データベースが大きくなりすぎるのではないかと心配している場合は、同じ構造でArchive_Tableを作成し、1か月に1回か6か月間(データ量に基づいて) 。

これにより、テーブルのレコード数を確認できます。もちろん、必要に応じてアーカイブテーブルを使用してレポートを作成することもできます。

1

そのテーブル

など、あなたがほかに追加どのようなインデックスを、どのように多くのセンサー、あなたがデータを使用するつもりかに依存し、示すように150万行(〜1つのセンサXを保存することができ1秒あたりの記録数×5年)を6GBまでの領域(ヒープを想定)。 file size limitは16テラバイトですが、ワークグループ版でこれに関する制限は認識されていません。

+0

私は、最終的な制限は524ペタバイト(データベースの制限ではなく、ファイルサイズの制限)と考えています。 – grimmig

+0

@grimmig - 元々はDBサイズの制限を設けていましたが、Workgroupエディションを指定して以来、パーティションテーブルを使用することはできません。したがって、1つのテーブルに保持する場合、そのテーブルは1つのファイルにしか存在できません。 –

+0

おかげで、ありがとう。 私のアプリケーションは、大部分のケースで第2の間隔を必要としないので、制限をはるかに下回ります。 – grimmig

3

OSISoftのPI Historianなど、このタイプのデータをリレーショナルデータベースよりも扱いやすい特殊な履歴データベースがあります。 PIを使用すると、データポイントごとに圧縮偏差を設定することができます。その偏差が少なくとも圧縮偏差だけ変化しない限り、データはアーカイブされません。指定されたポイントの履歴データを照会すると、PIに、指定された時間にアーカイブされた値の間の値であった値の補間を実行するよう依頼できます。

OSSoftのセールスマンになるつもりはないので、それはもっと多くのことが可能ですが、あなた自身でそれを調べなければなりません。しかし、これは間違いなく大量のセンサーデータを保存するための方法です。