NoSQL 重新架构:设计原则、模型与最佳实践
关系型(OLAP)数据的反规范化
在 OLAP 应用中,由于在设计星型模式时大部分反规范化工作已经完成,你只需通过将维度数据添加到事实表中,消除事实表和维度之间的连接,以满足你最感兴趣的查询需求。你可能只对记录数量较多的窄维度进行此操作,因为宽维度会使记录长度变得非常大。此外,你还可以移除不感兴趣的事实以减少记录长度。
以一个通用销售分析系统的星型模式为例, Sales_facts 是事实表,包含客户、地点、日期、产品和销售代表等维度。该事实表仅有两个事实:总销售额和销售商品数量。公司销售业绩出色,销售事实表有 1 亿条记录,涉及 50 万客户、1000 名销售代表、300 个地点和 70 万种产品。这种销售规模在分析特定类型客户按地点购买的产品时会出现问题,因为连接操作(1 亿 × 50 万 × 300)规模巨大,每次涉及这些维度的分析查询都需要很长时间才能得到结果。
因此,决定检查 NoSQL 解决方案是否比基于 RDBMS 的 ROLAP 解决方案表现更好。数据架构师对模式进行反规范化处理,设计出反规范化版本的模式。
具体步骤如下:
1. 合并维度表与事实数据 :将维度表的相关部分与事实数据合并以避免连接。根据性能需求,应将客户、地点和产品维度的列添加到事实表中,同时移除与需求无关的销售代表维度。
2. 评估并移除无关列 :评估各维度中的列,移除产品维度中的 ProductId 、 ProductSerialNum 、
超级会员免费看
订阅专栏 解锁全文

170万+

被折叠的 条评论
为什么被折叠?



