一种数据库多索引方法、装置及系统的制作方法

文档序号:9727327阅读:359来源:国知局
一种数据库多索引方法、装置及系统的制作方法【
技术领域
】[0001]本发明涉及数据库
技术领域
,尤其涉及一种数据库多索引方法、装置及系统。【
背景技术
】[0002]随着互联网应用的广泛普及,数据规模不断扩大,数据库中的表越来越多,表中的数据量也越来越大,相应地,数据操作(例如增、删、改、查)的开销也越来越大,而一台服务器的资源(CPU、磁盘和内存等)是有限的,最终数据库所能承载的数据量和数据处理能力都将遭遇瓶颈。为解决上述问题,引入分库分表机制,对数据进行拆分,将数据分布存储在不同的数据库或者不同的数据表中,降低单点服务器的承载和处理压力,提高了数据操作的效率。[0003]分库分表是通过一系列的分库分表规则将数据分布到不同的DB(数据库)或者table(表)中。通过与分库分表规则相应的DB路由或者table路由规则可以找到需要查询的具体的DB或者table。例如,以数据库的字段userid(用户id)作为indexkey(索引关键字,亦称之为区分字段或者分库的标记字段),即分库的依据和规则的基础,将userid为1~50000的所有用户个人信息放入DB1中的多个userinfo表中,将userid为50001~100000的所有用户个人信息放入DB2中的多个userinfo表中,以此类推;相应地,如果userid是1234,利用前述的规则,则应该定位到DB1,如果userid是54321,则应该定位到DB2,以此类推。其中,indexkey存储于index(索引)表中。[0004]上述举例中,以userid为indexkey,即按照用户维度分表,由于用户的个人信息(例如性别、电话号码、email等)都保存的同一个表中,所以可以很快很方便地查找某个用户的个人信息,但由于email信息很有可能分布在多张表中,如果要查找email被注册的情况则很麻烦。常用的处理方式,是记录两份数据,一份按照用户维度分库分表,一份按照email维度分库分表。也就是说,当需要增加indexkey以方便数据查找时,数据规模也需要扩充,特别是当indexkey很多时,数据规模将会很庞大,而且相应地逻辑库、物理部署和应用层逻辑等都需要调整,工作量也将非常巨大。【
发明内容】[0005]为克服相关技术中分库分表后增加indexkey导致数据规模和工作量大的问题,本申请提供一种数据库多索引方法和系统。[0006]根据本申请实施例的第一方面,提供一种数据库多索引方法,包括:[0007]建立关联索引表,所述关联索引表用于存储数据中主索引关键字值和新索引关键字值的对应关系;[0008]根据数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表;[0009]当根据新索引关键字进行查询时,根据新索引关键字值和关联索引表查找到对应的主索引关键字值;[0010]根据所述查找到的对应的主索引关键字值路由到数据表,并获取对应的数据。[0011]可选的,在根据数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表之前,还包括:[0012]根据被处理数据的主索引关键字,确定被处理数据所在的分库;[0013]在所述数据被存入的数据库中插入所述数据处理副本记录。[0014]可选的,所述数据处理副本记录用于记录待处理状态的数据处理,数据处理副本记录每记录一条待处理的数据,对数据处理副本记录中数据所在的行加锁。[0015]可选的,定时插入数据处理副本记录,当数据处理副本记录中的操作都成功时,根据数据处理记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表。[0016]可选的,所述的数据库多索引方法,还包括:[0017]为所述关联索引表设置版本标志;[0018]在数据处理副本记录中设置更新成功标志,且所述更新成功标志大于所述关联索引表当前的版本标志,其中,每个数据处理副本记录的更新成功标志不同,且按数据处理副本记录中的操作成功的时间顺序递增;[0019]当根据所述数据处理副本记录更新所述关联索引表成功时,设置所述版本标志等于所述数据处理副本的更新成功标志。[0020]可选的,所述的数据库多索引方法,在根据数据处理副本记录中根据主索引关键字值和新索引关键字值的对应关系更新所述关联索引表之后,还包括:[0021]在所述关联索引表更新成功后,删除所述数据处理副本记录。[0022]根据本申请实施例的第二方面,提供一种数据库多索引装置,包括:[0023]关联所以表建立模块,用于建立关联索引表,所述关联索引表用于存储数据中主索引关键字值和新索引关键字值的对应关系;[0024]关联索引表更新模块,用于根据数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表;[0025]查询映射模块,用于当根据新索引关键字进行查询时,根据新索引关键字值和关联索引表查找到对应的主索引关键字值;[0026]查询模块,用于根据所述查找到的对应的主索引关键字值路由到数据表,并获取对应的数据。[0027]可选的,所述的数据库多索引装置,还包括:[0028]分库确定模块,用于根据被处理数据的主索引关键字,确定被处理数据所在的分库;[0029]副本记录插入模块,用于在所述数据被存入的数据库中插入数据处理副本记录。[0030]可选的,所述数据处理副本记录用于记录待处理状态的数据处理,所述副本记录插入模块,包括:[0031]行锁定模块,用于数据处理副本记录每记录一条待处理的数据后,对数据处理副本记录中数据所在的行加锁;[0032]插入模块,用于在数据被存入的数据库中插入数据处理副本记录。[0033]可选的,所述副本记录插入模块定时插入数据处理副本记录。[0034]可选的,所述的数据库多索引装置,还包括:[0035]操作判断模块,用于判断数据处理副本记录中的操作是否都成功;[0036]当数据处理副本记录中的操作都成功时,所述关联索引表更新模块根据数据处理记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表。[0037]可选的,所述的数据库多索引装置,还包括:[0038]关联索引表版本设置模块,用于为所述关联索引表设置版本标志;[0039]更新成功标志设置模块,用于在数据处理副本记录中设置更新成功标志,且所述更新成功标志大于所述关联索引表当前的版本标志,其中,每个数据处理副本记录的更新成功标志不同,且按数据处理副本记录中的操作成功的时间顺序递增;[0040]版本标志更新模块,用于当根据所述数据处理副本记录更新所述关联索引表成功时,设置所述版本标志等于所述数据处理副本的更新成功标志。[0041]可选的,所述的数据库多索引装置,还包括:[0042]副本记录删除模块,用于在所述关联索引表更新成功后,删除所述数据处理副本记录。[0043]根据本申请实施例的第三方面,提供了一种包含上述数据库多索引装置的数据库多索引系统。[0044]本申请实施例提供的技术方案可以包括以下有益效果:通过建立关联索引表,使用关联索引表存储新索引关键字与主索引关键字的对应关系,当使用新索引关键字作为主索引关键字进行查询时,根据新索引关键字在关联索引表中查找到对应的主索引关键字,根据对应的主索引关键字路由到分库分表,完成数据的查询。从而在需要使用新索引关键字进行查询时,不需使用新索引关键字进行分库分表而重新记录一份数据,只需建立并更新关联索引表便可实现,大大降低了数据规模和工作量。[0045]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。【附图说明】[0046]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。[0047]图1为本申请一示例性实施例示出的一种数据库多索引方法的流程示意图。[0048]图2为本申请另一示例性实施例示出的一种数据库多索引方法的流程示意图。[0049]图3为本申请又一示例性实施例示出的一种数据库多索引方法的流程示意图。[0050]图4为本申请一示例当前第1页1 2 3 4 
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1