【发布时间】:2019-07-18 13:51:04
【问题描述】:
我已经开始学习云架构,发现他们都在使用列式数据库,这些数据库声称效率更高,因为它们存储的是列而不是行来减少重复。
从数据集市的角度来看(假设对于一个组织,一个部门只想监控互联网销售增长,而其他一些部门希望专注于销售业绩),我如何设计一个可以处理数据负载和提供轻松的数据访问。我知道如何在其之上轻松设计数据集市,最终用户根本不必为计算而烦恼。
我有过 SSAS (OLAP) 方面的经验,其中大型数据仓库上的所有计算都已经计算完毕,普通业务用户可以直接连接到多维数据集并使用自助服务 BI 工具分析数据(就像拖动和另一方面,列式数据库似乎遵循 ELT 方法,并将所有计算留在查询(视图)或报告工具上。
根据我在 SQL Server 方面的经验,我认为我的查询(例如下面)
SELECT
region,
state,
City,
Country,
SUM(Sales_Amount),
AVG(Discount_Sale),
SUM(xyz)
....
FROM Columnar_DataTable
将扫描完整的表,这会增加成本。想象一下,如果一个大型企业一天执行上述查询超过 1000 次。
那么,在具有维度建模的列式数据库之上创建 OLAP 是否合适,或者最好先加载数据然后在报告工具上对其进行过滤/转换? 考虑到大多数自助服务BI 工具已经考虑到这一点并限制了数据消耗的使用(例如:Power BI 桌面社区版允许每个数据集 10 GB)并强制用户进行自己的计算。
如果我们将数据分离到多个表格中,那么无论如何,所有报告工具都需要表格之间的关系进行过滤。
如果我们保持单一表格格式,那么报告工具必须在进行任何计算之前读取所有数据。
【问题讨论】:
-
也许比您正在寻找的更多的是一个 DIY 答案,但 Amazon Redshift 数据仓库关于列式数据存储 (docs.aws.amazon.com/redshift/latest/dg/…) 的数据库表的列式存储大大减少了整体磁盘 I/O是优化分析查询性能的重要因素。以列方式存储数据库表信息可减少磁盘 I/O 请求的数量并减少需要从磁盘加载的数据量。
标签: reporting data-modeling data-warehouse olap dimensional-modeling