Проектирование базы данных метеостанции, получение данных каждого второго датчика - PullRequest
0 голосов
/ 11 декабря 2010

Если я буду хранить данные каждую секунду, база данных будет быстро расти.Мне нужно иметь меньше деталей измерений несколько недель / месяцев назад.Среднее было бы достаточно.У меня 5 датчиков: скорость ветра, направление ветра, температура, свет и дождь.Как бы я спроектировал свою базу данных?

1 Ответ

0 голосов
/ 11 декабря 2010

Ну, я бы разработал таблицу для текущих данных, а затем таблицы с агрегированными данными. Время от времени (возможно, еженедельно / еженедельно / ежемесячно) я собирал данные, записывал их в таблицы и удалял из текущих данных.

У меня была бы точно такая же таблица (поля: идентификатор измерения, скорость ветра, направление ветра, температура, свет и дождь, отметка времени) для каждого необходимого уровня агрегации.

  1. measurements_weekly
  2. measurements_daily_average
  3. measurements_weekly_average
  4. measurements_monthly_average
  5. measurements_yearly_average

Это имеет несколько преимуществ: Данные могут управляться отдельно (резервное копирование / подробные отчеты и т. Д.). Вам просто нужна одна процедура агрегирования для всех уровней агрегации и запускать ее с разными временными панелями и таблицами в качестве аргументов. Запросы к любой таблице и, следовательно, анализ будут быстрыми и эффективными.

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

...