Привет!
Не очень уверена что вопрос в правильную ветку, но все же.
У меня есть отчет с бизнес метриками которые собираются запросами.
Его надо автоматизировать, но каждый раз когда я думаю над структурой мне не нравится тот вариант, который получается и я откладываю до следующего месяца, и так почти год. В общем сейчас я решила написать какие варианты я вижу, чтобы в итоге сделать что то приемлемое.
Что в отчете: часть данных это числовые значения. Например такое простое соответствие
Всего клиентов: 10
Всего запросов: 20
Всего обращений к сайту: 5
ну и так далее.
И тут мне кажется я делаю справочник с тем какие бизнес значения у меня есть
и таблицу значений с датой сбора. И счастье. Но есть еще другие запросы.
Например
Топ 20 компаний по кол-ву пользователей
Ид Компании Название компании Кол-во юзеров
Потом кол-во юзеров по серверам, кол-во запросо по серверам и еще пара метрик - общее кол-во на сервер.
В теории сейчас я вижу 3 типа:
1. итог - одно значение
2. итог по серверу - сервер значение
3. топ клиентов - по сути итог разбитый не по серверу а по внешнему значению, для которого нужно еще подтянуть название из справочника.
Для расчета этого всего счастья будет JOB, вопрос в том как уже рассчитанные значения хранить. Вот варианты которые я вижу
Важный момент - что текущая версия будет пополняться разными другими итогами. И не только.
1. Засунуть все в XML и тогда не важна структура
Плюс:
+ гибкость
Минус:
- сложность поддержки (исходя из моего опыта никто не хочет лезть в что-то с динамическим sql и в что-то где есть xml)
- нет возможности по нему без преобразования делать выборки
2. Сделать таблицу справочник что у нас есть в отчете и 2 таблицы - одна для простых значений, другая для много строчных
Плюс:
+ просто поддерживать
+ можно делать выборки в SQL по значениям
Минус
- разнородность стуктуры - в одну таблицу за одним ходи, в другую за другим
- не понятно как "красиво" сделать таблицу для многострочных данных - по сути мне кажется норм будет в однострочную добавлять ключ - и потом в многострочной делать данные связанные с этим ключом. Вопрос в другом - как быть с компаниями - хранить ид и значение а за называнием лазить в справочник? как то тоже не очень красиво.
- не будет работать если в много строчной будет больше чем 2 колонки, ну или будет если сделать сразу 5, но как только появиться что-то шире - надо будет добавлять
- нет возможности делать разные типы (хотя сейчас есть только BIGINT)
3. Таблица справочник + таблица значений, значения всегда в одной таблице, таблица с например 5ю полями на вырост
В общем плюсы и минусы те же что в предыдущем, за исключением того что все в одной таблице - и сложное и простое.
Не очень уверена что вопрос в правильную ветку, но все же.
У меня есть отчет с бизнес метриками которые собираются запросами.
Его надо автоматизировать, но каждый раз когда я думаю над структурой мне не нравится тот вариант, который получается и я откладываю до следующего месяца, и так почти год. В общем сейчас я решила написать какие варианты я вижу, чтобы в итоге сделать что то приемлемое.
Что в отчете: часть данных это числовые значения. Например такое простое соответствие
Всего клиентов: 10
Всего запросов: 20
Всего обращений к сайту: 5
ну и так далее.
И тут мне кажется я делаю справочник с тем какие бизнес значения у меня есть
и таблицу значений с датой сбора. И счастье. Но есть еще другие запросы.
Например
Топ 20 компаний по кол-ву пользователей
Ид Компании Название компании Кол-во юзеров
Потом кол-во юзеров по серверам, кол-во запросо по серверам и еще пара метрик - общее кол-во на сервер.
В теории сейчас я вижу 3 типа:
1. итог - одно значение
2. итог по серверу - сервер значение
3. топ клиентов - по сути итог разбитый не по серверу а по внешнему значению, для которого нужно еще подтянуть название из справочника.
Для расчета этого всего счастья будет JOB, вопрос в том как уже рассчитанные значения хранить. Вот варианты которые я вижу
Важный момент - что текущая версия будет пополняться разными другими итогами. И не только.
1. Засунуть все в XML и тогда не важна структура
Плюс:
+ гибкость
Минус:
- сложность поддержки (исходя из моего опыта никто не хочет лезть в что-то с динамическим sql и в что-то где есть xml)
- нет возможности по нему без преобразования делать выборки
2. Сделать таблицу справочник что у нас есть в отчете и 2 таблицы - одна для простых значений, другая для много строчных
Плюс:
+ просто поддерживать
+ можно делать выборки в SQL по значениям
Минус
- разнородность стуктуры - в одну таблицу за одним ходи, в другую за другим
- не понятно как "красиво" сделать таблицу для многострочных данных - по сути мне кажется норм будет в однострочную добавлять ключ - и потом в многострочной делать данные связанные с этим ключом. Вопрос в другом - как быть с компаниями - хранить ид и значение а за называнием лазить в справочник? как то тоже не очень красиво.
- не будет работать если в много строчной будет больше чем 2 колонки, ну или будет если сделать сразу 5, но как только появиться что-то шире - надо будет добавлять
- нет возможности делать разные типы (хотя сейчас есть только BIGINT)
3. Таблица справочник + таблица значений, значения всегда в одной таблице, таблица с например 5ю полями на вырост
В общем плюсы и минусы те же что в предыдущем, за исключением того что все в одной таблице - и сложное и простое.