【简介】数据仓库技术实现

【简介】数据仓库技术实现

数据仓库建设方案有两种,一种是传统架构的数据仓库,一种是大数据架构的数据仓库。

传统数据仓库

传统数据仓库是由单机数据库发展而来的。业务数据库一般是关系型数据库(RDBMS),那数据仓库在建设初期,也会选用关系型数据库,因为数据迁移起来方便,而且业务系统的改造成本也较小。

但历史数据较为庞大,单个 RDBMS 节点即使增加了大容量硬盘,也无法满足存储需求怎么办?那就多个 RDBMS 节点组成 MPP(大规模并行处理)集群进行存储。每个节点负责一部分数据的存储、计算任务,数据通过提前调度,分配到各个节点中进行存储;各个节点产生的部分结果,也会汇总成最终结果进行返回。

传统数仓的优点

传统数仓的优点在于 SQL 支持率高;且在一定数据规模下,性能很出色。

因为是单机关系型数据库改造而来,所以完全兼容原有的 SQL 语法,这样的话,业务迁移起来比较方便。在之后的使用上,也不需要增加很多额外的学习成本。

传统数据仓库在数据量没有达到某个量级时,是很优秀的解决方案,且继承了单机数据库优异的性能。但数据量一旦超过某个数量级时,它的问题就暴露出来了。

存在的问题

传统数据仓库存在的问题如下。

1. 扩展性有限

因为传统数据仓库的架构是由单机发展来的,在单机数据库上进行功能的扩展,或者增加中间件,从而形成 MPP(大规模并行处理)集群。

但这种 MPP 数据仓库,每个节点本质上还是一个数据库,需要考虑精细的内存管理;且独立进行计算,如果需要交换数据,则通过高速网络连接其它所有节点进行。这种连接所有节点的高速网络拓扑,直接限制了它节点的上限。

其次,它在数据存储时,采用的是分库分表策略(架构所限),将一个数据库中的表拆分到各个节点中进行存储,每张表存储的数据如果足够多的话,再将表进行拆分。

但分库分表也存在上限,因为分库分表的粒度越细,数据仓库在处理数据时,性能越差。所以为了保证性能,分库分表也不能无限进行。

2. 热点问题

传统数据仓库因为在存储时,会进行分库分表,所以一张表的会被拆分成多份,交由不同数据库节点进行保存。假设一张表有 100W 行数据,它在存储时被拆分成 10 份,一份有 10W 行。但恰巧,前 10W 行的数据是热点数据,在数据处理时被访问的频率是其它数据的两倍,且这一份数据被存储到了某个节点中。

那可想而知,这个节点承受的压力也是其它节点的两倍。那这个节点就容易出现宕机,或者超时的情况。而单节点瓶颈会导致整个系统短板。节点越多,节点出错频率就越高,整个集群的可用性就越低;这也限制了它的扩展性。

当然热点问题,可以通过数据加盐的方式进行解决,将表中的数据通过增加前缀打散,从而随机分布到各个节点中。但数据加盐本身会增加一些额外操作,并带来一些额外的问题。这个需要留意。

大数据数据仓库

大数据数据仓库是依托于大数据技术的一种新型数据仓库技术。

它是基于大数据天然的分布式存储、计算,并添加了 SQL 的支持而形成的一种架构。与传统数据仓库的架构是截然不同的。

大数据技术是为海量数据的存储、计算服务的,所以它有天生的分布式架构来解决数据存储问题,且有极强的扩展性。在数据处理方面,为了避免海量数据的移动造成的 IO、网络开销,使用了移动计算而非移动数据的架构,将计算任务分发到数据节点进行计算;因为一份数据是被拆分,并存放在多个节点的,所以每个节点的收到计算任务后,是并发执行的,计算得到的结果一定是部分结果。最后再将部分结果进行汇总,得到最终结果。

但大数据初期存在一个问题,易用性差。因为大数据处理,是有自己的特定语法的。而企业中大部分数据都是存储在数据库中的结构化数据,使用 SQL 进行处理。所以要使用大数据平台,就必须要做大量的业务迁移工作,即将 SQL 转化成大数据处理语法。

之后,基于大数据的数据仓库产品应运而生,这些产品完成了 SQL 对大数据处理语法的转化,且借助大数据分布式架构带来的天然的海量数据存储、处理能力,解决了传统数据仓库的痛点,成为将来数据仓库的一个发展趋势。

优势

1. 解决了扩展性问题

大数据平台的分布式架构的扩展性极强,海量数据的存储、运算,不再成为问题。

大数据平台负责存储的分布式文件系统,将数据库中的结构化数据统一视为文件进行存储,将文件自动进行拆分,分发到各节点进行存储。不用再顾虑分库分表的问题。在进行数据处理时,才在上层引擎中使用元数据对文件还原成表结构。

2. 解决了热点问题

底层分布式文件系统进行数据存储时,为了保证数据的安全性,会将数据进行备份,默认为 3 份。在进行计算时,会将任务分发到数据节点,因为 3 个副本的数据时一致的,所以可以选择一个最空闲的数据节点,将任务分发过去。在任务执行时,是可选择节点的,所以极大的降低了出现热点的可能性。

存在的问题

1. SQL 支持率低

因为大数据数据仓库架构是将 SQL 转换为大数据分布式处理语法,不是原生的 SQL 处理逻辑,所以 SQL 支持率没有传统数仓那么高。但随着技术的发展,现有大数据产品的 SQL 支持率也越来越高。

2. 缺少事务支持

当前大数据数据仓库因为是分布式架构,所以相对于单机数据库来说,事务的实现较难;大多数产品事务支持不全。但因为数据仓库主要是面向数据分析,对事务的要求并没有那么严格,所以也不存在什么问题。

3. 数据量较少时,计算速度慢

因为大数据架构是完全分布式的,为海量数据运算而设计的;在运行时,会对任务进行拆分、调度,最后对结果进行合并;所以在数据没有达到一定规模的时候,调度过程会花费大量的时间。但一旦数据量超过某个量级,调度时间远远小于计算时间,大数据架构的优势就体现出来了。

小结

总的来说,在数据量没有达到一定量级时,使用传统数据仓库方案是最优的,它性能好、SQL 支持率高、易用性好。但一旦企业数据达到某个量级,传统数据仓库运行效率就会变差,只能寻求大数据数据仓库的解决方案。

虽然大数据数据仓库的 SQL 支持库低、缺少事务支持,但综合它的使用场景,且随着技术的发展,这些问题都会被解决。长远来看,大数据数据仓库,一定会是将来的趋势所在。

上一篇
下一篇