CN102201986A - 非关系型数据库Cassandra中分区路由方法 - Google Patents
非关系型数据库Cassandra中分区路由方法 Download PDFInfo
- Publication number
- CN102201986A CN102201986A CN2011101187952A CN201110118795A CN102201986A CN 102201986 A CN102201986 A CN 102201986A CN 2011101187952 A CN2011101187952 A CN 2011101187952A CN 201110118795 A CN201110118795 A CN 201110118795A CN 102201986 A CN102201986 A CN 102201986A
- Authority
- CN
- China
- Prior art keywords
- node
- routing
- distance
- relational database
- cassandra
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种非关系型数据库Cassandra中分区路由方法。所述非关系型数据库Cassandra一个数据中心中每个节点在一定空间内随机被分配一个ID值,该ID值在本数据中心内是唯一的,这个ID在本代表其在环上的位置;每个节点都存储一张路由表,路由表内记录有按照离本节点的距离所选定的多个其他节点的IP信息;进行路由搜索时,根据节点间的距离由近到远进行递归查找,所述节点间的距离是通过对两节点的ID进行异或运算得到。本发明通过对现有路由方法进行改进,以异或算法为距离度量基础,有效提高了非关系型数据库Cassandra中的数据查询效率。
Description
技术领域
本发明涉及一种路由方法,尤其涉及一种非关系型数据库Cassandra中分区路由方法。
背景技术
Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存储***)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。)Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以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.……2i的距离选定log2N个其他节点的IP信息来记录 。其每个节点存储的路由表格式如图2所示。如图1所示,一个具体的查询过程如下:
一个Key值的读请求从客户端到某个节点,该节点作为代理节点,对请求数据的Key值进行一致性哈希运算,得要一个键值,按照这个键值,根据集群组建时定下的复制策略来确定保存这个数据的n个节点的ID号,以查找其中一个节点为例,先从该代理节点的路由表中,找一个和该哈希得到的键值距离最近、并且存活在网络中的节点next(注:此距离即为key值哈希得到的键值和节点ID之间的差)。如果该节点的id巧合和上述根据请求Key值哈希得到的键值相等,那么你已经找到所要的节点。如果不相等,则到next进行递归查找。一般或需要经过多次查询才能找到数据所在的节点。这个次数是可以被证明小于等于log2N的。这就是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进行异或运算得到。
本发明将Kad算法的思想引入现有Cassandra分区路由方法中,以异或算法(XOR)为节点间距离的度量基础,并对路由表进行了修改。相比现有路由方法,本发明具有以下优点:
一.方便进行网络划分,节点按照二进制中每一bit的0或1建成一棵二叉树;
附图说明
图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值为x的节点要查找ID值为y的节点,则按照以下的递归操作步骤进行路由查找:
第一步、将key值进行哈希,这个哈希函数可以具体应用时再定义。哈希得到的数值就是目标节点y。所以,过程演变成从x节点查找y节点。
第二步、对x、y异或计算出x与y的距离dis,即dis=x XOR y,XOR表示异或。根据dis属于的[2n,2n+1),求出n;在节点x的路由表中第n行中第三列中比较有无目标节点,如果存在,则将返回目标节点此该目标节点的信息,包括IP等。如果不存在,则将此行第三列中所有节点ID与目标节点ID进行异或,找出与目标节点异或值最小的那个节点z。
第三步、如果第二步中没有找到目标节点y,则路由到第二步最后得到的节点z进行从第二步开始的递归查找,直到查询出目标节点y,并返回。
为了验证本发明的有益效果,模拟了一个数据中心,其中有64个节点,每个节点各自存有Key-value对,并假设在某一随机节点查询某一key值,此需要路由到目标节点去取值。分别采用本发明方法与现有方法进行路由查找,并对比两种方法找到目标节点所需经过的路由节点数。最终得到的对比结果如附图4(截取了实验的一部分数据)所示,其中,第二列表示本节点即发起查找请求的节点,第三列表示要查找的目标节点,第四列和第五列表示依据改进前后算法,路由过程经过的节点。在十次实验中,原本算法需路由节点数44(将该表中第四列中所用显示到的节点相加)个,而本发明(即图中的改进算法)只需路由节点数33(将该表中第五列中所用显示到的节点相加)个。由此,相比现有方法,本发明的路由效率提升了25%。
Claims (3)
1.一种非关系型数据库Cassandra中分区路由方法,所述非关系型数据库Cassandra一个数据中心中每个节点在一定空间内随机被分配一个ID值,该ID值在本数据中心内是唯一的,这个ID代表其在环上的位置;每个节点都存储一张路由表,路由表内记录有按照离本节点的距离所选定的多个其他节点的IP信息;进行路由搜索时,根据节点间的距离由近到远进行递归查找,其特征在于,所述节点间的距离是通过对两节点的ID进行异或运算得到。
3.如权利要求2所述非关系型数据库Cassandra中分区路由方法,其特征在于,该方法包括以下步骤:
步骤1、接收到查询请求的节点将查询请求中的key值进行哈希,得到的哈希值即为所要查找目标节点的ID;
步骤2、将目标节点ID与本节点ID进行异或运算得到两节点的距离,查找路由表,看路由表对应的距离范围那一行第三列上,有无目标节点,如存在,直接返回目标节点;如不存在,则转步骤3;
步骤3、将该距离范围内那一行的第三列所存放的所有节点ID与目标节点ID异或,找出异或值最小的那个节点,以该节点为本节点执行步骤2,依次递归查找,直到返回目标节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101187952A CN102201986A (zh) | 2011-05-10 | 2011-05-10 | 非关系型数据库Cassandra中分区路由方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101187952A CN102201986A (zh) | 2011-05-10 | 2011-05-10 | 非关系型数据库Cassandra中分区路由方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102201986A true CN102201986A (zh) | 2011-09-28 |
Family
ID=44662387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101187952A Pending CN102201986A (zh) | 2011-05-10 | 2011-05-10 | 非关系型数据库Cassandra中分区路由方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102201986A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737131A (zh) * | 2012-06-21 | 2012-10-17 | 广州从兴电子开发有限公司 | 一种针对数据库重做日志的处理方法及*** |
CN102737130A (zh) * | 2012-06-21 | 2012-10-17 | 广州从兴电子开发有限公司 | 处理hdfs元数据的方法及*** |
CN103020202A (zh) * | 2012-12-06 | 2013-04-03 | 河海大学 | 一种基于字符串的复杂动态数据关系化解方法 |
CN103514201A (zh) * | 2012-06-27 | 2014-01-15 | 阿里巴巴集团控股有限公司 | 一种非关系型数据库的数据查询方法和装置 |
CN103838770A (zh) * | 2012-11-26 | 2014-06-04 | ***通信集团北京有限公司 | 一种数据逻辑分区的方法和*** |
CN106789632A (zh) * | 2017-02-25 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种大规模分布式存储***的节点路由的方法 |
CN107463577A (zh) * | 2016-06-06 | 2017-12-12 | 华为软件技术有限公司 | 一种数据存储***以及数据查找方法 |
CN107491544A (zh) * | 2017-08-25 | 2017-12-19 | 上海德拓信息技术股份有限公司 | 一种增强非关系型数据库分析能力的数据处理平台 |
CN109213760A (zh) * | 2018-08-02 | 2019-01-15 | 南瑞集团有限公司 | 非关系数据存储的高负载业务存储及检索方法 |
CN111324633A (zh) * | 2020-02-18 | 2020-06-23 | 杭州复杂美科技有限公司 | 一种区块链交易分布式缓存方法和***、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1691619A (zh) * | 2004-04-27 | 2005-11-02 | 国家数字交换***工程技术研究中心 | 自组织网络的实现方法 |
CN101064649A (zh) * | 2007-02-02 | 2007-10-31 | 华为技术有限公司 | 选举超级节点、搜索网络节点或资源的方法、装置及*** |
CN101867527A (zh) * | 2010-07-06 | 2010-10-20 | 重庆大学 | 基于物理位置的分层Chord路由方法 |
CN101997755A (zh) * | 2009-08-28 | 2011-03-30 | ***通信集团公司 | 映射信息交换的方法及映射节点 |
-
2011
- 2011-05-10 CN CN2011101187952A patent/CN102201986A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1691619A (zh) * | 2004-04-27 | 2005-11-02 | 国家数字交换***工程技术研究中心 | 自组织网络的实现方法 |
CN101064649A (zh) * | 2007-02-02 | 2007-10-31 | 华为技术有限公司 | 选举超级节点、搜索网络节点或资源的方法、装置及*** |
CN101997755A (zh) * | 2009-08-28 | 2011-03-30 | ***通信集团公司 | 映射信息交换的方法及映射节点 |
CN101867527A (zh) * | 2010-07-06 | 2010-10-20 | 重庆大学 | 基于物理位置的分层Chord路由方法 |
Non-Patent Citations (4)
Title |
---|
《电脑知识与技术》 20101031 刘欣 "Cassandra数据库安全性分析与改进" 第9929-9931页 1-3 第6卷, 第35期 * |
《程序员》 20100630 范凯 "NoSQL数据库综述" 第76-78页 1-3 , 第6期 * |
刘欣: ""Cassandra数据库安全性分析与改进"", 《电脑知识与技术》 * |
范凯: ""NoSQL数据库综述"", 《程序员》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737130A (zh) * | 2012-06-21 | 2012-10-17 | 广州从兴电子开发有限公司 | 处理hdfs元数据的方法及*** |
CN102737131A (zh) * | 2012-06-21 | 2012-10-17 | 广州从兴电子开发有限公司 | 一种针对数据库重做日志的处理方法及*** |
CN103514201A (zh) * | 2012-06-27 | 2014-01-15 | 阿里巴巴集团控股有限公司 | 一种非关系型数据库的数据查询方法和装置 |
CN103838770A (zh) * | 2012-11-26 | 2014-06-04 | ***通信集团北京有限公司 | 一种数据逻辑分区的方法和*** |
CN103020202A (zh) * | 2012-12-06 | 2013-04-03 | 河海大学 | 一种基于字符串的复杂动态数据关系化解方法 |
CN103020202B (zh) * | 2012-12-06 | 2015-10-28 | 河海大学 | 一种基于字符串的复杂动态数据关系化解方法 |
CN107463577B (zh) * | 2016-06-06 | 2021-01-29 | 华为技术有限公司 | 一种数据存储***以及数据查找方法 |
CN107463577A (zh) * | 2016-06-06 | 2017-12-12 | 华为软件技术有限公司 | 一种数据存储***以及数据查找方法 |
CN106789632A (zh) * | 2017-02-25 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种大规模分布式存储***的节点路由的方法 |
CN107491544B (zh) * | 2017-08-25 | 2020-12-29 | 上海德拓信息技术股份有限公司 | 一种增强非关系型数据库分析能力的数据处理平台 |
CN107491544A (zh) * | 2017-08-25 | 2017-12-19 | 上海德拓信息技术股份有限公司 | 一种增强非关系型数据库分析能力的数据处理平台 |
CN109213760A (zh) * | 2018-08-02 | 2019-01-15 | 南瑞集团有限公司 | 非关系数据存储的高负载业务存储及检索方法 |
CN109213760B (zh) * | 2018-08-02 | 2021-10-22 | 南瑞集团有限公司 | 非关系数据存储的高负载业务存储及检索方法 |
CN111324633A (zh) * | 2020-02-18 | 2020-06-23 | 杭州复杂美科技有限公司 | 一种区块链交易分布式缓存方法和***、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102201986A (zh) | 非关系型数据库Cassandra中分区路由方法 | |
CN102882973B (zh) | 基于p2p技术的分布式负载均衡***和方法 | |
JP5551270B2 (ja) | ピアツーピアネットワークを分解して、分解されたピアツーピアネットワークを使用するための方法および装置 | |
CN101753610A (zh) | 分布式网络构造方法、装置和***以及任务处理方法 | |
Xu et al. | Energy‐efficient big data storage and retrieval for wireless sensor networks with nonuniform node distribution | |
Malensek et al. | Expressive query support for multidimensional data in distributed hash tables | |
Hong et al. | Efficient R-tree based indexing scheme for server-centric cloud storage system | |
US20080097971A1 (en) | Peer-to-peer based secondary key search method and system for cluster database | |
Trifa et al. | A novel replication technique to attenuate churn effects | |
Kumar et al. | M-Grid: a distributed framework for multidimensional indexing and querying of location based data | |
CN102378407B (zh) | 一种物联网中的对象名字解析***及其解析方法 | |
CN101026537A (zh) | 对等网络及其网络资源查询方法 | |
CN107908713A (zh) | 一种基于Redis集群的分布式动态杜鹃过滤***及其过滤方法 | |
Toda et al. | Autonomous and distributed construction of locality aware skip graph | |
March et al. | Multi-attribute range queries on read-only DHT | |
CN105989078B (zh) | 一种结构化对等网络构建索引的方法、检索方法、装置及*** | |
Baldoni et al. | A self-organizing crash-resilient topology management system for content-based publish/subscribe | |
Liu et al. | Design and optimization for distributed indexing scheme in switch-centric cloud storage system | |
Villaça et al. | HCube: Routing and similarity search in data centers | |
CN115297131B (zh) | 一种基于一致性哈希的敏感数据分布式储存方法 | |
CN113179336B (zh) | 面向亿量级大规模集群的分布式对等网络*** | |
Luo et al. | Multi-dimensional hashing for fast network information processing in SDN | |
Ding et al. | Performing MapReduce on data centers with hierarchical structures | |
Li et al. | A multidimensional index for range queries over Cayley‐based DHT | |
Knoll et al. | A P2P-Framework for Context-based Information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110928 |