2017-08-11 19 views
0

温度センサーの読み取り値を保存し、毎日履歴を保存する必要があるとします。各メジャーはタプルday: number, value: stringです(ある日は見逃される可能性があるため、その日を明示的に保存する必要があります)。何十万ものセンサーがあります。PostgreSQLに値の履歴を保存する

新しい測定値を追加すると、オブジェクト全体を再読み込みして書き換える必要はありません。小さなインクリメンタル加算である必要があります。

また、同じ日に複数の読みがある可能性があります。そのような場合、日が同じである場合その日の最新の測定値のみをに保つ必要があります。

どのようなデータ構造を使用する必要がありますか?

CREATE TABLE sensor_history (
    sensor_id integer, 
    time  integer[], 
    value  text[] 
); 

または

CREATE TABLE sensor_history (
    sensor_id integer, 
    history json/jsonb/hstore 
); 
+1

デザインに関係なく、多くの情報を格納します。 NoSQLを使用して調べましたか? –

+0

はい、私はNoSQLについてのあなたの意見を見ていますが、この場合はPostgreSQLのほうがよいでしょう。 –

+0

これは、データの処理計画によって異なります。 RDBMS機能のログが必要ない場合は、NoSQLデータストアがより魅力的になります。 –

答えて

1

なぜだけではなく、組ごとに1行を格納します。私は、次の方法を見ることができますか?例えば

CREATE TABLE sensor_history (
    sensor_id integer, 
    time  integer, 
    value  text 
); 
+0

ええ、多分。しかしそれは効率的でしょうか?センサーが1万個ある場合、1ヶ月後には30mlnの歴史があり、1年後には360mlnになります。 –

+1

どのように効率的ですか?私はテーブルに何十億行もの問題がないデータベースを扱ってきました。フル・テーブル・スキャンを実行する問合せを実行しようとしていない限り、大きな問題はありません。 sensor_idにインデックスを付けると、例えば、特定のセンサからのデータを読み込むためのフルスキャンができなくなります。 – wmorrell

関連する問題