我使用PHP和MySQL构建了一个典型的web应用程序,以供企业使用。
MySQL数据库是尽可能多的3NF。
但是,随着时间的推移,对数据的请求似乎更多地是针对数据仓库的,这样他们就可以以任何他们想要的方式分割和剪切数据。
因此,我拿起了一本书,第3版数据仓库工具包的金球集团。
在本文中,作者描述了一个Kimball DW/BI体系结构,并将星型模式用于DW/BI的维度和事实表。见下文。

。
不会使用商业BI工具。任何看起来像OLAP或BI的东西都可能是一个开源软件,我可以自己来扩充。
请给我建议。
到目前为止,我的整个3NF MySQL数据库大约是2000万桶,每个月大约增长1MB。
发布于 2015-02-02 04:27:30
在回答您对我的评论的答复时,我提到了PostgreSQL为DW工作提供的一些领域--特别是CTEs (公共表表达式- AKA - WITH子句)和窗口函数(AKA - OVER子句)。
没有这些在MySQL中,您最终将编写自己的黑客来模仿这些(而且,没有不尊重,但是您的代码需要一段时间才能摆脱bug ),而在使用PostgreSQL时,您可以将它们从盒子中拿出来。PostgreSQL还具有更好的GIS支持(如果需要的话)和更好的JSON --仅在MySQL中进行实验。
看一看这里
PostgreSQL传统上专注于可靠性、数据完整性和集成的以开发人员为中心的功能。它有一个非常复杂的查询计划器,它能够有效地连接相对较多的表。另一方面,MySQL传统上一直专注于阅读--大多是用PHP编写的web应用程序,主要关注的是如何优化简单的查询。
DW类型的应用比后者需要更多的前者。
另外,请查看这 --这是两个系统的最新比较。我对此的看法是,PostgreSQL是两者中最好的,尤其是。为了DW的工作。
您可以仔细阅读这些页面中的PostgreSQL和MySQL特性。这里有一个特定的“宗教战争”元素,我注意到,你已经有了MySQL经验,这对你来说可能是一个有利因素。我祝愿你的DW项目一切顺利。
编辑回应OP的评论
我当然会敦促您为您的OLTP和OLAP工作建立单独的数据库--如果这是您的预算范围内的话。OLTP和OLAP本质上是不同的,如果你把它们混合在一起,就会有很多冲突--我知道“经理”坚持在白天针对一个实时系统运行报告所带来的痛苦--所以如果我是你,我会让MySQL作为我的OLTP系统,PostgreSQL作为我的OLAP。
但是无论您选择什么配置,我强烈建议单独使用服务器。
如果我被迫选择一个数据库和一个数据库,这将是PostgreSQL毫不犹豫。在第一次互联网繁荣期间,MySQL基本上是幸运的,在正确的时间和正确的地点拥有合适的软件。国际水文学组织,PostgreSQL无疑是技术上的优势。
我忍受MySQL没有恶意-我经常使用它(客户!)并发现,如果您可以接受或解决它的怪癖,它可以很好地表现,并有一些有趣的特性-特别是存储引擎的选择,你可以(不能用PostgreSQL)。
在MySQL的DW领域中,有两个有趣的发展可能预示着这一领域未来的发展--它们是柱状存储引擎-- 无限b和知音。目前的问题是,Infinidb似乎已经死了--尽管代码仍然可用,但安装指南已经消失,冰 (Infobright Community )本质上是残废的。您不妨评估一下企业版。
我建议您设置一些测试用例--想象一下您将运行什么样的报告,并在这两个系统上进行测试。特别要考虑到OLAP系统所需的复杂报告--我相信,您会发现更加丰富的PostgreSQL SQL语言是对它有利的有说服力的论点。
发布于 2015-02-02 04:46:19
虽然没有将重点放在特定的关系数据库管理系统上,但它涉及的问题是:
我是否应该将数据仓库星型模式与原始的3NF数据库单独放在一个数据库中?
我会说:是的!
OLTP (您称之为“原始3NF数据库”)和OLAP是查看数据的非常不同的方式,对于这两个不同的系统通常有非常不同的期望。因此,有不同的需求,导致不同的配置,等等。
而且,如果对“数据库”一词严格解释您的问题,使您的意思是在同一服务器上有两个单独的数据库,一个用于OLTP,另一个用于OLAP,我将澄清我的回答,即您确实需要单独的服务器:
https://dba.stackexchange.com/questions/90707
复制相似问题