星型模式的 OLAP 或 OLTP?

OLAP or OLTP for Star Schema?

出于 Reporting/data 仓库的目的,我们计划在星型模式中填充数据。

我们当前的所有数据都驻留在 Redshift 中,因为星型模式遵循表之间的传统关系。我应该选择 RDBMS 还是在 Redshift 本身上构建星型模式?

有人可以解释为星型模式选择 RDBMS 与 Redshift 的优缺点吗?

进行星型模式设计涉及的考虑因素不仅仅是存储数据的数据库。

选择星型模式设计的一个直接原因是它的简单性和表现力:根据经验,业务交易是使用事实 table 和业务实体(或业务 "context")建模的被建模为维度 tables。这种设计的一个实际结果是,无论您使用的是 SQL 还是 Tableau 或 PowerBI 等 BI/visualization 工具,您的数据都将更易于业务用户理解和使用。

几乎所有 RDBMS 都将完全支持星型模式,在某些情况下,如 Oracle,它可以使用特殊(位图)索引来优化星型模式上的典型查询模式。 (至少)过去 15 年就是这种情况,几乎所有主要的 RBDMS 都实施了各种规模的数据仓库。

您可以在 Redshift 中执行相同的操作:定义您的数据模型(星型模式),构建数据结构(tables),相应地将数据加载到其中并照常查询。星型模式将比不相关或复杂的 table 结构更具表现力(因此更易于使用);在这种情况下,它实际上主要是一种抽象数据复杂性的元数据层。这是一个 post 详细说明了衡量 Redshift 性能和对星型模式查询支持的基准,使用行业标准 TPC-DS 基准:https://blog.fivetran.com/warehouse-benchmark-dce9f4c529c1

您甚至不需要 "proper" 数据库来启用星型模式设计,例如实际上,您可以将文件转储到 HDFS 上,并仍然使用 Hive 在这些文件上设计星型模式,只是为了使其更易于使用,因为 Hive 将为您提供 HDFS 上的 SQL 接口,而星型模式将使SQL更简单易懂。

两者都将支持星型模式。由于您的数据已经在 Redshift 中,因此您可以通过继续使用该平台来消除额外的工作和数据 loss/corruption 将数据移动到 SQL 数据库的风险。

当前数据在 Redshift 中的组织方式、数据量和查询类型 运行 可能会影响查询性能。由于您没有从星型模式的意图开始,因此您的 Redshift 实例可能未针对星型模式进行优化。 Amazon 有一篇博客 post 关于此 here. What tips you can implement depends on your current environment, but at a minimum you should be able to use the data compression and workload management suggestions. This guide 到 Redshift 架构和功能也可以帮助您实施 Amazon 优化建议。