多索引数据库事务处理方法及数据库技术

技术编号:9899934 阅读:207 留言:0更新日期:2014-04-10 10:35
本申请涉及一种多索引数据库事务处理方法,所述数据库包含至少一行数据,所述多索引指向所述行数据中的至少一列数据,所述方法包括:生成全局有序的最新事务版本号;以所述最新事务版本号为标记,对所述数据库进行写事务处理,并更新所述写事务处理后所述数据库中的数据对应的多个索引;提交所述写事务处理数据,将所述数据库的全局事务版本号更新为当前最新事务版本号。本申请能够实现一种满足多索引的数据库中,对数据库进行事务处理时,能够保证数据库的ACID特性。

【技术实现步骤摘要】
【专利摘要】本申请涉及一种多索引数据库事务处理方法,所述数据库包含至少一行数据,所述多索引指向所述行数据中的至少一列数据,所述方法包括:生成全局有序的最新事务版本号;以所述最新事务版本号为标记,对所述数据库进行写事务处理,并更新所述写事务处理后所述数据库中的数据对应的多个索引;提交所述写事务处理数据,将所述数据库的全局事务版本号更新为当前最新事务版本号。本申请能够实现一种满足多索引的数据库中,对数据库进行事务处理时,能够保证数据库的ACID特性。【专利说明】多索引数据库事务处理方法及数据库
本申请涉及计算机领域,具体涉及到一种多索引数据库写事务处理方法、多索引数据库读事务处理方法及数据库。
技术介绍
数据库(Database )是按照数据结构来组织、存储和管理数据的仓库。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。为了提高在数据库中查询数据的效率,数据库需要对一些字段建立索引。以便于按照条件进行查询的情况下,可以先查询索引,并通过索引查找到相关的书库。数据库的索引通常有几种类型,例如顺序索引、散列索引或者位图索引等索引类型。现有技术中,数据库通常只对数据建立一种索引。采用一种索引方式进行查询,优点在于能够对特定的请求得到较高效率的查询,但是对于特定请求之外的查询,则相对另一种索引方式,效率就会相对较低。因此,可以设想将两种或者多种以上的索引结合到同一数据库中,以提高针对不同需求对数据库中的数据进行查询时的查询效率。但是,由于数据库需要在更新数据时保证对书库与索引的更新事务的原子性、一致性、隔离性、持久性,简称ACID (AtomicityConsistency Isolation Durability)特性,因此,本申请的目的就是提供一种多索引的数据库事务实现方法,能够在更新数据时保证对书库与索引的更新事务的ACID特性,并且提高对数据库内数据的检索效率。
技术实现思路
有鉴于此,本申请的目的是提供一种多索引数据库事务处理方法,以实现在更新数据时保证对书库与索引的更新事务的ACID特性,并且提高对数据库内数据的检索效率。一方面,本申请实施例提供一种多索引数据库事务处理方法,所述数据库包含至少一行数据,所述多索引指向所述行数据中的至少一列数据,所述方法包括:生成全局有序的最新事务版本号;以所述最新事务版本号为标记,对所述数据库进行写事务处理,并更新所述写事务处理后所述数据库中的数据对应的多个索引;提交所述写事务处理数据,将所述数据库的全局事务版本号更新为当前最新事务版本号。另一方面,本申请实施例提供一种多索引数据库事务处理方法,所述方法包括:获取所述数据库的最新事务版本号;根据设定的读取请求方式,采用至少一种索引查询所述数据库中的数据;读取查询到的所述数据库中的数据,并返回具有不晚于所述最新事务版本号的行数据版本号的数据。另一方面,本申请实施例提供一种数据库,包括:生成单元,用以生成新的全局有序的最新事务版本号;写事务处理单元,用以以所述最新事务版本号为标记,对所述数据库进行写事务处理,并更新所述写事务处理后所述数据库中的数据的对应的多个索引;更新单元,提交所述写事务处理数据,将所述数据库中的数据的全局事务版本号更新为当前最新事务版本号。另一方面,本申请实施例提供一种数据库,包括:获取单元,用以获取所述数据库的最新事务版本号;查询单元,用以根据设定的读取请求方式,采用至少一种索引查询所述数据库中的数据;读取单元,用以读取查询到的所述数据库中的数据,并返回具有不晚于所述最新事务版本号的行数据版本号的数据。本申请实施例提供的多索引数据库事务处理方法,为数据库建立了两种或两种以上的不同种类的索引之后,在处理数据库事务时首先为数据库生成全局有序的最新事务版本号,之后以事务版本号为标记,对所述数据库进行写事务处理,并更新所述写事务处理后所述数据库中的数据对应的多个索引,最后在完成全部索引的更新后提交所述写事务处理数据,将所述数据库的全局事务版本号更新为当前最新事务版本号。从而保证了在多索引的数据库中,对数据库进行事务处理时,能够保证数据库的ACID特性。【专利附图】【附图说明】为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的多索引数据库处理方法一实施例的流程图;图2为本申请实施例提供的多索引数据库处理方法一实施例的流程图;图2A为本申请实施例提供的单表多行的单个写事务处理的处理流程图;图3为本申请实施例提供的多索引数据库处理方法一实施例的流程图;图3A为本申请实施例提供的多表多行的单个写事务处理的处理流程图;图4为本申请实施例提供的插入一行数据的处理流程图;图5为本申请实施例提供的删除一行数据的处理流程图;图6为本申请实施例提供的更新一行数据的处理流程图;图6A为图6中步骤601的详细流程图;图7为本申请实施例提供的多索引数据库处理方法一实施例的流程图;图8为本申请实施例提供的数据库一实施例的结构图;图9为本申请实施例提供的数据库另一实施例的结构图。【具体实施方式】下面通过附图和实施例,对本申请的技术方案做进一步的详细描述。数据库常常包含大量的数据,为了提高查询效率,数据库需要对一些字段建立索弓丨,这样按条件查询的时候,可以先查询索引并通过索引找到相关的数据。数据库索引有几种类型,例如顺序索引、散列索引和位图索引等。顺序索引可以同时支持范围查询和单项查询,针对一组字段,数据库常常只建立一种索引。但是,由于散列索引和位图索引等通常都难以实现范围查询,因此已有的数据库通常使用顺序索引,例如基于B/B+树的顺序索引。单一索引对某一部分请求可能很高效,对另一部分请求不太高效。例如,顺序索引对于实现范围查询比较高效,对随机查询则不太高效:假设索引针对的字段个数是K,数据库表的行数是N,那么通过顺序索引查询单个项所需要的比较次数大约是K*log(N),例如,当K=l,N=IO6时,比较的次数大约是l*log(N)=20,当K=5,N=IO9时,比较的次数大约是5*log(N) =150,因此使用顺序索引进行随机查询所需要的比较次数较多并且随着数据库表的条数的增加而增加。反之,散列索引由于需要遍历整个表因此对范围查询很低效,但对单项的随机查询比较高效,所需的比较次数常常只是略大于K并且与数据库表的条数基本无关,当K=1,N=106以及当K=5,N=109时,单个项的随机查询所需的比较次数略大于I和5,低于顺序索引时所需要的20和150次。本申请通过对数据库一组字段同时建立两种或者两种以上的索引,例如顺序索引和散列索引。其中一种索引用来进行一类查询,另一种索引用来进行另一类查询。例如以顺序索引)进行范围查询,而以散列索引进行单项查询。使用不同的索引进行不同类型的查询可以进一步提高查询速度,例如针对单项查询,散列索引通常只需要一次比较运算即可定位到目标行,提升了数据的读写事务的性能。但是,维护双索引的技术难度主要在于本文档来自技高网
...
多索引数据库事务处理方法及数据库

【技术保护点】
一种多索引数据库事务处理方法,其特征在于,所述数据库包含至少一行数据,所述多索引指向所述行数据中的至少一列数据,所述方法包括:生成全局有序的最新事务版本号;以所述最新事务版本号为标记,对所述数据库进行写事务处理,并更新所述写事务处理后所述数据库中的数据对应的多个索引;提交所述写事务处理数据,将所述数据库的全局事务版本号更新为当前最新事务版本号。

【技术特征摘要】

【专利技术属性】
技术研发人员:阳振坤李凯杨传辉陈俊全
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1