2011-04-08 48 views
2

当前状况:如何设计用于BPMS系统高效查询的数据仓库模式?

我们有一个BPMS(业务流程管理套件)。对历史和执行报告的需求日益增加。 BPMS中的数据模型不适用于历史查询。所以我们正在分析可能的解决方案。

解决记住:

的想法是在流事件数据推到外部数据库。 BPM中的典型事件是:创建新流程实例,更改状态,执行流程中的一个步骤或更改流程实例的状态。数据保险库除了星型模式之外还有其他有趣的选择。假设有两个集线器:PI(processitem实例)和OU(组织单位)以及一个链接表LINK_PI_OU。每次将处理项目分配给组织单位时,都会将新行添加到链接表中。链接表中的LOAD_DATE包含添加此记录的日期时间。带有最新LOAD_DATE的链接表中的记录显示了流程实例的当前分配。

问:

让我们假定企业想要知道谁所有打开的程序实例当前分配由组织单位分组。
查询如何将看起来像这个报告?它可以真正表现吗? 还是我在完全错误的方式?

+1

您的示例查询并没有真正看起来像一个历史查询,因为它是开放的流程实例及其当前任务(由目前的OU想必分组)。 – 2011-04-11 04:31:46

+0

是的,你是对的。重点是,对于所描述的模式,很容易创建一个历史的问答。问题是,我是否也可以将此模式用于操作查询。 – Waldemar 2011-04-11 11:40:27

+1

@Waldermar这将取决于很多关于您的架构(显然从实时数据的数据仓库的更新速度)。有时在DW中,如果您没有特定的快照样式时间粒度,因为恒星可能是高度事务性的(即所有当前事实不共享公共的data_dt_id),因此很难做到每日点。另一方面,对于每日谷物而言,通常就像基于MAX(data_dt_id)拉取所有东西一样简单。我发现尺寸模型非常高效,而且与传统的标准化实体模型相比,查询也非常容易。 – 2011-04-11 14:17:50

回答

1

一般地说我没有认为数据保管库旨在是终端用户报告层或甚至一个虚假的事务处理系统。

我不是完全清楚你的archectiture,但在我的理解d-V是一个历史资料库,保持所有数据为食的(金博尔/ Inmon)数据仓库的企业。因此,在高层次方面...

交易系统=> DV => DWH =>(立方体=>)用户

既然如此,我不会冒充查询到数据保险库,而是我会编写一些ETL来填充数据仓库并在DWH中提出查询。

另一种观点,我想是,你可以建立在DV顶部的一组视图,这将隐藏用户的结构,但我认为我是一个纯粹主义者,并会去为DWH。

1

正如@Marcud d表示,数据保险库是数据仓库的模型,通常是使用DV造型的时候,你必须建立从DV数据集市进行报告。我认为组织单位应该被建模为Satellite表,而不是Hub表。因此,无论如何,您应该构建一个查询,以便从DV模型中提供特定的数据集市,然后将其用于报告目的。

+0

感谢您的回复! _关于使用卫星而不是链接:_ 在卫星表中,通常插入条目并且不更新条目。因此,查找最后一个条目的问题与链接表中的相同。 – Waldemar 2011-04-19 15:04:57

+0

_关注数据集市:_ 如果我理解正确,数据集市将聚集大量数据用于特殊目的。要计算此聚合,它需要执行时间。在我的情况下,数据集市可以通过使用Link表中LOAD_DATE上的max()函数的查询实现为物化视图。由于此查询非常昂贵,因此此视图中的数据不能始终保持最新状态。 – Waldemar 2011-04-19 15:05:17

+0

一般来说,操作查询必须经常执行,并且他们应该很快完成日期。 (例如“哪些流程实例当前在我的组织单位中?”)。 历史查询不需要非常及时。 “一小时前”的状态通常是可以接受的。 所以对我来说问题是,如果数据保险库真的是BPM仪表板的合适工具。 – Waldemar 2011-04-19 15:05:35