我为医疗软件实施分析。要处理的数据主要与约会有关。我正计划实施星型模式来生成报告。我有一些疑惑
感谢。
答案 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相关的白皮书,我希望你发现它很有用。