Хранить историю значений в PostgreSQL
Допустим, нам нужно хранить показания датчиков температуры и вести историю на каждый день. Каждая мера является кортежем day: number, value: string
(некоторые дни могут быть пропущены, поэтому мы должны хранить день явно). Есть сотни тысяч датчиков.
Добавление нового измерения не должно требовать перечитывания и перезаписи всего объекта, это должно быть небольшое добавочное добавление.
И может быть многократное чтение за один и тот же день. В таком случае, если день совпадает , следует сохранить только самое последнее измерение для этого дня.
Какую структуру данных следует использовать? Я вижу следующие пути:
CREATE TABLE sensor_history (
sensor_id integer,
time integer[],
value text[]
);
или же
CREATE TABLE sensor_history (
sensor_id integer,
history json/jsonb/hstore
);
1 ответ
Почему бы просто не хранить один ряд на кортеж? например
CREATE TABLE sensor_history (
sensor_id integer,
time integer,
value text
);