一种分布式数据库及其数据操作方法

文档序号:6443183阅读:206来源:国知局

专利名称::一种分布式数据库及其数据操作方法
技术领域
:本发明涉及计算机网络的数据库技术,尤其涉及一种分布式数据库及其数据操作方法。
背景技术
:传统的数据库是集中式的关系型数据库。随着数据量的增大,需要将数据分布采用多个数据库服务器存储。传统的关系型数据库难以分布化,扩展困难。因此,业界通过简化关系型数据库的数据管理模型,牺牲数据管理的能力来换取增强扩展性,提出了高扩展的面向列的分布式数据库bigtable、Cassandra。面向列的分布式数据库由多个数据库节点组成,将数据以行的形式存储。每行有整个数据库唯一的行标识,每行包含多列,每列有其所在行内唯一的列名。数据以行为单位分配并存储到多个数据库节点,一个数据库节点存储一个或多个行标识区间范围内的数据,一行数据至少分配给一个数据库节点存储。对于面向列的分布式数据库,需要提供行标识、列名和操作指令来对同一行的数据库节点内的一个或多个列数据进行增删查改操作。面向列的分布式数据库存在数据管理能力有限,无法存储和处理复杂数据的问题,因而也无法支持复杂数据的存储及操作。
发明内容有鉴于此,本发明的主要目的在于提供一种分布式数据库及其数据操作方法,以解决现有的分布式数据库数据管理能力有限的问题。为达到上述目的,本发明的技术方案是这样实现的本发明提供了一种分布式数据库,所述分布式数据库包括一个或多个节点,所述节点用于存储有一个或多个数据对象,所述数据对象包含一个或多个表,所述表中包含数据;结构相同的所述数据对象属于同一个数据对象集合;所述数据对象具有数据对象标识,该数据对象标识用于区分同一数据对象集合中的各数据对象。在上述方案中,所述节点具体用于存储指定区间内的数据对象,所述区间基于各数据对象的数据对象标识划分。在上述方案中,所述表包括至少零行、和至少一列。本发明还提供了一种分布式数据库的数据操作方法,所述分布式数据包括一个或多个节点,所述方法包括将一个或多个数据对象分配并存储到分布式数据库的各节点,所述数据对象包含一个或多个表,所述表中包含数据,结构相同的所述数据对象属于同一个数据对象集合;所述数据对象具有数据对象标识,该数据对象标识用于区分同一数据对象集合中的各数据对象;所述节点在接收到数据操作请求或触发数据操作请求后,按照所述数据操作请求3中的操作指令,对所述数据操作请求所指定的数据对象进行操作。在上述方案中,所述数据操作请求中包括用于指定数据对象集合的数据对象集合名称、数据对象标识和操作指令序列,该操作指令序列包括至少一条操作指令。在上述方案中,所述将一个或多个数据对象分配并存储到分布式数据库的各节点,包括基于所述数据对象标识将各数据对象划分为一个或多个区间,并将所述一个或多个区间的数据对象分配并存储到相应的节点中。在上述方案中,所述将一个或多个数据对象分配并存储到分布式数据库的各节点,为采用分布式哈希表(DHT)算法将一个或多个数据对象分配并存储到所述分布式数据库的各节点。本发明提供的分布式数据库及其数据操作方法,将数据以数据对象的形式进行分布式存储,一个数据对象中包含一个或多个表,从而能够包含一组关系密切的复杂数据,便于对复杂数据进行管理,扩展性强,且功能更强大;此外,还可以以数据对象为单位进行数据操作,从而实现对复杂数据的操作。图1为本发明实施例一分布式数据库各节点存储数据的示意图;图2为本发明实施例二分布式数据库各节点存储数据的示意图;图3为本发明实施例三分布式数据库中所存储数据对象集合的结构示意图;图4为本发明实施例四中进行数据操作的一个流程示意图;图5为本发明实施例四中进行数据操作的另一流程示意图。具体实施例方式本发明的基本思想是提供一种分布式数据库,具备和面向列的分布式数据库一样的扩展性,同时能大大增强数据操作能力。本发明的一种分布式数据库,包括一个或多个节点,一个节点存储一个或多个数据对象,各数据对象包含一个或多个表,所述表中包含数据。其中,结构相同的各数据对象属于同一个数据对象集合,各数据对象均具有数据对象标识,数据对象标识在数据对象集合内唯一,用于将一个数据对象集合中的各数据对象区分开。这里,数据对象的结构相同是指所述数据对象中包含的表的数量、名称、以及结构相同。其中,一个表可以存储至少0行、和至少一列的数据。其中,所述区间基于各数据对象的数据对象标识进行划分,一个节点负责存储指定区间内的数据对象。相应的,本发明还提供了上述分布式数据库进行数据操作的方法,所述方法包括将一个或多个数据对象分配并存储到分布式数据库的各节点,所述数据对象包含一个或多个表,所述表中包含数据;所述节点在接收到数据操作请求或触发数据操作请求后,按照所述数据操作请求中的操作指令,对所述数据操作请求所指定的数据对象进行操作。这里,一个数据操作请求限定对一个数据对象进行操作。数据操作请求包含用于指定数据对象集合的数据对象集合名称、数据对象标识、操作指令序列。其中,操作指令序列可以包含至少一条操作指令。具体地,操作指令可以采用结构化查询语言(SQL,StructuredQueryLanguage)的形式,这里的SQL可以与访问关系型数据库所采用的SQL相同。所述将一个或多个数据对象分配并存储到分布式数据库的各节点,包括基于所述数据对象标识将各数据对象划分为一个或多个区间,并将所述一个或多个区间的数据对象分配并存储到相应的节点中。具体地,可以采用分布式哈希表(DHT)算法将一个或多个数据对象分配并存储到所述分布式数据库的各节点。此外,分布式数据库还可以通过数据对象级或数据对象内的表级版本号对各表进行管理或加锁,以实现高并发访问和避免数据不一致。具体实现过程与现有的表级版本号管理及加锁的实现过程相同,不再赘述。实施例一本实施例,对数据对象的分配及存储进行举例说明。具体地,可以将数据对象分别用a-z的沈个字母区分,分为沈个部分,例如,可以在各数据对象的标识中包含相应的字母。如图3所示,分布式数据库包括四个节点,分别是节点A、节点B、节点C、节点D,分别存储一部分数据对象。具体地,节点A负责存储a_g区间内的数据对象,节点B负责存储h-p区间内的数据对象,节点C负责存储p-r区间内的数据对象,节点D负责存储s-z区间内的数据对象。实施例二本实施例中,对数据对象的分配及存储进行举例说明。具体地,通过在各数据对象标识中包含相应的数字,来将数据对象分别用1至16的数值区分,分为16个部分。如图4所示,分布式数据库包括四个节点,分别是节点A、节点B、节点C、节点D,分别存储一部分数据对象。具体地,节点A存储区间(1,4]、以及区间(12,16]内的数据对象,节点B存储区间(4,8],、以及区间(0,4]内的数据对象,节点C存储区间(8,12]、区间(4,8]内的数据对象,节点D存储区间(12,16]、区间(8,12]内的数据对象。这里,可以用哈希函数等映射函数将数据对象的某项属性统一映射为数值型数据对象标识,基于数据对象的数值型数据对象标识,将数据对象分为均勻分为几个部分,从而使数据对象在分配及存储时也能够均勻分布。例如,数据对象的某项属性可以是电话号码、使用者名称等。实施例三本实施例,对分布式数据库存储的数据对象集合的结构、以及数据对象的结构进行举例说明。如图3所示,分布式数据库存储了两个数据对象集合(Objectcollection),分别是名称为用户(user)、服务(service)的两个数据对象集合。如图3所示,数据对象集合user中包含了数据对象12(Object12)和数据对象30(0bject30),Object12和Object30的结构是相同的,均包含了公有用户标识(PUI,Publicuseridentity)、私有用户标识(PVI,PrivateUserIdentity)、签约(subscription)、联络(contact)四张表。其中,Object12和Object30中同名的表其结构也是相同的。例如,Object12的PUI表和Object30的PUI表的列数量和列名均相同。如图3所示,数据对象集合service中包含了数据对象22(Object22)和数据对^42(Object42),Object22和Object42的结构是相同的,均包含了tl、t2两张表。其中,0bject22和Object42中同名的表其结构也是相同的。实施例四本实施例,对于将各数据对象分配并存储到分布式数据库的各节点之后数据操作的流程进行详细说明。如果请求操作数据的节点与负责存储该数据的节点不是同一节点,数据操作流程如图4所示,包含步骤步骤401、请求操作数据的节点发送数据操作请求到负责存储所述数据的节点,其中,所述数据操作请求中包含有数据对象集合名称、数据对象标识、操作指令序列。这里,请求操作数据的节点可以直接发送所述数据操作请求到负责存储数据的节点,也可以经由其他节点转发所述数据操作请求到负责存储数据的节点。步骤402、负责存储所述数据的节点按照所述数据操作请求中的操作指令序列,依次操作指定数据对象集合中的指定数据对象。之后,还可以将数据操作的结果返回给所述请求操作数据的节点。这里,指定数据对象集合即为所述数据操作请求中数据对象集合名称所标识的数据对象集合,指定数据对象即为所述数据操作请求中数据对象标识所对应的数据对象。这里,请求操作数据的节点与负责存储数据的节点可以是同一分布式数据中的两个不同的节点,也可以是分别属于不同分布式数据库的两个不同节点。请求操作数据的节点还可以是分布式数据库外的客户端节点。如果请求操作数据的节点与负责存储数据的节点是同一节点,数据操作流程如图5所示,包含步骤步骤501、负责存储数据的节点触发数据操作请求,其中,所述数据操作请求中包含有数据对象集合名称、数据对象标识、操作指令序列。这里,可以在负责存储数据的节点中装载客户端程序,该客户端程序被访问时,在特定的情况下会触发数据操作,生成数据操作请求。例如,在接收到呼叫请求时,会触发相应的数据操作,生成相应的数据操作请求。步骤502、负责存储所述数据的节点按照所述数据操作请求中的操作指令序列,依次操作指定数据对象集合中的指定数据对象。例如,操作数据对象可以是根据所述数据操作请求中包含的一个或多个列的列值查询指定数据对象中的表,获得相应行的数据并返回;或者,在所述数据操作请求为联合操作(join)请求时,在所述数据操作请求所指定的数据对象内部,将所述数据操作请求所指定的两个表进行联合操作(join)。下面以图3的数据对象为例对数据操作的过程做进一步详细说明。如果在图3所示的数据对象集合及数据对象中,Object12中PUI表的内容如下表1所示,contact表的内容如下表2所示权利要求1.一种分布式数据库,其特征在于,所述分布式数据库包括一个或多个节点,所述节点用于存储有一个或多个数据对象,所述数据对象包含一个或多个表,所述表中包含数据;结构相同的所述数据对象属于同一个数据对象集合;所述数据对象具有数据对象标识,该数据对象标识用于区分同一数据对象集合中的各数据对象。2.根据权利要求1所述的分布式数据库,其特征在于,所述节点具体用于存储指定区间内的数据对象,所述区间基于各数据对象的数据对象标识划分。3.根据权利要求1所述的分布式数据库,其特征在于,所述表包括至少零行、和至少一列。4.一种分布式数据库的数据操作方法,其特征在于,所述分布式数据包括一个或多个节点,所述方法包括将一个或多个数据对象分配并存储到分布式数据库的各节点,所述数据对象包含一个或多个表,所述表中包含数据,结构相同的所述数据对象属于同一个数据对象集合;所述数据对象具有数据对象标识,该数据对象标识用于区分同一数据对象集合中的各数据对象;所述节点在接收到数据操作请求或触发数据操作请求后,按照所述数据操作请求中的操作指令,对所述数据操作请求所指定的数据对象进行操作。5.根据权利要求4所述分布式数据库的数据操作方法,其特征在于,所述数据操作请求中包括用于指定数据对象集合的数据对象集合名称、数据对象标识和操作指令序列,该操作指令序列包括至少一条操作指令。6.根据权利要求4所述分布式数据库的数据操作方法,其特征在于,所述将一个或多个数据对象分配并存储到分布式数据库的各节点,包括基于所述数据对象标识将各数据对象划分为一个或多个区间,并将所述一个或多个区间的数据对象分配并存储到相应的节点中。7.根据权利要求4所述分布式数据库的数据操作方法,其特征在于,所述将一个或多个数据对象分配并存储到分布式数据库的各节点,为采用分布式哈希表(DHT)算法将一个或多个数据对象分配并存储到所述分布式数据库的各节点。全文摘要本发明公开了一种分布式数据库,所述分布式数据库包括一个或多个节点,所述节点用于存储有一个或多个数据对象,所述数据对象包含一个或多个表,所述表中包含数据,结构相同的所述数据对象属于同一个数据对象集合;所述数据对象具有数据对象标识,该数据对象标识用于区分同一数据对象集合中的各数据对象。本发明还公开了一种分布式数据库的数据操作方法,便于对复杂数据进行管理,扩展性强,且功能更强大;此外,还可以实现对复杂数据的操作。文档编号G06F17/30GK102567505SQ20111044073公开日2012年7月11日申请日期2011年12月26日优先权日2011年12月26日发明者李漓春申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1