Хранилище данных произвольные поля

В нашем приложении мы поддерживаем плагины, написанные пользователем.

Эти плагины генерируют данные различных типов (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, одну для тех, которые нужны, и одну для всех остальных показателей. , включая неожиданные.

Metrics Schema #3


За щедрость:

Я приму любую критику, которая показывает, как сделать эту систему более функциональной, или приближает ее к лучшим отраслевым практикам. Ссылки на литературу придают дополнительный вес.

8
задан bukzor 27 September 2010 в 20:40
поделиться