Гиперстабильные столбцы шкалы времени против нескольких таблиц / нормализованной схемы - PullRequest
1 голос
/ 07 мая 2019

Я использую Timescale DB для хранения измерений со многих устройств.Поскольку большинство устройств до сих пор имели похожий набор метрик, я использовал гипертаблицу со многими столбцами (по одному на каждую метрику).

Однако некоторые новые устройства должны будут поддерживать разные метрики, и есть также производные значениякоторый мне нужно рассчитать и хранить для каждого устройства.

Так что, похоже, мне нужно хранить эти значения в виде отдельных таблиц или использовать нормализованный подход (метка времени, устройство, metric_type, value), если я хочу иметь общий способ сохранения данных временных рядов?

Подход схемы схемы "много столбцов" неправильный для измерений такого типа, или я делаю это неправильно?

1 Ответ

1 голос
/ 07 мая 2019

Здесь нет универсального ответа. Многое зависит от ваших шаблонов запросов и анализа. Но хорошее начальное правило - одна гипертабельная для каждого типа устройства.

Таким образом, устройства, в которых хранятся одинаковые показатели, хранятся вместе в таблице, но у вас есть разные таблицы для разных типов устройств. Если один тип устройства является просто обновлением предыдущего типа и имеет расширенный набор полей, я бы рекомендовал использовать ту же таблицу с новыми столбцами NULLable. NULLS в Postgres чрезвычайно дешевы, так как в них добавляются новые столбцы NULLable.

Я бы держался подальше от EAV / нормализованного подхода (отметка времени, устройство, metric_type, value), если вы не хотите, чтобы пользователи добавляли настраиваемые поля.

...