张春波 徐翠娟 李晓会 哈尔滨职业技术学院
随着科技的不断发展,人们正在十分高速的产生着各种类型的数据。特别是云计算产业的形成,使得大数据被更多人多关注,也成为了一个很多人都知道的概念。数据的存储和查询是大数据中的一个问题,也对人们对数据的应用有较大的影响,所以必须做好相关方面的工作。
目前,数据存储和查询主要分为两个内容,一个是传统的关系型数据库,另外一个就是NoSQL数据库,下面做具体分析。
传统关系型数据库是以关系代数模型为基础,然后使用集合代数等数学方面的概念来处理其中的数据。过去,在数据量不大的时候,关系型数据库也只是在单机的环境下运行,或者是在规模不大的服务器上运行。但是,随着数据量的不断增加,单机版的数据库已经不能满足实际的需求,也开发出来了能够在集群上运行的关系型数据库版本。但是集群版存在一些问题。首先就是技术问题,如果磁盘子系统发生问题,整个系统可能就会出现问题。其次就是许可费的问题。很多关系型数据库都是按照单台服务器的方式进行收费,所以在集群中使用就会比较贵,特别是在大数据时代,随着数据量的增加,收费也在不断增加,所以使用这种数据库的人越来越少。
NoSQL数据库相比传统关系数据库有更多的优势。应用NoSQL数据库,不需要使用“模式”,也就不用对结构定义进行修改,可以随意的添加字段,在对不规则数据的处理上有很好的作用,而在关系型数据库中,必须使用自定义的字段表,理解起来比较难。另外一个优势就是可以“列存”。通过列存的方法,在读取数据的过程中,只需要访问相关的属性就行,不但可以提高速度,还能够进行数据的压缩。
Pregel是一种大块同步并行计算模型,主要依据点的ID,将图划分成很多不同的板块,每一个板块都是由一组点以及他们出发的边组合而成。在没有错误的情况下,Pregel主要分为下面几个部分。第一,就是任务分配和主节点的初始化。用户可以将编写完成的程序传输到集群上,然后并行执行,可以将其中的一个当成主节点,其不属于任何一个部分,只需要负责从节点活跃性的协调工作;第二,是划分方案决定的阶段,主节点决定可以将图分成几份,也不指定一个节点有多少块,将一个节点划分成很多块,可以很好的提高并行性,从而可以增强计算的效率。每一个节点都需要负责维护其板块的状态和执行计算的工作,对其他节点的信息进行管理;第三,就是图数据的划分阶段。主节点可以将用户输入进来的数据传给从节点,如果从节点收到了属于自己的点,就可以对自己的数据结构进行更新。当输入彻底结束之后,所有的点都应该处于激活的状态;第四,计算。从节点应该按照主节点的指示实施超级步,从节点需要在激活状态的点中执行,每一个点都应该有一个线程可以进行计算,然后对上边一个超级步中的信息进行传递。在所有计算都完成之后,从节点需要按照主节点的指导保存自己的图。
对于任何一个顶点,GraphLab都可以将其分配到多台机器上边,并且将其中的一台当成主顶点,其他的机器作为镜像顶点。主顶点应该管理镜像顶点,可以给镜像顶点安排计算的任务。而镜像顶点主要就是一个代理者,需要和主顶点上的数据保持一致。而针对边的存储,一台机器和一条边需要保持一对一的形式,这样也可以解决边的数量过多的问题。另外,可以将一个机器上的点和边构成一个地图,每个机器都有本地ID到全局ID的映射。
GBase模型更加侧重于图数据的存储与查询,将图先进行划分,再进行压缩,最后进行计算。GBase可以简单的分为两个部分,索引阶段和查询阶段。在索引阶段中,可以将一个比较大的边数据文件分成很多同构的板块,然后结合划分的结果,重新排序定点的位置,使同一个划分中的点能够放在一起。然后,可以将划分好的数据进行压缩,最后存储到数据库中。在查询阶段,GBase可以提供一个有效的基本算法,比如归类、异常检测等。这种以图结构为基础的方法,能够更好的利用图的信息提高存储和查询的效率。虽然这种方法的使用难度略大,但是效率相比要更高,因为不需要使用较多的网络通讯,也不用等到最慢的节点彻底完成计算。
随着大数据时代的到来,人们生活、工作中需要的数据也越来越多,对数据的存储和查询也变得更加困难。但是随着技术的发展,人们也在不断更新数据库,应用更多的模型,希望可以提高大数据环境下数据存储和查询的效率。
[1]刘晓.大数据环境下数据中心的数据生命周期管理研究[J].中国金融电脑,2014,(10):71-75.
[2]顾荣,仇红剑,杨文家等.Goldfish:基于矩阵分解的大规模RDF数据存储与查询系统[J].计算机学报,2017,40(10):2212-2230.
[3]伍晋博,宋杰,张莉等.基于概率的大数据查询系统——Probery[J].计算机应用,2016,36(1):8-12.