Как спроектировать схему хранилища данных для эффективных запросов для системы BPMS? - PullRequest
2 голосов
/ 08 апреля 2011

Текущая ситуация:

У нас есть BPMS (пакет управления бизнес-процессами). Растет спрос на исторические и оперативные отчеты. Модель данных в BPMS не предназначена для исторических запросов. Поэтому мы анализируем возможные решения.

Решение в уме:

Идея состоит в том, чтобы отправить данные о событиях в поток во внешнюю базу данных. Типичные события в BPM: новый экземпляр процесса создан, статус изменен, был выполнен шаг в процессе или статус экземпляра процесса. Хранилище данных, кроме звездной схемы, является одной из интересных альтернатив. Предположим, есть два хаба: PI (экземпляры элементов процесса) и OU (организационная единица) и таблица ссылок LINK_PI_OU. Каждый раз, когда элемент процесса назначается организационной единице, в таблицу ссылок добавляется новая строка. LOAD_DATE в таблице ссылок содержит дату и время, когда эта запись была добавлена. Запись в таблице ссылок с самой последней LOAD_DATE показывает текущее назначение экземпляра процесса.

Вопрос:

Предположим, что бизнес хочет знать, кому в настоящее время назначены все открытые экземпляры процессов, сгруппированные по организационным подразделениям.
Как будет выглядеть запрос для этого отчета? Это действительно может быть быстрым? Или я на полном неправильном пути?

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Как сказал @Marcud D, Data Vault - это модель хранилища данных, и обычно при использовании DV-моделирования приходится создавать витрины данных из DV для целей отчетности.Я думаю, что организационная единица должна быть смоделирована как таблица Satellite, а не как таблица Hub.Так что, в любом случае, вы должны создать запрос для подачи конкретного витрина данных из модели DV, а затем использовать его для целей отчетности.

1 голос
/ 14 апреля 2011

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

Я не совсем понимаю вашу архитектуру, но, насколько я понимаю, D-V - это историческое хранилище, в котором хранятся все данные для предприятия, которое снабжает хранилище данных (Kimball / Inmon). Так что на высоком уровне ...

Транзакционные системы => D-V => DWH => (кубы =>) пользователи

В таком случае я бы не представлял запросы к хранилищу данных, вместо этого я написал бы несколько ETL, чтобы заполнить хранилище данных и ставить запросы в DWH.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...