星型模式,用于通过更改数据实现近实时分析

时间:2010-11-02 10:49:35

标签: mysql analytics olap star-schema

我为医疗软件实施分析。要处理的数据主要与约会有关。我正计划实施星型模式来生成报告。我有一些疑惑

  1. 我的数据可以更改,因为约会可以被标记为稍后取消,我读到在星型模式中更改数据不是一个好主意。如果不是什么是更好的方法。
  2. 当数据添加到主数据库时,后台任务将插入事实表的数据。将数据不断插入事实表是一个问题,因为几乎在任何时候都可以在应用程序中重新发送数据。
  3. 我打算在mysql中实现它,如果有人可以指点我用这种结构转换为mysql性能的帖子,那就太好了。还有一个更好的引擎来实现这个架构Innodb或Myisam
  4. 感谢。

2 个答案:

答案 0 :(得分:3)

我将尝试回答与特定数据库技术无关的一般术语(我是MS SQL Server DWH人员)。

解决您的具体问题......

“1.我的数据可能会像预约一样被更改,以后可以被标记为已取消,我读到在星型模式中更改数据并不是一个好主意。如果不是,那么什么是更好的方法。”

DWHes Fact表和Dimension表中有两种主要的表类型。

更改星型模式中的事实或维度数据是完全有效的。从DWH中删除维度记录不是一种好的做法。

您需要选择类型1(重写历史记录)或类型2(保留历史记录)对数据的更改(Slowly Changing Dimension)。

我不确定你是否建议删除事实记录,但更好的方法是在每个事实记录上都有一个标志,以指示约会的状态(预订/使用/取消/等)以及是否患者取消他们的预约然后将事实记录从status = booking更改为status = cancel;实际上没有删除事实记录。这样,您也可以跟踪已取消的约会数。

要添加复杂功能,您可以让事实表保留历史记录,以便您可以显示“as at”位置,即能够在特定时间点显示数据库的状态。这会大大增加数据库的大小,具体取决于发生的更改次数。

“2。当数据添加到我的主数据库时,我的事实表的数据将由后台任务插入。数据不断插入事实表是一个问题,因为在应用程序中几乎可以随时重新发送数据。“

您需要围绕更新频率/拥有最新数据的重要性进行讨论。通常(因为我确定你是aare)DWHes不是OLTP系统,因此不打算不断更新新数据并能够在最新数据上报告。如果你真的想要一个OLTP系统。

尽管如此,我们已经实施了一个每20分钟更新一次的DWH。这有一个SQL DWH,顶部有一个OLAP多维数据集。我不确定mysql是否有OLAP技术,但我确信有一些开源版本可用。有几种OLAP(MOLAP / ROLAP / HOLAP)可以不同地关注性能/数据货币。

您通常希望将DWH本身与报告数据库层分开,尤其是在有许多用户的情况下。

“3。我打算在mysql中实现它,如果有人可以指点一些与这种结构有关的mysql性能的帖子那就太棒了。这也是一个更好的引擎来实现这个架构Innodb或Myisam“

我必须传递这个问题。我曾经对InnoDB和MyISAM有所了解,但是自从我使用这项技术以来已经有8年了。

关于Star Schema DWH设计的一本非常好的书是Ralph Kimball on DWH Design Book

答案 1 :(得分:2)

我会推荐InnoDb。因为在较新版本中有很多与性能相关的更改(感谢Google)。 大多数更改都是在5.5版本中完成的,处于RC阶段。我建议你试试5.5。

http://dev.mysql.com/tech-resources/articles/introduction-to-mysql-55.html

http://dev.mysql.com/doc/refman/5.5/en/mysql-nutshell.html

这是一篇与实施Star Schema相关的白皮书,我希望你发现它很有用。

http://www.ciobriefings.com/Publications/WhitePapers/DesigningtheStarSchemaDatabase/tabid/101/Default.aspx