iamkisly
@iamkisly
Собираю админки на dotnet и extjs

Таблица с дискриминатором или раздельные таблицы?

Хочу разместить хранение статистики в postgres: 15 минутные срезы, часовые, суточные, недельные, месячные (лол) и годовые. Как это лучше оформить? По отдельной таблице на масштаб, или вставить столбец с дискриминатором. Кластеризация возможна в обоих случаях, в последнем будет экономиться место.. но работать будет вероятно одинаково медленно как часовая выборка, так и месячная. Запись будет вероятно производиться куда чаще, чем чтение.
Что бы вы мне посоветовали исходя из того, что я сейчас еще не знаю возможной нагрузки на БД?
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Если нет особых требований, то пока удобно создать такие таблицы:

Таблица "План накопления статистики"
id - идент. плана
begin_date - дата/время начала сбора статистики
end_date - дата/время окончания сбора статистики
name - название плана
description - описание плана
interval - интервал накопления статистики в секундах
... - другие параметры плана

Таблица "Точка фиксации показателей"
id - идент. точки
plan_id - инд. плана накопления статистики
begin_date - дата/время начала сбора данных для точки фиксации
end_date - дата/время окончания сбора данных для точки фиксации

Таблица "Агрегированные показатели точки фиксации"
id - идент. показателя
Name - название показателя
measure_id - инд. единицы измерения показателя (тоже нужна таблица справочник: байты, биты, байт/с, Ватт, Кг и т.д.)

Таблица "Значения агрегированных показателей точки фиксации"
id - идент. значения показателя
point_id - идент. точки фиксации
param_id - идент. показателя
value_int - значение показателя в целых числах
value_flt - значение в вещественных числах
value_str - значение в строковом представлении
value_... - если нужен еще какой-то тип данных, которых можно индексировать.

Можно в ручном режиме создать запись плана накопления статистики.
Скриптом планировщиком можно считать по каждому плану последнюю запись точки фиксации и туда накапливать значения показателей. Кол-во показателей в каждой точке может быть задано произвольное, и их можно менять в процессе мониторинга.
Также можно пересобирать статистику, имея первичные данные и заполненный ранее план.
Создание индексов на value и внешние ключи позволит быстро работать данной структуре.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы