非关系型数据库Cassandra中分区路由方法

文档序号:7661431阅读:242来源:国知局
专利名称:非关系型数据库Cassandra中分区路由方法
技术领域
本发明涉及一种路由方法,尤其涉及一种非关系型数据库Cassandra中分区路由方法。
背景技术
Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite (分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储 MongoDB (介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。)Cassandra最初由!^cebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了 Google BigTable基于列族(Column Family)的数据模型。Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。和其他数据库比较,Cassandra具有三个突出特点
模式灵活使用Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部署上。真正的可扩展性Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。多数据中心识别你可以调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制。Cassandra分区路由方法的依据为Chord协议,更确切的说,Cassandra分区路由方法采用的算法是Chord协议的简化版实现。Chord是在2001年由麻省理工学院提出,其核心思想就是要解决在P2P应用中遇到的基本问题如何在P2P网络中找到存在特定数据的节点。在Cassandra中,一个数据中心往往是由成千上万台廉价服务器组成,每台服务器被称为一个节点。在每台服务器中,数据都是以Key-value对存放,所以读操作就是按照请求的Key值去庞大的数据中心查找存在该key值对应的value的节点的过程。Cassandra 具体路由算法如下
系统中每个节点在一定空间内随机被分配一个ID值,代表其在环上的位置。每个节点都存储一张路由表,表内顺时针按照离本节点2、4、8、16、32.……21的距离选定个其他节点的IP信息来记录。其每个节点存储的路由表格式如图2所示。如图1所示,一个具体的查询过程如下
一个Key值的读请求从客户端到某个节点,该节点作为代理节点,对请求数据的Key值进行一致性哈希运算,得要一个键值,按照这个键值,根据集群组建时定下的复制策略来确定保存这个数据的η个节点的ID号,以查找其中一个节点为例,先从该代理节点的路由表中,找一个和该哈希得到的键值距离最近、并且存活在网络中的节点next (注此距离即为 key值哈希得到的键值和节点ID之间的差)。如果该节点的id巧合和上述根据请求Key 值哈希得到的键值相等,那么你已经找到所要的节点。如果不相等,则到next进行递归查找。一般或需要经过多次查询才能找到数据所在的节点。这个次数是可以被证明小于等于 Iog2N的。这就是Cassandra所用到的基本的路由思想。现有Cassandra中分区路由方法的缺点是算法灵活性不足,比较死板,路由效率并不高,而且节点间如果存在大量路由信息,也会降低系统效率。存在此缺点的原因是,在 Cassandra路由算法中,如图2所示,每个节点的路由表中第三列中只记录一个节点的信息,导致路由效率不高;而且,按照其第二列距离来说,此距离是由减法得到的,这里也有可以提升的空间。

发明内容
本发明所要解决的技术问题在于克服现有Cassandra中分区路由方法的缺点,提供一种具有更高效率的非关系型数据库Cassandra中分区路由方法。本发明的思路是将Kad算法的思想引入现有Cassandra分区路由方法中,对现有分区路由方法进行改进,从而提高路由效率。Kad (Kademlia,通常简称为 Kad)是美国纽约大学的 PetarP. Maymounkov 和 David Mazieres在2002年发布的一项研究结果。Kad算法是一种分布式哈希表(DHT)技术,不过和其他DHT实现技术比较,如chord等,Kad通过独特的以异或算法为距离度量基础,建立了一个全新的DHT拓扑算法,相比于其他算法,可以大大提高路由查询速度。具体而言,本发明采用以下技术方案
一种非关系型数据库Cassandra中分区路由方法,所述非关系型数据库Cassandra — 个数据中心中每个节点在一定空间内随机被分配一个ID值,该ID值在本数据中心内是唯一的,这个ID在本代表其在环上的位置;每个节点都存储一张路由表,路由表内记录有按照离本节点的距离所选定的多个其他节点的IP信息;进行路由搜索时,根据节点间的距离由近到远进行递归查找,所述节点间的距离是通过对两节点的ID进行异或运算得到。进一步地,所述路由表中保存有与本节点距离为
2的节点信息,i = m、k,k为预先设定的整数。本发明将Kad算法的思想引入现有Cassandra分区路由方法中,以异或算法(XOR) 为节点间距离的度量基础,并对路由表进行了修改。相比现有路由方法,本发明具有以下优点。
一.方便进行网络划分,节点按照二进制中每一bit的O或1建成一棵二叉树;
二.使每个节点保持的路由信息更丰富,同样是将整个网络按照划分成Iog2N份,在 Cassandra原来的方法中中,是保持Iog2N个路由节点,但在本发明中,则是保存了 Iog2N个队列,这样就保存了更多的节点,使得命中率更高。每个队列长度为配置值t 是根据网络状态设置的常数),记录网络中对应节点区域的多个节点,并且根据活跃时间对这些节点进行换入换出。


图1为现有Cassandra分区路由方法的流程图; 图2为现有Cassandra分区路由方法的路由表结构; 图3为本发明的路由表结构;
图4为本发明路由方法与现有路由方法的效率对比结果。
具体实施例方式下面结合附图对本发明的技术方案进行详细说明
本发明中,所述非关系型数据库Cassandra中每个节点在一定空间内随机被分配一个 ID值,代表其在环上的位置;每个节点都存储一张路由表,路由表的结构如图3所示,我们可以将图3所示的路由表和现有技术的路由表(图2)进行比较。针对于每一个节点,在图2 的路由表中,在与本节点减法对应距离的范围内只存放一个节点,(第二列表示与本节点的对应距离,第三例表示存储的节点)。而在本发明的路由表中,在与本节点对应的距离范围内,存放着若干个节点。其中,节点间的距离是通过对两节点的ID进行异或运算得到。在进行路由搜索时,按照以下步骤
步骤1、接收到查询请求的节点将查询请求中的key值进行哈希,得到的哈希值即为所要查找目标节点的ID;
步骤2、将目标节点ID与本节点ID进行异或运算得到两节点的距离,查找路由表,看路由表对应的距离范围那一行第三列上,有无目标节点,如存在,直接返回目标节点;如不存在,则转步骤3;
步骤3、将该距离范围内那一行的第三列所存放的所有节点ID与目标节点ID异或,找出异或值最小的那个节点,以该节点为本节点执行步骤2,依次递归查找,直到返回目标节
点ο具体而言,假设ID值为χ的节点要查找ID值为y的节点,则按照以下的递归操作步骤进行路由查找
第一步、将key值进行哈希,这个哈希函数可以具体应用时再定义。哈希得到的数值就是目标节点1。所以,过程演变成从χ节点查找y节点。第二步、对x、y异或计算出χ与y的距离dis,即diS=X XOR y,X0R表示异或。根据dis属于的[2n,2n+1),求出η;在节点χ的路由表中第η行中第三列中比较有无目标节点, 如果存在,则将返回目标节点此该目标节点的信息,包括IP等。如果不存在,则将此行第三列中所有节点ID与目标节点ID进行异或,找出与目标节点异或值最小的那个节点ζ。第三步、如果第二步中没有找到目标节点y,则路由到第二步最后得到的节点ζ进行从第二步开始的递归查找,直到查询出目标节点y,并返回。为了验证本发明的有益效果,模拟了一个数据中心,其中有64个节点,每个节点各自存有Key-value对,并假设在某一随机节点查询某一 key值,此需要路由到目标节点去取值。分别采用本发明方法与现有方法进行路由查找,并对比两种方法找到目标节点所需经过的路由节点数。最终得到的对比结果如附图4 (截取了实验的一部分数据)所示,其中,第二列表示本节点即发起查找请求的节点,第三列表示要查找的目标节点,第四列和第五列表示依据改进前后算法,路由过程经过的节点。在十次实验中,原本算法需路由节点数44 (将该表中第四列中所用显示到的节点相力Π)个,而本发明(即图中的改进算法)只需路由节点数33 (将该表中第五列中所用显示到的节点相加)个。由此,相比现有方法,本发明的路由效率提升了 25%。
权利要求
1.一种非关系型数据库Cassandra中分区路由方法,所述非关系型数据库Cassandra 一个数据中心中每个节点在一定空间内随机被分配一个ID值,该ID值在本数据中心内是唯一的,这个ID代表其在环上的位置;每个节点都存储一张路由表,路由表内记录有按照离本节点的距离所选定的多个其他节点的IP信息;进行路由搜索时,根据节点间的距离由近到远进行递归查找,其特征在于,所述节点间的距离是通过对两节点的ID进行异或运算得到。
2.如权利要求1所述非关系型数据库Cassandra中分区路由方法,其特征在于,所述路由表中保存有与本节点距离为 的节点信息,I = 0,1,2,-,A',^为预先设定的整数。
3.如权利要求2所述非关系型数据库Cassandra中分区路由方法,其特征在于,该方法包括以下步骤步骤1、接收到查询请求的节点将查询请求中的key值进行哈希,得到的哈希值即为所要查找目标节点的ID;步骤2、将目标节点ID与本节点ID进行异或运算得到两节点的距离,查找路由表,看路由表对应的距离范围那一行第三列上,有无目标节点,如存在,直接返回目标节点;如不存在,则转步骤3;步骤3、将该距离范围内那一行的第三列所存放的所有节点ID与目标节点ID异或,找出异或值最小的那个节点,以该节点为本节点执行步骤2,依次递归查找,直到返回目标节点ο
全文摘要
本发明公开了一种非关系型数据库Cassandra中分区路由方法。所述非关系型数据库Cassandra一个数据中心中每个节点在一定空间内随机被分配一个ID值,该ID值在本数据中心内是唯一的,这个ID在本代表其在环上的位置;每个节点都存储一张路由表,路由表内记录有按照离本节点的距离所选定的多个其他节点的IP信息;进行路由搜索时,根据节点间的距离由近到远进行递归查找,所述节点间的距离是通过对两节点的ID进行异或运算得到。本发明通过对现有路由方法进行改进,以异或算法为距离度量基础,有效提高了非关系型数据库Cassandra中的数据查询效率。
文档编号H04L12/56GK102201986SQ20111011879
公开日2011年9月28日 申请日期2011年5月10日 优先权日2011年5月10日
发明者陈叶辉, 陈国庆 申请人:苏州两江科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1