数据库表索引的实现方法和装置制造方法及图纸

技术编号:15690922 阅读:72 留言:0更新日期:2017-06-24 03:42
本申请提供一种数据库表索引的实现方法,所述数据库表包括至少一个用来建立索引的摘要列,每个摘要列对应于一个数据库表中的引用列,所述方法包括:获取数据库表中摘要列和引用列的对应关系;当在数据库表中新增记录时,在该记录中与引用列对应的摘要列保存该引用列值的摘要值;当对数据库表的操作以引用列及其列值为条件时,将条件中的引用列替换为对应的摘要列,将条件中的引用列值替换为所述引用列值的摘要值后,进行该操作。通过本申请的技术方案,即使引用列的长度超过最大索引长度,也能够建立索引来加快数据操作速度,并且不会因限制列长度损失业务数据的完整性,在建立的索引为唯一性索引时还能够避免数据库表中出现重复的记录。

Method and device for implementing database table index

The invention provides a method for realizing the database table index, the database table includes at least one abstract used to create the index columns, each column corresponds to the column in a database table, the method comprises: obtaining a database table column and column of the relationship; when a new record in the database table, the record included in the corresponding abstract and reference column holds the reference value of the column value; when the database table to column and column values for the reference conditions, conditions in the column to replace the corresponding summary column, will refer to conditions in the column value is replaced by the column value of the abstract value, to carry out the operation. Through the technical scheme of the application, even if the column length exceeds the maximum length of the index, it is possible to establish the index to accelerate the speed of operation and data integrity, not due to loss of business data column length limit, in the establishment of the index as the only index also can avoid the database table in duplicate records.

