睿治

智能数据治理平台

睿治作为国内功能最全的数据治理产品之一,入选IDC企业数据治理实施部署指南。同时,在IDC发布的《中国数据治理市场份额,2022》报告中,蝉联数据治理解决方案市场份额第一。

数据存储建模

时间:2022-05-19来源:跷二郎腿上课浏览数:159

相较于系统数据库存储及文件存储,分布式存储引入了对象存储和NoSQL数据库,都还远远没有成熟,相较与传统数据库的分割方式来支持大数据并发,分布式存储优势明显,但设计模式基本都在实践中,但理论还远没成熟,这需要技术人员不断实践、借鉴,实现适合自己需求的存储与数据系统。

我们通过一个实际的数据建模实践来展示如何使用大数据技术进行实际问题的解决。

这个设计是针对分布式存储的。存储架构是大数据系统的一个重要环节,尤其是对以后的服务十分重要。

分布式存储的架构

目前,在云计算中广泛使用的数据存储系统是分布式文件系统,如Hadoop HDFS系统,运行在普通硬件上,提供多备份支持的容错功能,能够有效利用服务器上配置的硬盘,形成海量存储空间,目前GFS支持服务器节点以十万计,而 Hadoop HDFS也有过万节点系统在运行。无论是GFS还是HDFS,虽然在具体处理技术上各自有各自的实现,但其总体构架基本上都如下图所示。

分布式数据存储系统

在存储层面,将数据分成一个一个块(block),meta-data是块的相关信息,如同文件系统的目录节点文件中对文件块描述,可以理解为具体数据块的定位信息,当然包含备份数据块信息。这里Meta-data是数据存储的目录结构,以数据块为对象。数据块是实际数据存储,被分配到系统数据节点上的块设备上,一般是硬盘。这一层有点像操作系统中的块设备驱动,不同的是分布式的。

在存储层面之上是数据处理层,主要目标是将块组合成用户需要的数据,如对象或者文件,大量对象与大文件访问时,为了提升性能,往往需要通过MapReduce,实际是分布式数据处理,来提升数据访问效率。

数据存储一般对上层有三种不同的接口,首先是对象存储,这是一个较低层接口,一般用于程序对象直接存储,其次是NoSQL DB,提供数据库接口,一般在存储上实现数据库都是NoSQL的,如Google的Bigtable和Hadoop的Hbase,还有文件存储接口,对应用来讲,就是以文件方式访问数据,对于以网页为中心的系统,文件接口应用更多。

分布式系统通常通过读写分离,和在写入时同步来保障数据最终一致性的,下图是Ceph支持的三种读写的顺序图,用于理解分布式存储的读写方式。

分布式存储的读写:Ceph支持的三种读写的顺序图

MapReduce通过把对数据集的大规模操作分发给网络上的每个节点来实现可靠性,每个节点会周期性地把完成的工作和状态的更新报告发送回来。如果一个节点保持沉默超过一个预设的时间间隔,主节点记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。每个操作使用命名文件的不可分割操作以确保不会发生并行线程间的冲突;当文件被改名的时候,系统可能会把他们复制到任务名以外的另一个名字上去。Reduce操作方式很类似,但是由于Reduce操作并行能力较差,主节点会尽量把Reduce操作调度在一个节点上,或者离需要操作的数据尽可能近的节点上了。

数据存储设计

相较于系统数据库存储及文件存储,分布式存储引入了对象存储和NoSQL数据库,都还远远没有成熟,相较与传统数据库的分割方式来支持大数据并发,分布式存储优势明显,但设计模式基本都在实践中,但理论还远没成熟,这需要技术人员不断实践、借鉴,实现适合自己需求的存储与数据系统。

应用针对存储设计,首先是数据形式,那些数据需要以文件方式保存,那些数据要以对象形式保持,那些数据要用数据库。一般来讲,音视频、文档及网页等用数据适合以文件形式保存在存储中,而应用中格式化数据适合以对象或数据库形式保存,对与对象实例较多,而且需要查询的,一般使用数据库方式存储。此外,分布式存储都提供数据域,区分数据域是用于将数据分割存储到不同物理区域,为了提升效率,虽然数据可以动态分布到所有节点,但这样效率并不高,因此需要尽量将处理与数据统一到一个区域,提升数据访问效率。

NoSQL设计实际是对象模型设计。同传统数据库schema的设计不同,在使用NoSQL时应用程序需要设计自己的对象模型树,针对对象实现流化,即以数据块方式存储数据对象。NoSQL与传统数据库不同,每个对象的属性可以动态改变,而一个对象就是传统数据库的一个行,对象属性可以认为是数据库的列,而传统数据库的列是预先定义和不可改变的。NoSQL数据库支持每一行数据自行定义自己的属性,这样对象设计自由度更大,可以完全按照程序逻辑设计自己数据对象和确定数据图。NoSQL数据库都支持数据图关系,这样在获取对象时就能够获取到相关对象,从而减少查找,以提升应用效率。

NoSQL的问题

目前,分布式存储特别是在其上的NoSQL数据库,不支持数据关联性处理,数据关系要通过类似全文搜索来处理,因此对于结构数据,特别关系密切性的数据处理,有很大限制。对于熟悉关系数据库处理的程序人员是很大缺陷。

另一个方面,数据库拆分,目前也是用来解决大数据问题的常用用法,但对于线性增长的数据,数据库会一点一点变慢,如果分库数量过多,管理和重组数据开销一样会增多,系统性能还是逐步降低,对于每日上亿条数据入库,数据库分库也很难满足要求,而系统延展性会变差,而数据库管理会随着库数量上升而日益困难,应用开发难度增加。

为了克服这些困难,人们又提出了在分布式存储方案上实现分布式关系数据库的方式,比较典型的如基于Hadoop的Hadoop DB方案,该方案通过使用Hadoop数据分布及MapReduce并行计算方案,将关系数据库数据分布存储到不同数据库上。在查询时,使用MapReduce 并行计算,同时在多个并行数据库上执行,并将执行接口汇总到MapReduce任务,合成成一个完整的结果,下图是该方案的设计图:

分布式存储方案上实现分布式关系数据库的方式

该方式可以支持关系型数据库的数据库表关联查询,相较于NoSQL的类似全文查询,该方式要友好很多,性能也提升很多。对使用者来讲,由于该方式可以认为是分布式的关系型数据库,可以极大降低应用开发的难度与成本。

本书采用理论与实践相结合的形式,系统阐述云计算和大数据服务的具体实现。

云计算和大数据服务战略的落地,包括技术构建和运营管理、新兴的人工智能技术的应用,以及组织能力的建设。针对这一目标,全书分为七部分:云计算技术、大数据与数据智能、服务的技术运营、智能运营(AIOps)、安全技术与管理、服务质量管理和组织能力。写作本书的目的是帮助读者对云计算和大数据的重要专题从基本概念、发展思路到解决方案有一个系统认识。

本书具有非常强的可读性和实践指导意义,可作为云计算和大数据企业的高层管理人员和技术架构师的参考读物,也可作为高校相关专业师生的教学参考用书。


(部分内容来源网络,如有侵权请联系删除)
立即申请数据分析/数据治理产品免费试用 我要试用
customer

在线咨询