目 录
为了提升数据库的性能,对数据进行分片操作成为了非常必要的手段。在进行分片操作时,需要注意遵守分片的完整性、不相交性和可重构性原则。分片方式主要有三种,水平分片、垂直分片和混合分片,每种分片方式都有各自适合的场景,这里主要讨论垂直分片。垂直分片在实际应用中,往往可以用来划分出热点数据,从而提升数据库性能,降低数据访问成本。但是目前的垂直分片往往没有考虑到数据之间的语义关系,若是在分片的时候考虑到数据之间的语义关系,就能生成效果更好的分片,因此设计并实现了一个新的基于语义的数据垂直分片系统。
发现数据之间的关系正是数据聚类的目的。首先对目前为止最常见的几种聚类分析技术进行研究,包括层次聚类、划分聚类、密度聚类、网格聚类等等,通过对其各自的核心算法思想进行总结,发现算法各自的优缺点以及适用的场景。通过对划分聚类的详细研究发现,传统的K-Means, K-Modes算法并不能对混合型数据进行聚类,为了能够处理更灵活的查询记录,提出了采用K-Prototypes聚类算法对混合型数据进行聚类分析。再通过对距离度量方法的研究发现,可以使用Jaccard相似系数来度量簇之间相似程度,将相似的簇进行合并直到生成指定个数的分片。算法整体上分为两步:第一步,进行聚类得到若干个簇;第二步,在聚类的基础上计算簇之间的相似程度将相似的簇进行合并。在实验中验证了新算法并得到了分片方案。实验中将其与普通垂直分片的方案进行对比,发现数据库的响应速度有明显的提升。在新分片算法提出的基础上,设计并实现了基于语义的数据垂直分片系统。该系统不仅能进行垂直分片,同时还能对原始数据进行适当处理、提供关键的图表说明文档。
To improve the performance of database, fragmenting the data is becoming a common demand. Before taking the fragmentation strategy, the principal of fragmentation should be considered, which includes reconfigurability, disjoint and integrity. There are three kinds of fragmentation strategies, including horizontal, vertical and mixed fragmentation. Each strategy of these three works is suitable for different scenarios. The main topic in this thesis is vertical fragmentation. Vertical fragmentation is usually used to classify the hot spot data, which can reduce data access time cost and improve the performance. However, these algorithms for vertical fragmentation are always based on the attributes, which ignores the data semantics. The fragments could be better if the data semantics are considered.Therefore, a new system about vertical fragmentation based on data semantics is proposed and implemented here.
The main goal of clustering is to find the relationship among datasets. Based on the study of common clustering algorithms,including partitioning methods, hierarchical methods, density-based methods and etc., the strengths of each method are obvious. After the research of these classical algorithms, K-Prototypes is chosen to handle multivariate data types since there is no doubt that both K-Means and K-modes are not suitable for this data type. Through the comparison of different distance measurement methods, the Jaccard similarity coefficient is used to merge the similar clusters, so that the number of clusters equals the nodes of database. As the new algorithm was implemented in the experiment, the fragments were produced. The experiment between the new and normal algorithm was conducted, which proved the superiority of the new algorithm.
Based on the new algorithm, the data vertical fragmentation system was designed and implemented, which could not only produce vertical fragments but also process original data and provide important charts.
Key words: Vertical fragmentation Distributed database Semantics Clustering
在这一章节,主要介绍了三个方面的内容,包括了选题的研究背景与意义,国内外相关课题的研究现状以及论文总体的结构内容安排。
1.1 研究背景与意义
在互联网、云计算、物联网、SG技术的蓬勃发展以及全球化不可逆的趋势下,业务不再只存在于一处,而是遍布各地,一个业务的数据存储甚至可以横跨几大洲的这种现象,也已屡见不鲜。数据存储于单一节点就会面临单一节点宕机导致数据服务不可用,或者面临网络拥塞等问题,针对这些问题,分布式数据库应运而生。分布式数据库在逻辑上是一个单一数据库,但是物理分布在数据通信网络所连接的多台计算机上面。分布式数据库将数据分散存储在网络中的不同节点,从而使得可以在不同节点访问数据库,缩短数据服务的响应时间,与此同时,即使单一节点宕机,也可以访问其他节点,从而维护数据服务的高可用性、数据的完整性。
同时,分布式数据库也是缓解大数据存储压力以及大数据处理的重要方案。现实使用中,随着业务的发展,原本存储于单一数据库中的数据越来越大,为了方便今后业务的扩大,需要对数据库进行合适的分库分表处理,并且将分库分表的结果分别存储于分布式数据库的各个节点,通过各个节点之间的相互协作即可将底层数据进行逻辑的划分同时完成更大规模数据的存储。然而,分布式数据库系统的设计基本是一个多指标优化问题,为了提高分布式数据库的性能,需要采用数据分片、分配以及复制等方法技术,其中数据分片是分布式数据库中关系数据库主要关心的一点。数据分片可以根据需求将原来的数据划分为不同的分区,划分方式通常有水平分片、垂直分片以及混合分片,三种方式各有适用场景,以下分别介绍这三种分片方式:
1)水平分片:即按照若干个属性的特征对全局数据库进行划分,举例说明,假设数据库中有一个学生选课表,Student(Student No, Student Name,Subject, Teacher Name, Grade),分别对应的是学生的学号、学生姓名、学科、名字、任课老师的名字、学生年级。其中,按照属性“学科”划分,例如将数学成绩和非数学作划分,将数据横向分为两个部分,这就是一个数据水平分片,具体分片过程如图1-1所示:
图1- 1水平分片过程示意图
垂直分片:就是将全局数据库表的属性按列进行划分,选择某几个属性连同主键一起成为一个关系,这样纵向切分的分片就是数据垂直分片。例如将上述学生选课表中学生的学号、学科名字、任课老师的名字三个属性合并(学生学号一学科名字一任课老师的名字),就可以获得一个学生选课的关系,而且,这样主键的冗余地进行垂直分片,就可以通过主键连接操作还原成原表,保证了数据分片的可重构性;下面我们对上例中Student表格进行垂直分片,其分片过程如图1-2所示:
图1- 2垂直分片过程示意图
3)混合分片:另一种混合分片则是混合了水平、垂直分片的一种混合操作,混合分片过程如图1-3所示:
图1- 3混合分片过程示意图
这些数据分片技术与数据分配技术的适当配合使用,就可以减少在数据访问时的远程访问,取而代之的是就近访问即可得到查询结果,从而缩短响应时间。如果用于大量访问远程数据,则可以采用数据复制技术,来减少访问时间,减轻查询负担。而在查询中,数据访问的成本和速度取决于数据的属性数量,这是因为查询时,是从数据库的表中众多属性中搜索数据,而非总是访问表结构中的全部的属性。例如,有一个学生校园信息表(Student No, Student Name, Major, Attendance Date, Dormitory,Balance, Deposits, Withdrawals, Transaction Date, Place),分别是学生学号、学生姓名、专业、入学时间、宿舍楼、校园卡余额、存入金额、支出金额、交易时间、交易地点,当查询一个学生的校园卡余额时,查询语句仅访问需要返回的余额数据,而非整个表结构中的全部属性。与此同时,显然,校园卡余额、存取金额等交易信息数据在学生在校生活期间相较于学生姓名、专业等信息更频繁地被查询,这种情况下就可以采用数据垂直分片的方法分离热点数据,从而访问查询、更新操作就可以避免在该宽表操作,降低时间成本的同时还可以减少许多不必要的数据冗余。
在实际应用中,用户查询的数据往往存在某种关联,例如,上述学生校园信息表中,学生往往倾向于查询校园卡交易余额数据,宿舍管理员倾向于访问关于学生寝室信息的数据,而这些都表明用户访问的数据内存在一定关联,这种关联就包括了数据之间语义的关联。发觉数据之间的语义关系,根据这种关系再对数据进行分片处理,处理后即可提升分布式数据库的性能。
1.2 国内外研究现状
数据分片技术长期以来一直都是世界各个国家和地区科研关注的重点,针对数据分片技术这一主题的文章或者相关方向的研究成果也频频出现,以下是对数据分片近些年来相关的研究进展的介绍。首先介绍近年来关于数据分片技术大方向的研究进展。
为了弄清楚三种分片形式具体适用的场景以及各自分片形式的优缺点,于是有了对分布式数据库中的以往各种分片技术进行比较分析、评估的研究[1]。其中文章指出,分布式数据库技术不仅在现在,在将来更会对数据处理有着非常大的影响。通过简述了分布式数据库系统中的主要三种分片形式,水平分片、垂直分片、混合分片,以及分布式数据库的环境、设计问题,从而将三种不同的分片技术进行横向对比,并且使用了分片技术的正确性准则,总结得到在分布式数据库的设计中,面对各种应用场景、环境如何选择最佳的数据分片方式。
近些年来随着机器学习的火热发展,在最基本的水平、垂直、混合分片的基础上,出现了许多基于机器学习、神经网络的各种分片技术。
现代生理学普遍认为,虽然神经网络可以反复地接受同一种刺激,但是神经网络其对此刺激所作出的每一次响应并非是相同的,而这一点也就意味着生物神经元的本质其实是随机的。针对这一神经学观点,美国福罗里达州大学的Erol Gelenbe教授于1989年提出了随机神经网络(RNN)[2]。基于随机神经网络的的基础之上,就有了基于随机神经网络的数据分片技术的探索,其中介绍了使用RNN网络对六种分片技术进行的分析比较以及评价,从而为分片技术的选择提供参考[3]除了使用神经网络进行数据分片,聚类分析在近些年来也常常被运用在分片技术上。
分布式数据库管理系统总是需要解决如何确定最佳设计策略这样一个问题。而设计策略中效率的高低很大程度上取决于数据分片,以及如何将分片分配给分布式系统网络中的节点。虽然数据分片和数据分配被认为是彼此相互独立的,且二者使用的是相似的信息来完成相同的目的。而在当前的数据分片方式中,垂直分片在其中由于需要从大量的方案中选择出理想答案,而这种寻找最优解的问题就是一个NP难的问题,因此,垂直分片也被认为是一种纠缠性的分片方式。基于这些问题,希望能找到一种启发式的解决方案,于是提出了一种基于聚类的数据分片技术,这种技术将表中属性相似的放在同一个分片簇中,再通过数据库用户查询的频率数据生成亲和矩阵,再进一步使用亲和矩阵来生成亲和簇。在此基础之上,将它们之间欧几里德距离最小的属性视为相似属性,从而得到垂直分片,再将生成的分片根据分配表来分配到网络中的某些站点上[4]。这种方法就可以解决传统垂直分片中存在的问题,化解垂直分片问题的复杂性。
除了这一种基于聚类的分片算法,还有使用聚类算法实现超大数据库的混合分片的算法。由于现有的数据分片技术往往基于用户查询的频率以及操作的类型还有经验数据的统计,这些方式十分受限,于是提出了一种独特的混合分片算法,其中通过使用子空间聚类算法,得到一组分片结果[5]。这种聚类方式是在高维数据子空间中确定簇,从而使得可以为不同的实例集找到与其自己密切相关的属性,因此可以为分布式数据库提供良好的混合分片结果。且实验结果显示出,使用这种聚类方法进行分片的效果比在设计数据库阶段使用统计数据进行分片的效果要好,用户数据访问的时间可以得到降低。
与聚类算法类似的,还有最小生成树法来进行垂直分片的解决方案。对于最小生成树和K-Means聚类这两种方法的比较,也有相关的研究。其通过对比两种分片算法,即基于最小生成树的垂直分片和基于K-Means聚类的垂直分片这两种算法,来分别生成数据库的分片,对比二者的效率,从而得出最佳的切分数据库数据的垂直分片算法[6]。对比二者效率的时候,根据数据访问时所耗的成本,再通过分片比较器对两种算法生成的分片进行对比,从而得出最佳的可用的垂直分片算法。其实验表明,基于K-Means聚类的垂直分片效果更好,对比基于最小生成树的垂直分片,数据访问的开销会降低不少。
相关的对比研究,还有将基于键能的垂直分片算法与基于图的垂直分片算法的比较[7]。垂直分片可以分离出不必要的属性,从而降低数据访问的成本以及提升访问速度,通过比较基于键能和图的垂直分片算法,得到两种分片方案,再将得到的分片使用分片评估器将它们进行对比和评估,从而显示两者在数据访问的成本差距,从而得出结论,找到更好的分片方式。研究的实验结果表明,基于图的垂直分片算法相较于基于键能的算法,表现更为优异,这种方法不仅计算复杂度低,其分区评估器的评估值均很高,而且它在数据访问的时间成本上消耗也更低。
以上许多方案都是基于用户查询数据是已知可用的基础,当数据库用户查询的频率是不可知的时候,在数据库的初始阶段,也有相关的解决方案。早期的垂直分片方法往往建议基于用户查询频率来进行设计,但这并不适用于具有更高复杂度的数据库设计初始阶段以及无法获取用户查询频率数据的情况,如果没有分片的话,使用迭代二分法进行分片,则会增加复杂度并且需要提高预定阂值的限制,以及涉及更繁重的计算问题。针对这种情况,提出了,在现阶段并不支持的可以在数据库初始阶段、没有用户查询频率相关数据的前提下,进行垂直分片的新方案[8]。通过使用数据库中每个节点对于分片的读写访问等操作记录,这种方案还能将分片结果在分布式数据库中进行分配、复制操作。研究实验结果显示出此方案的多处优点,首先是降低了过往垂直分片算法的成本以及繁重复杂的计算量,而且它填补了在缺乏用户查询频率数据的前提下垂直分片无法进行的空缺,最后,由于此方案是在第一次迭代中就生成了所有分片,解决了在初始阶段无分片的情况下无法进行迭代二分法的分片的问题。
除了对垂直分片这一方向的研究,由于在关系数据库的设计中,因为垂直分片与数据访问时路径选择这两个技术强相关并且相互依赖,共同研究这两个技术的研究也有不少。在关系数据库中进行垂直分片是为了将数据进行划分切分物理逻辑,而访问路径的选择则是为了在数据访问时够高效迅速地搜索到相关的数据记录找到数据的物理存储位置。由于垂直分片本质上就是将关系数据库中的所有属性进行一个排列组合,因此在大多数时候解决垂直分片问题就相当于处理一个NP困难的问题。为了能够提升数据库的性能表现,提出了一种基于遗传算法的垂直分片算法,并且同时解决了关于访问路径的选择问题[9]。文中也通过实验证明了这一种基于遗传算法的分片以及访问路径选择设计在提升数据库性能上有很明显的效果,与未使用该算法进行分片的数据库相比,这一新的分片设计方案还能节省更多的磁盘访问量。
数据分片与数据分配的问题也是常常被放在一起考虑研究的。数据分片决定数据的划分方式,而数据分配则决定了数据分片的每一个分片放置于分布式数据库网络中的哪一个节点,二者共同决定分布式数据库中数据的分布。因此,在分布式数据库的设计当中,数据分片与数据分配二者都是为了提升数据库性能表现需要研究的关键问题,然而,将分片分配到相应节点的这一过程相当于排列组合,从中选择一个最优解并非易事。因此,提出了在分布式关系数据库中进行同步数据水平分片、复制和数据分配的新模型[10]。在新模型中,通过使用一种启发式算法实现数据的水平分片与分配,再使用成本模型将分配的成本最小化。文中的实验结果中也表明这一新模型在解决分布式数据库中数据动态水平分片、复制以及分配是有效的。
随着机器学习的应用场景越来越多,基于机器学习相关算法技术的分片算法在XML数据库中也有许多研究进展,例如基于数据挖掘的XML数据库的分片。由于XML数据在近些年来猛增,且传统的关系数据库无法处理这种数据的异构性和复杂J陛,因此有许多种XML数据库的模型被纷纷提出。然而,事实上目前XML原生数据库性能并不是很好,具体表现在它可管理的数据量十分有限,数据响应速度也很受限,而数据分片技术则可以解决这两个问题。以往的水平分片技术往往应用于关系数库当中,且完全可以应用到XML数据库中,只是单纯使用经典水平分片算法产生的分片数量很难受到控制。对此,提出了一种基于K-Means的分片方法,它通过控制参数K来控制分片的数量,并且在研究实验表明,这种基于K-Means的算法相较于经典水平分片算法在针对XML数据库的分片上效率会更高,体现出该算法的优越性[11]。
2.1 设计需求
随着分布式数据库的使用时间变长,数据库中的数据量规模也逐渐变大,开始有了对部分表进行数据分片的需求。基于第三章对于基于语义的垂直分片算法的设计,针对数据库中已有表进行垂直分片的业务场景,当前主要存在以下问题:
1)在数据库中,可供分析的查询语句都是都是原始的SQL语句,其中包含着各种SQL语法中的关键字、函数名等,是不可以直接用来进行分析处理的,因此首先需要提取SQL语句中的属性,将原始SQL语句进行处理,从而生成可供后续进行聚类分析的数据集;
2)若直接用命令行操作整个分片过程,整个系统的使用学习成本过高,不便于数据库管理员进行操作,因此,对于系统的输入、分片结果的输出需要使用到图形化界面来进行简化操作,方便上手;
3)为了增加系统输出的分片结果的可信度体现分片后的数据库性能的提升,还需要提供聚类分析结果图、基于聚类的分片时合并簇操作相关图表的导出功能,从而证明数据分片过程的真实可靠性,以及分片结果的正确性。
2.2 设计目标
本文主要工作任务是针对目前数据垂直分片算法对于数据语义考量的缺失,来设计一种基于语义的数据垂直分片算法,并设计实现基于该分片算法的垂直分片系统,具体工作内容如下:
1)对于垂直分片技术进行研究,并且分析经典的垂直分片算法。首先了解垂直分片的定义,以及垂直分片区别于水平分片的分片目的适用场景,以及分片的基本原则。然后介绍、分析经典垂直分片算法的算法思想,以及算法的优缺点;
2)为了能够根据数据之间存在的关系对数据进行垂直分片,需要使用到聚类分析。介绍常用的几种聚类分析方法,以及聚类中用到的距离度量方法,基于以上的基础知识,再提出新算法中聚类、实现分片的方法;
3)实现新的算法,并且将其实验结果与普通分片进行性能上的对比,验证新算法的效果;
4)基于新分片算法的基础,设计并实现基于语义的数据垂直分片系统.
以上研究内容中,对于聚类分析以及距离度量方法的研究是重点,为了实现基于语义的分片,需要重点思考以下两个问题:
1)发现数据之间的关联,则需要使用到聚类分析来将数据进行划分处理,然而经典的K-Means算法、K-Modes算法仅仅能对单一型数据进行聚类,为了能够对更灵活的数据进行聚类分析,需要选择更适合的聚类分析算法;
2)在上一步的聚类分析后,此时的簇的个数并不一定能满足对于分片个数的要求,还需要在这一基础上,再一次进行分片处理,因此需要判断簇与簇之间的相似性,将相近的簇进行划分合并,而簇与簇之间相似度的判断依据则需要选择合适的距离度量来进行进算衡量。
2.3 设计应用领域
本次试验的主要目的,第一是为了实现提出的新算法,第二点则是为了分析新算法的性能,需要将新算法与普通分片进行实验对比,比较二者在查询性能上的表现差异。具体的实验内容设计结构如图2-1所示。
图2- 1实验内容结构
整个实验内容主要分为以下三个部分:
第一步,使用新算法,找到合适的簇的个数进行初始聚类分析,然后基于聚类结果计算簇的原型之间的Jaccard相似系数将簇进行合并,从而将表进行垂直分片获得分片方案;
第二步,将表根据新算法生成的分片方案与普通分片方案进行两种不同的垂直分片,构建相应的数据库;
第三步,为了检验两种不同分片的性能的好坏,对两种分片结果分别执行相同的一系列查询,并记录各自的查询响应时间。
2.3.2实验结果与分析
根据以上实验内容的设计得到相应的实验结果。其中,首先是找到最合适的簇个个数看出,如图2-2所示,为簇的个数K = 2~8时的聚类结果对应的轮廓系数曲线,可以当K=4时,轮廓系数最高,表示此时的聚类效果为最好。
图2- 2轮廓系数折线图
基于以上轮廓系数的判断,选择了K=4对数据集进行聚类分析,得到的聚类结果如图2-3所示,此时共生成了4个簇。
图2- 3聚类结果图
设定中,分布式数据库中只要产生三个分片,因此需要将簇进行合并,计算簇原型之间的Jaccard相似系数,具体相似系数如表2-1所示,发现簇1, 3相似系数最高,将这两个簇其进行合并,合并后的结果如图2-4所示。
表2-1 Jaccard相似系数
图2- 4基于聚类的分片结果
根据以上聚类的分片结果,为了保证其分片的可重构性,还要再在每一个分片中增加主键属性,最后根据普通分片和新算法的分片结果分别构建分片后的数据表。设定相同的查询100800个,分别基于两种分片结果进行查询,如图2-5为最终数据库响应时间实验结果的对比图。
图2- 5分片性能对比
根据以上图2-5不难发现,基于语义的数据垂直分片在考虑到数据之间语义的关系基础上,再对表进行垂直分片处理,会使得数据库的响应速度会比普通分片在执行性能上有一定的提升。
3.1基于语义的数据垂直分片算法设计
3.1.1算法设计
介绍了许许多多不同的聚类方法,它们都可以用来发现数据关系,具体选择哪一种算法主要是取决于数据集或者或应用的场景。例如,层次聚类算法并不能够发现任意形状或者椭圆形的簇,基于层次聚类的BIRCH方法[5]可以被用于处理噪声,适合运用在大型数据库中;属于密度聚类的DBSCAN算法则可以处理任意形状的簇,不限于“类圆形”簇;而K-Means等划分聚类算法则是需要预先设定数据集需要划分的簇的数量。
最经典的K-Means算法已被应用于面向对象的数据库中,其中数据库并非初始阶段而是已经存在的,且相关的统计数据已有记录。从查询记录中提取谓词,然后通过K-Means算法将谓词进行聚类分析。但是K-Means算法只能用于数值型属性的聚类分析,因此为了使得这种基于聚类的分片能够应用在更多的查询记录,需要引入可以对混合属性进行聚类分析的K-Prototypes算法。
使用K-Prototypes算法首先将数据集进行聚类分析,此时数据集会被划分成为k个簇,划分好的簇个数并不等同于数据库中节点的数目,还需要进一步合并处理。根据K-Prototypes算法中对于原型的定义,可以使用每个簇的原型来代表各个簇,再通过计算原型两两之间的Jaccard的相似系数,寻找相似度最高的两个原型,将对应的两个簇进行合并得到一个新的簇,循环这样的操作直到簇的个数与数据库节点数相同为止。
3.2算法流程
整个基于语义的垂直分片算法的流程图如图3-1所示:
图3- 1算法流程图
首先准备待输入的样本数据集,作为聚类分析的数据对象;然后使用K-Prototypes接着根据算法对数据进行聚类分析,划分成合适个数的簇,并将划分结果记录下来;K-Prototypes的定义,计算划分后每个簇的原型,并计算出每两个簇原型之间的Jaccard相似系数;按照需要,从Jaccard相似系数最大的两个原型对应的簇开始进行合并,合并后更新簇的原型,直到此时簇的个数满足分片个数的需求。整个算法流程中的符号标识及其含义介绍如表3-1所示:
表3- 1符号标识及其含义
基于表3-1以上符号的定义,新算法的伪代码实现如下所示:
3.3算法分析
根据以上对于基于语义的垂直分片算法的描述可以发现,新算法的分片过程分为以下两个步骤:
第一步,使用针对混合型数据进行聚类分析的K-Prototypes进行聚类,从而找到数据之间的关联性,这里不选择K-Means算法或者K-Modes算法,可以避免仅能对单一类型的数据进行聚类的缺点,扩展实际使用上对于查询场景的覆盖,除此之外,由于在使用聚类生成初始的分片时,若直接指定聚类算法中K的个数等于最终需要的分片的个数,则极有可能无法产生最佳的聚类效果,因此,需要将K指定一个区间,找到最佳的K的个数从而得到最佳的划分结果;
第二步,基于在第一步中得到的划分结果,再进行分片得到最终的分片结果。在第一步中,得到的簇的个数极有可能大于要求的分片个数,因此还需要增加对初始分片结果的再分片处理。在计算簇之间的相似性时,基于对K-Prototypes算法思想的研究发现,其定义中的簇的原型就可以用来代表一个簇,在3.3节中距离度量的比较分析中可知,Jaccard相似系数更适用于计算个体间特征的相似程度,因此计算簇原型的Jaccard相似系数就可以得到簇之间的相似度,从而将相似的簇进行合并实现再分片的目的,得到算法最终的分片结果。
以上得到的分片结果中,并不能保证每一个分片中都包含表的主键属性,为了满足分片原则中的可重构性原则,还需要在每一个分片中增加主键属性,得到最终分片结果。
本章简单介绍了垂直分片分的相关理论,包括垂直分片的概念以及实际意义,还有分片操作时需要遵守的分片原则,再介绍了最经典的垂直分片算法以及基于经典算法的优化算法,分析两者之间的时间效率差别。然后介绍了数据聚类分析的概念以及聚类分析常见的的数据类型、目前为止聚类方法的分类,并着重介绍最为常见的几种聚类算法,包括其核心算法思想。
4.1 开发技术
4.1.1垂直分片算法的设计
目前大多数分片技术都未考虑到被分片的数据之间本身存在的关系,但是在实
际使用时,如果访问的数据总是存在于不同的分片当中,导致频频需要跨分片访问,则会提高用户请求数据的时间成本。因此,如果在分片增加对数据之间关系的考虑,就可以解决这个问题。为了在进行垂直分片的时候增加对到数据本身的语义的考虑,设计了一种使用到Jaccard相似系数和K-Prototypes算法的新的垂直分片算法。该算法通过使用K-Prototypes聚类将数据集进行聚类形成若干的簇,再通过使用每个簇的原型来表示簇,计算原型之间的Jaccard相似系数从而将簇进行合并,直到簇的个数符合分布式数据库网络站点的个数。本章首先介绍了算法设计时对于相关知识、算法的研究,包括数据间距离度量的计算与考量,然后介绍了可以针对混合型数据适合的聚类方法K-Prototypes算法,接着介绍了整个基于语义的垂直分片算法的思路、流程,并对算法进行分析,最后进行实验验证算法。
4.1.2数据属性
数据集往往有很多数据对象,而其中的每个数据对象又由若干个属性来进行描述,而在关系数据库中,每个对象都是一个一元组,其中一元组的每一列都代表着一个属性。在数据挖掘中,经常使用到的属性类型有以下几种:
1)数值型属性:常常使用实数值来描述,包括连续型和离散型两种类型的数值;
2)分类型属性:属性的取值表示为某一种状态、类型、或者代码,例如常见的人员信息中的“籍贯”属性;
3)二值型属性:即取值只有两种,一种是1一种是0。通常来说,1表示为属J性值非空,0表示取空值,例如属性“是否绑定手机”,显而易见是二值属
4)序数型属性:属性取值的是一个有意义的序,但其相继值之间的差值是未知的,其值之间存在顺序大小,例如饮料杯的属性“杯型”就可以取值“大、中、小”。
以上几种均为常规的属性类型,当数据集内的数据对象包含多种不同的属性类型时,则称其为混合属性数据。
4.1.3 K-Prototypes聚类算法
在第二章中,介绍了很多种聚类的方法,其中就有最常见的K-Means, K-Modes算法。这两种算法,前者适合处理数值型的数据,而后者在处理分类型数据时效果较好[25],但是在更多的情况下,既存在数值型数据,也存在分类型数据。为了解决这问题,K-Prototypes聚类算法出现了,在该算法中引入了参数,在计算距离时通过控制参数来控制两种不同属性的数据所占的权重,从而达到对混合型数据进行聚类分析的目的[31]
设待处理的数据集X = {X1, X2, ... Xn},其中数据集内共有n个数据对象,且每
个数据对象有。个属性,不妨设数值型的属性有p个,分类型数据有m-p个,可表示为
,前p个属性为数值型(用:标记表示),后面m-p个属性就是分类型(用c标记表示)。在K-Prototypes算法中,提出了一个新的概念,口Ll做混合属性簇的原型,可以将其理解成数值属性聚类中的质心。混合属性中存在两种属性,数值属性和分类属性,而原型则是从数值属性中取所有值的均值,再从分类属性中取属性值频率最高的属性,将两个值合并。
设有k个原型,则初始的原型集合可表示为v={Vl,V2,…Vk},簇的集合为C={C1, CZ, ... , Ck},一般情况下,使用欧氏距离计算数值间的距离,使用汉明距离计算分类型数据的距离,即属性值相同时取0,不同时取1,将两种距离相加即为K-Prototypes算法中数据对象到原型之间的距离[[32],因此计算数据集中数据对象Xi到原型Vi的距离公式如式((3-1)所示:
(4-6)
其中,n表示分类属性的权重。K-Prototyp es算法中,它的迭代终止条件为是的目标函数值不变,达到收敛,此目标函数如式(3-2)所示:
(4-7)
综上所述,K-Prototypes算法的主要思想就是基于划分的聚类算法,它将数据集X划分成为k个互不相交的簇,并同时使得目标函数取值收敛,该算法的具体过程如下:
输入:聚类生成的簇的个数k,数据集X,权重因子
输出:划分的结果C
- 从数据集X中随机地选择k个数据对象,将其作为初始的k个簇的原型;
- 通过公式(3-1)逐个计算得到数据集中数据对象到k个原型中每个原型的距离d(Xi,Vi),并根据计算结果把每个数据对象加入到距离自身最近的原型中,得到新的划分C,然后更新簇的原型;
3)根据公式(3-2)计算目标函数,对比观察函数值是否改变,若改变则返回至步骤2),否则即输出此时划分结果C。
5.1距离度量
5.1.1距离度量的方法
在数据聚类分析和数据挖掘实验的过程中,往往需要计算个体之间差异的大小,从而通过差异大小对个体间的相似程度进行评价分析并进行分类。距离度量可以用来衡量空间中个体之间的差异,距离越大说明个体间差异越大。距离度量的方法有很多种,每一种度量的方式其适用场景也不尽相同。以下介绍几种最常见的距离度量方法:
1)欧氏距离,也称为欧几里得距离。它是最常见且使用最频繁的一种距离度,它计算多维空间中点与点之间的真实距离,或者多维空间中向量的长度,即点到空间原点的距离[33]。因为欧氏距离的计算是基于个体间在各维度数值差,因此计算时需要保证各个维度的数值应该是相通的刻度单位,否则计算结果不仅会丢失精度,还会导致结果错误。因此,当各维度数据的单位不同,需要采用标准化方法将单位统一,通常使用的标准化方法有 min-max标准化、log函数法以及z-score标准化。在n维空间中欧氏距离的计算公式如式(5-1)所示:
(5-1)
其中,Xi,Xj为表示n维空间中的点,Xir表示点Xi在某一维度的值。
2)马氏距离[34],是由印度数学家马哈拉诺比斯所提出用来表示数据之间的协方差距离,可以被用来计算未知样本集之间的相似程度。不同于上述的欧氏距离将各个维度的分量视为无关联的,在马氏距离的计算中考虑了各维度数值间的关系,除此之外在马氏距离中无需考虑各维度的刻度单位,距离值与单位刻度无关。设协方差矩阵为S,均值为u,样本集表示为X,则马氏距离计算公式如式(3-4)所示:
(5-2)
除此之外,马氏距离也可以用于表示当两个随机变量Xi, Xj在同一分布下且协方差矩阵为S时之间的相似度,计算公式如下式(3-5)所示:
(5-3)
其中,当协方差矩阵S是单位矩阵时,马氏距离就是欧氏距离[35],不难发现马氏距离会带带来巨大计算量[36]
3)汉明距离[37],常常应用于通信编码上用来实现纠错,而在机器学习的领域之中,汉明距离也是一种度量距离的方式。汉明距离定义如下,设两个等长的字符串a, b,汉明距离则是这两个字符串在相应位置上不同字符的总数。例如,两个字符串a, b,其中a = 'kate' b = 'kite',则字符串a, b之间的汉距离为1。
4)余弦距离[38],顾名思义是用基于两个向量之间产生夹角度数的余弦值作为距离来评估个体之间相似度大小。从定义不难发现,不同于以上的几种距离度量方法,余弦距离并不关心每个维度具体数值的大小,而是关心两个向量在方向上的相近程度,在数学中就常常使用余弦值来表示两个向量的方向差异而后才将其进行推广到其他领域当中来计算相似度。根据定义可知,余离的取值区间为卜1, 1},这一区间范围适用于任何维度的距离计算,其中取值为1表示当两个向量指向的方向相同,为一1时表示两个向量方向完全相反[39]。实际上,余弦距离常常被使用于计算高维正空间的中个体间的相似度。余弦相似性最常用于高维正空间,例如计算文章之间主题的相似程度,在信息检索当中通过将文章中主题词放置于不同维度即可以计算其余弦距离;在聚类分析时也可以使用余弦距离来计算簇内数据对象的凝聚力。具体余弦距离计算公式如式(3-6)所示:
(5-4)
5) Jaccard相似系数,它是一种性能评价系数,可以用来比较有限的样本集合之间存在的相似性与差异性[[40],其中样本集合之间的相似度与其Jaccard相似系数的值是正相关的,即两个集合越相似,则Jaccard相似系数越大。设A, B两个均为有限集合,则集合A, B间的Jaccard相似系数定义为集合A和集合B的交集的大小与集合A与集合B并集大小的比值,如公式(3-7)所示:
(5-5)
其中,集合A, B分布如图5-1所示。
而当集合A, B均为空时,I扭,B)的值取1。不难发现,当两个集合越相似,它们的Jaccard相似系数越趋近于1,反之趋近于0。
5.1.2距离度量的比较分析
根据3.3.1节中对于各种常见距离度量方法的介绍不难发现,Jaccard相似系数在
比较集合间相似程度时相较于其他的距离度量方法会更加适合,因它本身就只关心集合之间重叠程度,而且不同于欧氏距离等距离度量,Jaccard相似系数可以直接对混合型数据进行计算,除此之外,Jaccard相似系数的计算复杂度相较其他度量方法而言也会低很多。
本章叙述了对基于语义的垂直分片系统的测试过程,首先介绍了实验环境,其次介绍了本次系统测试的内容,包括对系统三大功能模块中每一个模块的测试,针对测试结果得到最终的结论。
6.1实验环境
本次测试的实验环境的操作系统为Windows 10,开发工具的IDE为PyCharm,具体实验环境如表5-1所示。
表6- 1具体开发环境
6.2测试内容
基于以上的实验环境基础,对系统的原始数据处理、垂直分片、关键图表导出功能分别进行测试。
6.2.1处理原始数据
首先是进行原始数据处理的测试,如图6-1所示,在交互界面中选择原始数据文件,其中文件为“original_ SQL”的SQL文件。处理后原始数据与处理后的数据对比图如图6-1所示,原始SQL语句中的属性被提取出来,形成属性列表。
图6- 1原始数据与处理后数据对比
6.2.2获取垂直分片结果
其次是对垂直分片结果展示的测试,如图6-2所示,在图中的交互界面中显示了对于原始表的分片方案,数据表被分为三个部分。
图6- 2分片结果
6.2.3导出关键图表
在导出关键图表的步骤中,首先需要输入相应的表任务名,如图6-3所示,输入表任务名“tablel "。导出关键图表模块包括了对四种类型的图表的导出,如图6-4所示,为选择图表类型的示意图。
图6- 3表任务名输入
图6- 4图表类型选择
选中图6-4中的“轮廓系数折线图”导出该图,其中折线图如图6-5所示。
图6- 5轮廓系数折线图
选中图6-5中的“初始聚类结果图”导出该图,其中结果图如图6-6所示。
图6- 6初始聚类结果图
选中图6-6中的“合并簇后效果图”导出该图,其中效果图如图6-7所示。
选中图6-7中的“Jaccard相似系数结果表”导出该表,其中结果表如图6-8所示
图6- 8 Jaccard相似系数结果表
6.2.4测试结果
根据以上对系统的测试内容可以得出,该系统可以对原始SQL语句进行正确处理,并将处理的数据用于分析,从而得到基于语义的数据垂直分片方案,并且在选择表任务名以图表类型后,可以导出相应的关键图表。
6.3本章小结
本章主要是对系统测试过程的描述,包括对测试环境中的软件、硬件环境的描以及测试内容、对应的测试结果的描述,验证了系统的可用性。
第7章 操作步骤介绍
7.1原始数据处理功能的实现
基于以上对原始数据处理功能的设计,该功能的实现伪代码如下所示。
其中,方法Extra Pure SQL_ methods用于去除注释、空格提取纯SQL语句,Find_ Match_Query_methods方法用于找到该SQL语句匹配的正则表达式,而方法Extra_Query_Attributes methods是用于找到SQL语句中根据对应的规则所提取到的属性列表,最后生成的数据即为每条sQL语句相应涉及到的属性列表。
7.2垂直分片功能的实现
基于第三章中对于基于语义的数据垂直分片算法的设计,还需要再增加选择最佳聚类效果对应的K值的过程、以及对关键数据存储的过程,以下是垂直分片功能实现的伪代码。
其中,contour_coe f f icient_ method方法是用于计算数据集X在簇个数K取一定范围时相对应的轮廓系数,并找出范围内效果最好时的K值,write to一il。是存储相应数据的方法,Find_ Max Jaccard Similarity_method方法用来找到Jaccard相似系数最高的一对簇的原型所对应的簇,Merge_cluster方法是用来合并指定的两个簇。
7.3图表导出功能的实现
为了可以实现对于不同类型的图表进行生成并导出,需要将不同类型的图表生成步骤按照绘图数据是否需要先有降维处理来进行区别划分,以下是具体功能实现的伪代码。
其中,Find_ G方法是用来查找表任务对应图表类型的图表是否存在,若不存在返回False,存在返回True, Find_ Data方法是用来查找表任务对应图表类型所需的数据;PCA method方法用来将多位特征值的数据进行降维,降至n维;Draw_Graph_ method方法用来根据数据以及对应的图表类型,绘制并且返回相应的图表。
7.4本章小结
本章首先根据现有的数据垂直分片场景进行需求分析得出,除了需要得到基于语义的数据垂直分片结果,还需要增加图形化操作界面,合适的数据处理以及关键图表的导出。然后针对需求分析中提到的几点,设计了三个功能模块,分别是原始数据处理功能、垂直分片功能以及图表导出功能。其中,原始数据处理对sQL语句进行处理,提取其中的属性,将其转化成属性列表,从而可以当作垂直分片算法的输入;垂直分片则是将处理好的数据进行分析处理,从而依据第三章的基于语义的垂直分片算法得到分片结果,并在整个过程中,增加对聚类效果最好情况K值的查找,记录关键数据用于后续图表的生成;图表导出则是根据需求导出聚类效果等相应图表。最后,针对每一个功能的实现进行具体说明。
参考文献
[1] A. H. Al-Sanhani, A. Hamdan, A. B. Al-Thaher et al. A comparative analysis of data fragmentation in distributed database. In: 2017 8th International Conference on Information Technology (ICIT). Amman Jordan: IEEE, 2017. 724-729
[2] Gelenbe. Random neural networks with negative and positive signals and product form solution. Neural Computation, 1989, 1 (14): 502-511
[3]蒋本天,贺楠,邢恺等.基于RNN的数据分片技术的研究.佳木斯教育学院学报,2011,1(04): 359+365
[4] A. Dahal, S. R. Joshi. A Clustering Based Vertical Fragmentation and Allocation of a Distributed Database. In: 2019 Artificial Intelligence for Transforming Business a Society (AITB). Kathmandu Nepal: IEEE, 2019. 1-5
[5] S. Harikumar, R. Ramachandran. H沙ridized fragmentation of very large databases using clustering. In: 2015 IEEE International Conference on Signal Processing, Informatics, Communication and Energy Systems (SPICES). Kozhikode India: IEEE, 2015. 1-5
[6] A. Dahal, S. R. Joshi. A Comparative Analysis on Performance of Minimum Spanning Tree and K-Means Clustering Based Vertical Fragmentation Algorithm. In: 2019 Artificial Intelligence for Transforming Business and Society (AITB). Kathmandu Nepal: IEEE, 2019. 1-4
[7] E. Lutfina. A Performance Comparative of Vertical Fragmentation Table Using Bond Energy and Graph Based Vertical Partitioning Algorithm. In: 2018 International Seminar on Application for Technology of Information and Communication. Semarang: IEEE, 2018. 377-380
[8] A. E. Abdel Raouf, N. L. Badr, M. F. Tolba. An optimized scheme for vertical fragmentation, allocation and replication of a distributed database. In: 2015 IEEE Seventh International Conference on Intelligent Computing and Information Systems (ICICIS). Cairo Egypt: IEEE, 2015. 506-513
[9] S. Song, N. Gorla. A Genetic Algorithm for Vertical Fragmentation and Access Path Selection. The Computer Journal, 2000, 1(43): 81-93
[ 10] H. I. Abdalla, A. A. Amen Dynamic horizontal fragmentation, replication and allocation model in DDBSs. In: 2012 International Conference on Information Technology and e-Services. Sousse Tunisia: IEEE, 2012. 1-7
[ 11 ] Hadj Mahboubi, Jerome Darmont. Data mining-based fragmentation of XML data warehouses. In: Proceedings of the ACM 11th international workshop on Data warehousing and OLAP. New York USA: ACM, 2008. 9-16
[12]Navathe S, Ceri S, Wiederhold G et al. Vertical Partitioning Algorithms for Database Design. ACM Transactions on Database Systems, 1984, 9 (4): 680-710
[13」黄河,周英腾.数据库加速引擎中数据垂直分片技术研究.计算机工程,2006,1(16): 34-35+51
[14]Xu R, Wunsch D. Survey of clustering algorithms. IEEE Trans on Neural Networks,2005, 16(3): 645-678
[15]Han J, Kamber M. Data mining concepts and techniques. San Francisco: Morgan Kaufmann, 2001.443-446
[16]祁亚斐,王意洁.基于高斯模型的不确定数据流Skyline查询方法.计算机研究与发展.2012,07:1467-1473.
[17]A. K. Jain, M. N. Murty, P. J. Flynn. Data clustering: A review. ACM Computing Surveys, 1999, 31(3): 264-323
[18] El Harchaoui NE. Unsupervised Approach Data Analysis Based on Fuzzy Possibilistic Clustering: Application to Medical Image MRI. Computational intelligence and Neuroscience, 2013, 1:40-45
[19] Marques JP. Pattern Recognition Concepts. Methods and Applications, 2002, 1:51-74
[20] Gelbard R, Goldman O, Spiegler I. Investigating diversity of clustering methods: An empirical comparison. Data&Knowledge Engineering, 2007, 63(1): 155一166
[21 ]王悦,唐常杰,杨宁等.在不确定数据集上挖掘优化的概率干预策略.软件学报,2011,22(02): 28s-297
[22] MacQueen J. Some methods for classification and analysis of multivariate observations.In: Proceedings of the sth Berkeley Symposium on Mathematical Statistics andProbability. Berkeley: University of California Press, 1967. 281-297
[23]A. Erdem. DBSCAl}I:A multicore density-based uncertain data clustering algorithmTurkish Journal of Electrical Engineering and Computer Science, 2014, 22(1): 143一1s4
[24] Huang Z. Extensions to the K-means algorithm for clustering large data sets withcategorical values. Data Mining and Knowledge Discovery, 1998, 2(3): 283-304
[2s]Paean M, Pelillo M. Dominant sets and pairwise clustering. IEEE Trans on PatternAnalysis and Machine Intelligence, 2007, 29(1): 167-172
[26] Denoeux T. Maximum Likelihood Estimation from Uncertain Data in the BeliefFunction Framework. IEEE Transaction on Knowledge and Data Engineering, 2013,2s(1): 119-130.
[27] Wang W, Yang J, Muntz R. STING: A Statistical Information Grid Approach to SpatialData Mining. In: Proceedings of the 23rd VLDB Conference. Athens Greece: IEEE,1997. 186-19s
[28] R. Agrawal, J. Gehrk, D. Gunopulos et al. Automatic Subspace Clustering of HighDimensional Data for Data Mining Applications. In: Proceedings of the 1998 ACM SIGMOD International Conference on Management of Data. New York USA: ACM,1998. 94-1 Os
[29] Sheikholeslami G, Chatter] ee S, Zhang A. Wave Cluster: A Multi-Resolution Clustering Approach for Very Large Spatial Database. In: Proceedings of the 24th VLDB Conference. New York, USA: IEEE, 1998. 428-439
[30] F. NAN,Y. LI, X. H. JIA et al. Application of improved SOM network in gene datacluster analysis. Measurement, 2019, 14s: 370-378
[31]贾子琪,宋玲.一种面向混合型数据聚类的k-prototypes聚类算法.小型微型计算机系统,2020, 41(09): 1845-1852
[32] Huang Z. Clustering large data sets with mixed numeric and categorical values. In: Proceedings of the First Pacific Asia Knowledge Discovery and Data MiningConference. Singapore: World Scientific, 1997. 21-34
[33]M. Mahdi, F. A. Maysam. Online elicitation of mamdani-type fuzzy rules via TSK-based generalized predictive control. IEEE Transactions on Systems, Man, andC油emetics一Part B: C油emetics June, 2003, 33(3): 465一475
[34] Hsu C M, Chen M S. On the design and applicability of distance functions indimensional data space. IEEE Trans on Knowledge and Data Engineering, 2009523-536
[35]汪贤龙.基于智能手机的无监督行为识别中的相似性度量方法研究:【硕士学位论文」.兰州:兰州大学,2018
[36] J. Mao, A. K. Jain. A self-organizing network for hyperelipsoidal clustering (HEC). In:IEEE Int Conf on Neural Networks. Orlando: IEEE, 1994. 2967-2972
[37」张焕炯,王国胜,钟义信.基于汉明距离的文本相似度计算.计算机工程与应用,2001,1(19): 21-22
[38]I. S. Dhillon, D. S. Modha. Concept decompositions for large sparse text data usingclustering. Machine Learning, 2001,42(1): 143一175
[39]叶濒磷,王文圣,袁满.不同相似指标下最近邻抽样回归模型在径流中长期预测中的应用比较.水电能源科学,2017, 1(12): 14-17
[40] R. REAL, J. M. VARGAS. The probabilistic basis of Jaccard's index of similarity.Systematic Biology, 1996, 45(3): 380-385