Каждая сущность создает ежечасные записи (24 записи в день).
Сущности организованы в трехуровневую иерархию, поэтому пользователи могут фильтровать данные на разных уровнях.
Основные требования:
- Каждая сущность создает одну запись в час
- Данные необходимо фильтровать по уровню иерархии
- Запросы включают:
Агрегацию за день, месяц или год - Обнаружение отсутствующих данных ежечасно записей
- Быстрая фильтрация по родительским уровням
Код: Выделить всё
categories
- id (PK)
- name
groups
- id (PK)
- category_id (FK)
- name
devices
- id (PK)
- group_id (FK)
- name
hourly_logs
- id (PK)
- device_id (FK)
- log_date (DATE)
- log_hour (TINYINT, 0–23)
- metric (DECIMAL)
- created_at (TIMESTAMP)
UNIQUE (device_id, log_date, log_hour)
INDEX (device_id, log_date)
- Подходит ли эта схема для обработки миллионов почасовых записей?
- Можно ли здесь рекомендовать разделение таблиц (по дате или устройству)?
- Существуют ли лучшие стратегии индексации для этого доступа шаблон?
- Следует ли добавлять сводные таблицы за день/месяц для повышения производительности?
- Есть ли какие-либо структурные изменения, которые улучшат масштабируемость?
В основном я ищу Рекомендации по проектированию и производительности схем для больших наборов данных, похожих на временные ряды, в реляционной базе данных.
введите здесь описание изображения
Подробнее здесь: https://stackoverflow.com/questions/798 ... lions-of-h
Мобильная версия