苏宁数据仓库应对数据爆发式增长的技术演进
副标题[/!--empirenews.page--]
【51CTO.com原创稿件】为什么需要数据仓库 随着公司业务不断发展,数据种类和存储呈现爆发式增长,繁多的业务数据如何被各业务中心分析和使用,如何有效组织和管理大量业务数据,减少大数据平台相近逻辑重复计算、相近数据重复存储,都将面临巨大挑战。 数据仓库层次架构数据仓库层次整体划分为三层:近源数据层、整合数据层和应用数据层,如下图: 近源数据层近源层是数据仓库拷贝源数据提供整合的数据存储区域,粒度、结构和源系统保持相同
近源层是整个数据仓库中数据量最大的部分。 整合数据层
应用数据层应用数据层为个性化汇总层,针对不是很通用统计维度、指标存放在此层中,本层计算通常只有自身业务关注的维度和指标,和其他业务线一般无交集 。 数据建模数据建模是数据仓库中的核心工作,苏宁数据建模主要采用的kimball维度建模方法,建模主要分两块,维度表设计和事实表设计。 维度表设计维度是数据仓库的核心,他提供了数据分析的视角和标准,大部分的维度表数据量都相对较小,但是他是整个数据仓库的核心,整个的数据建模都是围绕着维度来建设。 维度表主键 维度表在数据仓库中有不可替代的重要地位,因此维度表主键的确认也尤其重要,维度表的主键用于和事实表做关联使用,所以维度表主键也为事实表的外键,维表主键可由有业务含义的自然键组成;也可由无意义的代理建组成,比如使用流水号、自然键+日期等方式。 维表相对静态、不随时间变化直接使用自然键作为主键,比如:业务状态码、性别、城市省份等不会随着时间改变而改变主键对应业务含义,一般直接使用业务自然键作为主键;维表随着时间的变化而产生变化需要考虑使用代理键作为主键。苏宁门店代码,会因为组织法人等信息变更,生门店代码会发生变化,对应主键的业务含义会随着时间的变化而改变,使用一个代理键和业务门店代码映射,可以识别历史和当前不通的门店代码为一个门店。 实际使用过程中,由于在大数据平台中生成稳定代理键和自然键关系比较复杂,一般使用流水号代理键使用非常少。 维度反规范化处理 在OLTP系统中,一般表设计都遵循3NF等规范化要求要求建立数据模型,这个可以有效避免数据冗余以及数据不一致性,如下图: 然而在OLAP系统中,使用规范化,会导致数据表关联操作多、性能差,在OLAP系统中,数据是相对稳定的,此时往往会采用反规范化处理,根据分析需要建立对应维度宽表,降低模型查询复杂度,提升批处理查询性能。如下图: 维度的合并和拆分 合并:
拆分:
需要结合业务数据情况和数据分析要求,合理使用合并和拆分方法。 缓慢变化维 缓慢变化主要是解决记录数据仓库中数据历史变化,实际根据业务需要我们会有多种处理方式。 以会员会员张三举例,9月1日前公司地址为南京市玄武区苏宁大道一号总部一期;9月2日由原公司地址总部一期变更为总部二期,对应多种处理方式包含覆盖方式、新增列方式和新增行方式,下面对每种方式处理方法单独介绍。
快照维度表 (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |