В нашем приложении мы поддерживаем написанные пользователем плагины.
Эти плагины генерируют данные различных типов (int, float, str или datetime), и эти данные помечаются группами метаданных (пользователь, текущий каталог и т. Д.), А также тремя полями свободного текста ( MetricName, Var1, Var2).
Теперь у нас есть эти данные за несколько лет, и я пытаюсь разработать схему, которая обеспечивает очень быстрый доступ к этим метрикам в аналитическом виде (диаграммы и прочее). Это легко, если есть только несколько метрик, которые нас интересуют, но у нас есть большое количество разных метрик с разной степенью детализации, и мы хотели бы хранить данные, добавленные пользователем, для последующего анализа (возможно, после изменение схемы).
Пример данных: (пожалуйста, имейте в виду, что это очень упрощено)
=========================================================================================================
| 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, одну для тех, которые делают, и одну для всех других метрик, включая неожиданные.
Для награды:
Я приму любую критику, которая покажет, как сделать эту систему более функциональной или привести ее в большее соответствие с лучшими отраслевыми практиками. Ссылки на литературу дают дополнительный вес.