AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 90707
Accepted
Kim Stacks
Kim Stacks
Asked: 2015-02-01 06:08:02 +0800 CST2015-02-01 06:08:02 +0800 CST 2015-02-01 06:08:02 +0800 CST

有一个单独的数据库用于数据仓库吗?

  • 772

我已经使用 PHP 和 MySQL 构建了一个典型的 Web 应用程序,供企业使用。

MySQL数据库尽量采用3NF。

然而,随着时间的推移,对数据的请求似乎更多地是针对数据仓库,以便他们可以以任何他们想要的方式对数据进行切片和切块。

因此,我拿起了一本书 Kimball Group 的第 3 版数据仓库工具包。

作者在内部描述了 Kimball DW/BI 架构,并为 DW/BI 目的使用星型模式用于维度表和事实表。见下文。

在此处输入图像描述

我的问题是,由于我最熟悉 PHP 和 MySQL,我是否应该在与原始 3NF 数据库不同的数据库中拥有数据仓库星型模式?

不会使用商业 BI 工具。任何看起来像 OLAP 或 BI 的东西都可能是我可以扩充自己的开源软件。

请指教。

编辑

我的整个 3NF MySQL 数据库目前大约是 20mb,到目前为止每月增长大约 1mb。

data-warehouse business-intelligence
  • 2 2 个回答
  • 2407 Views

2 个回答

  • Voted
  1. Best Answer
    Vérace
    2015-02-02T20:27:30+08:002015-02-02T20:27:30+08:00

    在回复您对我的评论的回复时,我提到了 PostgreSQL 在 DW 工作中的一些亮点——特别是CTEs(公用表表达式 - AKAWITH子句)和窗口函数(AKAOVER子句)。

    如果在 MySQL 中没有这些,您最终将编写自己的 hack 来模拟这些(并且,没有不尊重,但您的代码需要一段时间才能消除错误),而使用 PostgreSQL,您可以将它们开箱即用。PostgreSQL 也有更好的GIS支持(如果你需要的话)和更好JSON的——只在 MySQL 中是实验性的。

    看看这里

    PostgreSQL 传统上专注于可靠性、数据完整性和以开发人员为中心的集成特性。它有一个极其复杂的查询计划器,能够有效地连接相对大量的表。

    另一方面,MySQL 传统上专注于以读取为主的 Web 应用程序,通常用 PHP 编写,其中主要关注的是优化简单查询。

    DW 类型的应用程序需要的前者远多于后者。

    另外,检查一下- 两个系统的最新比较。我对此的看法是 PostgreSQL 是两者中更好的,尤其是。用于 DW 工作。

    您可以仔细阅读这些页面以了解PostgreSQL和MySQL功能。这里有一定的“宗教战争”元素,我注意到你已经有 MySQL 经验这对你来说可能是一个关键。祝你的 DW 项目一切顺利。

    [编辑回应OP的评论]

    我当然会敦促您为您OLTP和您的OLAP工作拥有单独的数据库 - 如果这在您的预算范围内。OLTP并且OLAP根本不同,如果将它们混合使用,您将遇到很多冲突-我知道“经理”坚持在白天针对实时系统运行报告所带来的痛苦-因此,如果我是您,我会将 MySQL 作为我的OLTP系统和 PostgreSQL 作为我的OLAP.

    但无论您选择何种配置,我都强烈建议您使用单独的服务器。

    如果我被迫选择一个数据库并且只选择一个,我会毫不犹豫地选择 PostgreSQL。在第一次互联网繁荣期间,MySQL 本质上是幸运的,并且在正确的时间和正确的地点使用了正确的软件。恕我直言,PostgreSQL 在技术上无疑是优越的。

    我对 MySQL 没有恶意——我用过很多次(客户!),发现如果你能忍受或解决它的怪癖,它的性能会非常好,并且有一些有趣的特性——尤其是可以做出的存储引擎选择(PostgreSQL 不能做到这一点)。

    在 MySQL 的 DW 领域中,有两个有趣的发展可能预示着未来在这个领域的好兆头——它们是列存储引擎——Infinidb和Infobright。目前的问题是 Infinidb 似乎已经死了 - 即使代码仍然可用,安装指南已经消失,ICE(Infobright 社区版)本质上是 crippleware。您可能希望评估企业版。

    我敦促您设置一些测试用例 - 想象一下您将运行什么样的报告并在两个系统上尝试它们。特别考虑OLAP系统所需的复杂报告——我相信你会发现更丰富的 PostgreSQL SQL 语言是一个有说服力的论据。

    • 4
  2. Solomon Rutzky
    2015-02-02T20:46:19+08:002015-02-02T20:46:19+08:00

    虽然不关注特定的 RDBMS,但对于以下问题:

    我是否应该在与原始 3NF 数据库不同的数据库中拥有数据仓库星型模式

    我会说:绝对是的!

    OLTP(您称之为“原始 3NF 数据库”)和 OLAP 是查看数据的非常不同的方式,并且通常对这两个不同的系统有非常不同的期望。因此,有不同的需求导致不同的配置等。

    而且,如果严格按照“数据库”一词来解释您的问题,那么您可能意味着在同一台服务器上拥有两个单独的数据库,一个用于 OLTP,一个用于 OLAP,我会澄清我的回答是说您确实需要单独的服务器:

    • 您应该能够在不影响另一个系统的情况下关闭其中一个系统进行维护。
    • 在某些时候,您可能需要在节点方面增加 OLTP 端,但对于 OLAP 端,您可能希望增加具有更多内存、磁盘等的服务器。
    • 您最终可能会将几个不同的 OLTP 系统聚合到一个 OLAP 系统中

    • OLTP = OnLine Transactional Processing
      这些是“源交易”/“可操作源系统”
    • OLAP = OnLine Analytical Processing
      这是“前厅”/“数据展示区”中的“展示区”
    • 3

相关问题

  • 创建 MV 日志时是否需要枚举物化视图中使用的列?

  • 结合零售销售和支付 OLAP 多维数据集

  • 开源商业智能/DWH 解决方案 [关闭]

  • 数据仓库创建

  • 在数据仓库中实现多对多关系有哪些方法?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve