赞
踩
参考:b站鹏程
数仓简介
架构
建模
最佳实践
存在冷数据,导致业务库的性能下降,需要将其从业务数据库中转移出去
企业存在多个部门,统一整合数据仓库并抽取分析,辅助管理层决策
数据仓库是面像主题的,集合的,非易失的,随时间变化的数据集合
(1) 面向主题的,OLAP(Online Analysis Process)在线分析处理系统;
(2) 主要操作是批量读写:关注数据整合(group by ,count)的分析、处理性能
(3) 会有意引入冗余,采用反范式设计(关联多张表形成宽表,便于分析,减少了和其他表的连接)
略
提前调度业务数据库的数据分配到各个节点进行存储(一般使用hash),各个节点计算出来的结果也是部分结果,汇总成一个总结果
优点:数据迁移成本低(因为和业务库用的都是同样的关系型数据库),兼容原有的sql语法,并继承单机型数据库优异的性能
缺点:即使增加了大容量的硬盘,由于数据量大也没办法满足存储需求导致
(1) 扩展性有限
①单机架构发展过来的,进行功能扩展的时候,通过增加中间件方式,有中间件把数据分发到各个节点,计算任务也是中间件进 行汇总,每个节点本质也是一个数据库,如果需要数据交换(用到其他数据库数据),就需要通过高速网络与其他节点连接,高 速网络的支撑直接决定了节点上线
②分库分表,例如将一张大表分发到各个节点存储,但是由于表粒度很细,也是有上限的。
(2) 热点问题
一张大表分库分表存储,部分库中的数据为热点数据,这个节点就容易存在宕机,超时等问题,从而影响整个系统的性能,节 点出现错误越多。(可以通过数据加盐的方式:表中数据增加前缀,随机分布到各个节点中)
(1)基于大数据技术(天然的分布式存储、分布式计算),并添加上sql的支持形成的架构
(2)在数据处理方面:为了避免大海量数据的移动,造成IO跟网络的开销,所以使用了移动计算,而不是移动数据的架构(在哪儿存储就在哪儿计算,部分计算结果再进行汇总)
(1)初期易用性差(SQL支持率)
计算引擎有自己特定的语法,但是企业中的数据都是放在数据库中的结构化数据(就是SQL)咯,如果要整到大数据平台,那时候需要 做大量的业务数据迁移工作(语法上的转换成SQL转成大数据处理语法)
(2)事务支持方面
分布式结构实现事务比较难,即使是大数据产品对事务的支持也是比较不全的,但是针对数据分析,事务的问题也不是致命的问题
(3)数据量较少的时候计算比较慢
数据量不大,光是数据转换,分发,调度,汇总,整个过程本身就会花很多时间,数据量打达到某个量级,调度时间远远小与计算时 间了
(1)解决了扩展性的问题
分布式文件系统:默认文件拆分,以128m大小分发到各个节点进行存储,不用考虑分库分表的问题,就是当成文件。上层处理的 时候,采用元数据把文件还原成表结构
(2)解决了热点问题
会对分布式存储的文件进行备份,默认备份三份给到不同的节点,分发计算任务的时候,他是可以选择备份节点中最空闲的一个节 点,就极大降低了热点的问题
将单机数据库节点组成集群,比单机数据库整理性能肯定会好一些
节点间非共享,每个节点都有自己的独立的磁盘存储系统和内存系统,每个节点不会去关心其他节点的状态以及整个集群的状态
每个集群节点之间通过专用网络和商用网络进行连接,要是要用到其他节点的数据,就得用到高速网络,所以对网络传输要求就很高,搭建成本也是比较高的,并且每个节点是必须得协同,无法单独,必须依托整个集群向外提供整体服务
由于是关系型数据库组成的集群,所以在架构设计上遵从了关系型数据库的设计理念,设计上优先考虑C(一致性):事务特性,再考虑A(可用性),尽量P(分区容错性)
由于CAP顺序考虑,运算方式精细,更注重锁,事务,包括内外寸交互的细节,从而保证了数据的一致性,可靠性
因为精细,所以时间,延迟上都比较,同时精细导致在集群吞吐量上比较差,数据达到一定规模了,就会变成局限规模的一个瓶颈,所以适合中等的规模的结构化数据处理
(1)数据存储不透明
①存储靠的是Hash确定在哪个节点,查询是没法提前知道数据存放在那个节点,查询任务会在所有节点执行,这个是非共享架构决 定的,虽然对性能没啥影响,真正有影响是如下
(2)拓展性问题
并行运算时,一个节点缓慢了,别的节点需要等待,单个节点一定会成为整个系统的短板,改善方式有、把这个缓慢节点上的数据通 过高速网络传到别的节点进行计算,但是节点量比较多,故障率不变,故障节点数增加,瓶颈就会明显,所以扩展行较差
c分布式事务的实现会导致扩展性降低
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。