【技术实现步骤摘要】
数据库表索引的实现方法和装置
本申请涉及数据处理
,尤其涉及一种数据库表索引的实现方法和装置。
技术介绍
随着技术的发展,各种网络应用日渐深入人们的生活。这些应用的业务系统需要使用和管理日益增加的各种业务数据,来完成其业务过程。业务数据通常以表的结构存放在数据库中,为了加快对表中数据的访问速度,可以在数据库表中建立索引。索引是对数据库表中一列或多列的值进行排序的一种结构,采用索引查找表中的记录(行)能够基于特定的算法来进行,而不必进行全表扫描,有助于更快的获取信息。唯一性索引还可以用来确保索引列不包含重复的值,例如多列唯一性索引可以确保索引列中每个值组合都是唯一的。一些中小型的数据库对索引的长度做出了限制,例如,MySQL(一种关系型数据库管理系统)数据库中,采用MyISAM存储引擎的表的最大索引长度是1000字节,采用InnoDB存储引擎的表的最大索引长度是3072字节。而很多业务系统的数据库表中包括长度超过最大索引长度的列,例如用来保存KV(Key-Value,键-值)结构或JSON(JavaScriptObjectNotation,JavaScript对象表示法)序列化字符串的列。现有技术中,对具有索引长度限制的数据库表,只能对长度不超过最大索引长度的列建立索引。当用来建立索引的列可能超过最大索引长度时,只能对该列的值进行限制,这样会造成业务信息的损失,在一些情况下甚至难以满足业务上的要求;如果不损失业务信息,就只能接受查询速度下降,业务响应迟滞的结果;对需要以超过最大索引长度的列来建立唯一性索引的应用场景,无法建立索引造成多条相同的记录保存在数据库表中。
技术实现思路
有鉴于此,本申请提供一种数据库表索引的实现方法,所述数据库表包括至少一个用来建立索引的摘要列,每个摘要列对应于一个所述数据库表中的引用列,所述方法包括:获取所述数据库表中摘要列和引用列的对应关系;当在所述数据库表中新增记录时,在所述记录中与引用列对应的摘要列保存所述引用列值的摘要值;当对所述数据库表的操作以引用列及其列值为条件时,将条件中的引用列替换为对应的摘要列,将条件中的引用列值替换为所述引用列值的摘要值后,进行所述操作。本申请还提供了一种数据库表索引的实现装置,所述数据库表包括至少一个用来建立索引的摘要列,每个摘要列对应于一个所述数据库表中的引用列,所述装置包括:对应关系获取单元,用于获取所述数据库表中摘要列和引用列的对应关系;新增记录处理单元,用于当在所述数据库表中新增记录时,在所述记录中与引用列对应的摘要列保存所述引用列值的摘要值;条件操作处理单元,用于当对所述数据库表的操作以引用列及其列值为条件时,将条件中的引用列替换为对应的摘要列,将条件中的引用列值替换为所述引用列值的摘要值后,进行所述操作。由以上技术方案可见,本申请的实施例中,在数据库表中增加对应于引用列的摘要列,用来保存引用列值的摘要值,采用摘要列来生成索引,并在对数据库表进行以引用列及其列值为条件的操作时,将其替换为以对应的摘要列及其列值为条件,这样即使引用列的长度超过最大索引长度,也能够建立索引来加快数据操作速度和业务响应速度,并且不会因限制列长度损失业务数据的完整性,在建立的索引为唯一性索引时还能够避免数据库表中出现重复的记录。附图说明图1是业务系统访问数据库的第一种方式的网络结构示意图;图2是业务系统访问数据库的第二种方式的网络结构示意图;图3是本申请实施例中一种数据库表索引的实现方法的流程图;图4是运行本申请实施例的设备的一种硬件结构图;图5是本申请实施例中一种数据库表索引的实现装置的逻辑结构图。具体实施方式本申请的实施例提出一种新的数据库表索引的实现方法,对列长度可能超过最大索引长度的引用列,在数据库表中增加对应的摘要列,以引用列值的摘要值作为摘要列的值,采用摘要列而非引用列即可建立满足长度限制条件的索引,不仅能够通过该索引提升对表数据的操作速度,而且无需缩减引用列中的业务数据,从而解决现有技术中的问题。业务系统通常通过两种方式来对数据库进行访问,第一种方式如图1所示,业务系统通过数据库中间件来对数据库表进行操作,添加、删除、更新、查询其中的业务数据;第二种方式如图2所示,业务系统直接访问数据库,在这种方式中,通常业务系统的实现包括业务逻辑层和数据访问层,其中业务逻辑层用来实现业务过程,并通过数据访问层来操作数据库表。在第一种方式中,本申请的实施例应用在数据库中间件上,业务系统无需更改现有的对数据库表的操作;在第二种方式中,本申请的实施例应用在数据访问层,类似的,业务逻辑层无需修改现有实现即可完成对数据库表的操作。根据实际应用中业务系统和数据库的具体实现,本申请的实施例也可以应用在其他具有数据库访问控制功能的逻辑单位、服务或系统中,不做限定。以下将应用本申请实施例的逻辑单位、服务或系统统称为访问控制功能模块,将通过访问控制功能模块进行数据库表操作的逻辑单位、服务或系统统称为业务功能模块。本申请的实施例可以运行在任何具有计算和存储能力的设备上,例如可以是手机、平板电脑、PC(PersonalComputer,个人电脑)、笔记本、服务器、虚拟机等物理设备或逻辑设备;也可以由两个或两个以上分担不同职责的物理或逻辑设备、相互协同来实现本申请实施例中的各项功能。本申请的实施例中,将数据库表中列长度可能超过索引最大长度、并且在业务过程中需要根据列值查询数据库表记录的列作为引用列,还可以根据实际场景的具体情况将数据库表中其他会用来查询记录的列作为引用列。一个数据库表中可以有一个到多个引用列。在确定引用列后,在数据库表中为每个引用列增加一个对应的摘要列,摘要列用来存储对应的引用列的摘要值,即:每个数据库表记录的摘要列值为该记录对应的引用列值的摘要值,其中,摘要值是将引用列值输入预定的摘要算法后得到的结果。本申请实施例对摘要算法的选择不做限定,例如,各种版本的CRC(CyclicRedundancyCheck,循环冗余校验)、MD(Message-DigestAlgorithm,消息摘要算法)、SHA(SecureHashAlgorithm,安全哈希算法)等。当有超过一个的摘要列用来生成多列索引、或某个摘要列与其他列用来生成多列索引时,要选择使用于生成某个索引的所有摘要列和其他列的列长度总和小于所在数据库表最大索引长度的摘要算法。摘要算法用来根据一定的运算规则对输入数据进行某种形式的提取,提出的内容即为摘要数据,摘要数据与输入数据有密切联系,只要输入数据稍有改变,摘要数据便完全不同。这样,以引用列值查询数据库表,和以引用列值的摘要值查询数据库表,在数据库表的容量范围内基本可以得到完全相同的查询结果,因此,可以用摘要列替代对应的引用列来建立索引,以引用列值的摘要值来使用索引,从而避免因列长度超过索引长度限制而导致数据库访问速度下降。需要说明的是,在数据库表中增加的摘要列可以对业务功能模块不可见,换言之,业务功能模块只要按照现有的方式进行数据库表中业务数据的操作即可,而无需了解数据库表中是否有摘要列、以及是否需要使用由摘要列建立的索引。访问控制功能模块可以参照现有技术来在数据库表中添加摘要列,并给基于包括摘要列在内的一个到多个列建立索引(也可以由人工完成本文档来自技高网
...
数据库表索引的实现方法和装置

【技术保护点】
一种数据库表索引的实现方法,其特征在于,所述数据库表包括至少一个用来建立索引的摘要列,每个摘要列对应于一个所述数据库表中的引用列,所述方法包括:获取所述数据库表中摘要列和引用列的对应关系;当在所述数据库表中新增记录时,在所述记录中与引用列对应的摘要列保存所述引用列值的摘要值;当对所述数据库表的操作以引用列及其列值为条件时,将条件中的引用列替换为对应的摘要列,将条件中的引用列值替换为所述引用列值的摘要值后,进行所述操作。

【技术特征摘要】
1.一种数据库表索引的实现方法,其特征在于,所述数据库表包括至少一个用来建立索引的摘要列,每个摘要列对应于一个所述数据库表中的引用列,所述方法包括:获取所述数据库表中摘要列和引用列的对应关系;当在所述数据库表中新增记录时,在所述记录中与引用列对应的摘要列保存所述引用列值的摘要值;当对所述数据库表的操作以引用列及其列值为条件时,将条件中的引用列替换为对应的摘要列,将条件中的引用列值替换为所述引用列值的摘要值后,进行所述操作。2.根据权利要求1所述的方法,其特征在于,所述获取数据库表中摘要列和引用列的对应关系,包括:按照预定的摘要列发现规则,在所述数据库表的元数据中发现摘要列与引用列的对应关系。3.根据权利要求2所述的方法,其特征在于,所述摘要列发现规则包括:摘要列的列名中包括预定摘要列标志和所对应的引用列列名,并被数据库表的索引引用;摘要列的注释中包括预定摘要列标志和所对应的引用列列名,并被数据库表的索引引用;或,引用列的注释中包括预定引用列标志和所对应的摘要列列名,并被数据库表的索引引用。4.根据权利要求1所述的方法,其特征在于,所述获取数据库表中摘要列和引用列的对应关系,包括:读取预定的配置文件,所述配置文件中保存有所述数据库表中摘要列和引用列的对应关系。5.根据权利要求1所述的方法,其特征在于,所述当在数据库表中新增记录时,在所述记录中与引用列对应的摘要列保存所述引用列值的摘要值,包括:修改插入记录指令,在插入记录指令中增加摘要列并以所述摘要列对应的引用列值的摘要值作为其摘要列值,执行修改后的插入记录指令;或,执行插入记录指令在数据库表中插入新增记录,生成并执行对所述新增记录的更新指令,将所述新增记录的摘要列值更新为与所述摘要列对应的引用列值的摘要值。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:当修改所述数据库表中记录的引用列值时,将所述记录中与所述引用列对应的摘要列值更新为修改后引用列值的摘要值。7.根据权利要求6所述的方法,其特征在于,当修改所述数据库表中记录的引用列值时,将所述记录中与所述引用列对应的摘要列值更新为修改后引用列值的摘要值,包括:修改对所述记录的更新指令,在更新指令中增加与要修改列值的引用列对应的摘要列,并以修改后引用列值的摘要值作为其摘要列值,执行修改后的更新指令;或,执行对所述记录的更新指令,对所述记录的引用列值进行修改,生成并执行对所述记录的更新指令,将所述记录中与被修改列值的引用列对应的摘要列值更新为修改后引用列值的摘要值。8.根据权利要求1所述的方法,其特征在于,所述对数据库表的操作以引用列及其列值为条件,包括:对所述数据库表的查询指令、删除指令或更新指令的条件中包括引用列及其列值。9.根据权利要求1所述的方法,其特征在于,所述摘要值采用循环冗余检验CRC、消息摘要法MD...

【专利技术属性】
技术研发人员:李伟
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1