MySQL 和 PostgresSQL 中的数据仓库是否可行?

Jeh*_*adK 6 mysql postgresql data-warehouse olap

我对数据库设计和开发相当陌生。我的要求是基于时间和单词语言(特定日期的语言)进行简单的钻取/切片。但是,我的数据库是 mysql。但到目前为止,我还没有运行这些查询的运气,所以我手动计算这些数据并存储在表中。

为了更具体地说明我的应用程序,我需要在 iPhone 上显示图表/图形。因此,用户每天/每周/每月使用每种语言的单词。我不需要实时,但用户使用一个月的行数约为 5000。

我想了解 mysql 是否有可能拥有仓库模式并在没有性能问题的情况下执行此类查询。我的选择是什么。

我真的无法支付企业解决方案的费用,我准备在我的应用程序(我有)中为这种处理编写代码,但想迁移到正确的方式。

我想对我来说最理想的情况是不使用任何工具就可以在我当前的数据库中创建事实和维度,然后转移我的 api 来运行这些 olap 查询。从我收集的信息来看,这对于 mysql 是不可能的。Postgres 显示出一些希望,但仍在阅读。

Vér*_*ace 12

您当然可以使用 MySQL 或 PostgreSQL 来满足此要求,并使用 Python 作为您的数据库访问语言。我从来没有用过 Python 立方体,所以我不能说。

我建议您使用 PostgreSQL - 它具有窗口函数CTE(通用表表达式)。它还支持 CHECK CONSTRAINT 和全系列的集合运算符

  • MySQL 对于读取繁重的 OLTP 数据库负载来说相当不错,但其他的很少。

  • PostgreSQL 在分析工作(DW - 数据仓库,或 OLAP)方面表现出色,同时也是 OLTP 领域的优秀多面手。


jyn*_*nus 6

这是一个非常广泛的答案,但那是因为这个问题也非常广泛。

MySQL 从未专注于 OLAP,出于一个特殊原因,它的主引擎 InnoDB 和 MySQL 集群 (NDB) 都针对 OLTP 负载进行了优化。执行分析查询通常很慢,因为它涉及读取大量行。

这并不意味着您不能在 MySQL 上执行 OLAP,有些人建议在更改数据库结构的情况下在 MySQL 中执行此操作。还有一些可插拔的专用引擎和连接器,它们可能有用也可能没有用,具体取决于您的预期查询,例如InfiniDB 或 Impala

话虽如此,你可以 搜索可能适合您需求的替代数据库引擎

  • 我不是 PostgreSQL 专家,所以我无法讲述内部工作原理,(这就是我只提到 MySQL 的原因)——也许其他人可以帮助你。但至少,将星型系统用于关系 OLAP 的概念同样适用(查看这些幻灯片:https://wiki.postgresql.org/images/3/38/PGDay2009-EN-Datawarehousing_with_PostgreSQL.pdf)。使用 Postgres 或需要专用工具之间的区别取决于期望。确实有一些额外的编程功能在 MySQL 中不可用或实现得很差,但在这种情况下可能很有用。 (2认同)