如何理解 S3 或 Cassandra 中的 OLAP 多维数据集?

Posted

技术标签:

【中文标题】如何理解 S3 或 Cassandra 中的 OLAP 多维数据集?【英文标题】:How to understand an OLAP cube in S3 or Cassandra? 【发布时间】:2020-05-03 17:12:11 【问题描述】:

在this repository 中,其作者提到我们可以在CassandraS3 中暂存OLAP 立方体:

一旦数据在 Redshift 中,我们的主要目标是让 BI 应用成为 能够连接到 Redshift 集群并进行一些分析。 BI 应用 可以直接连接到 Redshift 集群,也可以通过 数据以聚合形式存在的中间阶段 由 OLAP 多维数据集表示。

这怎么可能?那将如何运作?我错过了任何基本概念吗?据我了解OLAP 多维数据集是OLAP 数据库中存在的一种特殊数据结构。他可能是指存储在面向OLTP 的数据库中的dimensionsfacts 的特定预先计算组合,例如Cassandra

【问题讨论】:

【参考方案1】:

OLAP 的主要特点是:

旋转 切片 切割 钻孔

Redshift 可以做到这一点。

它的架构旨在解决OLAPBI 任务。见amazon-redshift-developer-guide

Amazon Redshift 专为在线分析处理 (OLAP) 和商业智能 (BI) 应用程序而设计,这些应用程序需要对大型数据集进行复杂查询。由于它满足了非常不同的需求,Amazon Redshift 使用的专用数据存储架构和查询执行引擎与 PostgreSQL 实施完全不同。例如,在线事务处理 (OLTP) 应用程序通常将数据存储在行中,而 Amazon Redshift 将数据存储在列中,使用专门的数据压缩编码来优化内存使用和磁盘 I/O。为了提高性能,省略了一些适合小规模 OLTP 处理的 PostgreSQL 特性,例如二级索引和高效的单行数据操作操作。

但是术语之间的界限很流畅。

正如Diana Shealy所说:

停止滥用 OLTP 作为 OLAP

市场上有很多关于 OLTP 和 OLAP 的混淆,而且由于商业 OLAP 的高昂价格,初创公司和预算有限的开发人员继续滥用 OLTP 数据库作为 OLAP 数据库。滥用分为两类:

一个通常带有应用层脚本的多分片 mysql 数据库,用于执行历史事件数据分析。尽管这种设置非常常见,但它是进行分析的效率最低的方法之一。 MySQL 没有针对读取大量数据进行任何优化,并且它对分析函数的支持很弱。由于有多种选择,请避免使用这种“便宜”的解决方案,因为您最终会在其他地方付出代价。 使用 PostgreSQL 作为 OLAP 层。由于 Postgres 可靠的分析用户定义函数 (UDF),这是比上述启动分析平台更合理的选择。此外,由于其 c-store 扩展,PostgreSQL 可以变成一个列式数据库,使其成为商业 OLAP 的经济实惠的替代品。

最后,如果您正在考虑从被滥用为 OLAP 的 OLTP 转移到像 Redshift 这样的“真正的”OLAP,我鼓励您学习如何使用 Redshift 的COPY Command,以便您可以开始在 Redshift 中查看您的数据。

至于你的问题:

怎么可能?

这可能是由于Redshift 架构(列数据库)和分析功能,例如:

Window functions Data Warehouse System Architecture Performance Columnar Storage Internal Architecture and System Operation Workload Management Aggregate functions

这将如何运作?

有关 Amazon Redshift 数据仓库系统架构的详细说明,请参阅 System and Architecture Overview。

(本文前面已经提到了一些链接)

基本概念?

我是否遗漏了任何基本概念?

我建议更多地依赖特定解决方案的技术细节,而不是营销术语。最后,实际任务不是通过软件命名或营销来解决的,而是通过它的真正功能来解决的。

在 DB 领域中真正重要的是考虑两个定理:

CAP 定理

根据CAP定理的Iron triangle,可以选择三个DB架构组件中的两个点: * 一致性 * 可用性 * 持久性

PIE 定理

亚马逊的 Rick Houlihan 在choosing the DB archotecture 上发表了演讲。除了CAP theorem,他还提出了PIE theorem:

PIE 定理假设您可以在数据系统的三个理想特征中选择两个:

模式灵活性

效率

无限规模

Redshift 位于PIE trianglePI 维度上

数据结构

据我了解,OLAP 多维数据集是存在于 OLAP 数据库中的一种特殊数据结构。他可能是指存储在面向 OLTP 的数据库(如 Cassandra)中的特定预先计算的维度和事实组合?

OLAP 聚合数据结构和Redshift distribution styles 都针对一个目标:使查询更快。 列 DB、分布、并行查询和其他功能非常适合分析任务。

更新

在 cmets 中,您询问 Cassandra 是否可以用作 OLAP 服务。 CassandraS3 可以作为预先计算的维度聚合数据的存储。

【讨论】:

感谢您的回答和关注,亚森。如果有什么我不完全理解,我很抱歉,但我要问的是为什么上述 repo 的作者使用 Cassandra 和 S3 来暂存 Olap Cubes,为什么不是一个好主意。我了解您为 Redshift 辩护为 OLAP 使用的数据库。

以上是关于如何理解 S3 或 Cassandra 中的 OLAP 多维数据集?的主要内容,如果未能解决你的问题,请参考以下文章

如何按 Cassandra 中的二级索引或列对结果进行排序?

分布式文件存储(HDFS/Cassandra/S3 等)是不是必须让 spark 在集群模式下运行?如果是,为啥?

如何从 cassandra 或 hbase 中提取 leveldb 类型的数据存储(sstable + memtable)?

如何提供存储在 cassandra 数据库中的图像? [关闭]

在 s3 pyspark 作业中创建单个镶木地板文件

如何查看长期运行的 Cassandra 操作的进度?