В нашем приложении мы поддерживаем плагины, написанные пользователем.
Эти плагины генерируют данные различных типов (int, float, str или datetime), и эти данные помечаются группами метаданных (пользователь, текущий каталог и т. Д.), А также тремя полями с произвольным текстом ( MetricName, Var1, Var2).
Теперь у нас есть данные за несколько лет, и я ' m пытаюсь разработать схему, которая обеспечивает очень быстрый доступ к этим показателям аналитическим способом (диаграммы и прочее). Это легко, пока есть только несколько показателей, которые нас интересуют, но у нас есть большое количество разных показателей с разной степенью детализации, и мы хотели бы хранить данные, добавленные пользователями, для последующего анализа (возможно, после изменение схемы).
Пример данных: (имейте в виду, что это очень упрощено)
=========================================================================================================
| BaseDir | User | TrialNo | Project | ... | MetricValue | MetricName | Var1 | Var2 |
=========================================================================================================
| /path/to/me | me | 0 | domino | ... | 20 | Errors | core | dumb |
| /path/to/me | me | 0 | domino | ... | 98.6 | Tempuratur | body | |
| /some/other/pwd | oneguy | 223 | farq | ... | 443 | ManMonths | waste | Mythical |
| /some/other/pwd | oneguy | 224 | farq | ... | 0 | Albedo | nose | PolarBear |
| /path/to/me | me | 0 | domino | ... | 70.2 | Tempuratur | room | |
| /path/to/me2 | me | 2 | domino | ... | 2020 | Errors | misc | filtered |
Любой может добавить плагин парсера, чтобы начать измерение метрики AirSpeed, и мы бы хотели, чтобы наши инструменты анализа «просто работали» по этой новой метрике.
Обновление:
Учитывая, что многие из MetricName хорошо известны заранее, я могу удовлетворить свои требования, если смогу включить анализ этих метрик и просто сохранить другие метрики, добавленные пользователем. Мы можем согласиться с тем, что новые метрики не будут доступны для интенсивного анализа без редактирования схемы.
Что вы, ребята, думаете об этом решении?
Я разделил наши показатели на три таблицы фактов: одну для фактов, для которых не требуется MetricTopic, одну для тех, которые нужны, и одну для всех остальных показателей. , включая неожиданные.
За щедрость:
Я приму любую критику, которая показывает, как сделать эту систему более функциональной, или приближает ее к лучшим отраслевым практикам. Ссылки на литературу придают дополнительный вес.