Хранилище данных произвольных полей - PullRequest
8 голосов
/ 16 сентября 2010

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

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

Metrics Schema #3


Для награды:

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

Ответы [ 2 ]

5 голосов
/ 16 сентября 2010

Если я правильно понимаю, вы ищете схему, которая бы поддерживала создание мер в DW. В классическом хранилище данных каждая мера представляет собой столбец, поэтому в звездочке Kimball вам нужно будет добавить столбец для каждой новой меры - изменить схему.

То, что у вас есть, - это модель EAV, и аналитика по EAV - это не просто и не быстро - посмотрите на это обсуждение .

Я бы посоветовал вам взглянуть на такие инструменты, как splunk , который подходит для таких задач.

2 голосов
/ 16 сентября 2010

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

У вас не так много фактов. Там не так много юнитов.

Факты имеют единицы. Секунды, фунты, байты, доллары.

Вам необходимо ознакомиться с дизайном «Звездной схемы». У вас есть измерения (вероятно, много) и измеримые факты (вероятно, очень мало).

У вас есть связь между фактами и всеми связанными измерениями. Вы можете делать суммы, рассчитывать на факты и группировать по измерениям.

Вы не можете иметь тысячи независимых фактов. Это почти невозможно. Но вы можете иметь тысячи комбинаций измерений, это часто встречается.

Отделите факты (измеримые величины, которые приятно складываются) от измерений (качеств определений), и у вас должно быть много измерений вокруг нескольких фактов.

Купите копию Кимбалла.

...