CN105488050B - 一种数据库多索引方法、装置及系统 - Google Patents

一种数据库多索引方法、装置及系统 Download PDF

Info

Publication number
CN105488050B
CN105488050B CN201410475100.XA CN201410475100A CN105488050B CN 105488050 B CN105488050 B CN 105488050B CN 201410475100 A CN201410475100 A CN 201410475100A CN 105488050 B CN105488050 B CN 105488050B
Authority
CN
China
Prior art keywords
data processing
data
record
processing copy
association
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.)
Active
Application number
CN201410475100.XA
Other languages
English (en)
Other versions
CN105488050A (zh
Inventor
于君泽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201410475100.XA priority Critical patent/CN105488050B/zh
Publication of CN105488050A publication Critical patent/CN105488050A/zh
Application granted granted Critical
Publication of CN105488050B publication Critical patent/CN105488050B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种数据库多索引方法、装置及系统。通过建立关联索引表,使用关联索引表存储新索引关键字与主索引关键字的对应关系,当使用新索引关键字作为主索引关键字进行查询时,根据新索引关键字在关联索引表中查找到对应的主索引关键字,根据对应的主索引关键字路由到分库分表,完成数据的查询。通过使用关联索引表来代替使用新索引关键字进行分库分表,从而避免重新记录一份或多份数据,大大降低了数据规模和工作量。

Description

一种数据库多索引方法、装置及系统
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库多索引方法、装置及系统。
背景技术
随着互联网应用的广泛普及,数据规模不断扩大,数据库中的表越来越多,表中的数据量也越来越大,相应地,数据操作(例如增、删、改、查)的开销也越来越大,而一台服务器的资源(CPU、磁盘和内存等)是有限的,最终数据库所能承载的数据量和数据处理能力都将遭遇瓶颈。为解决上述问题,引入分库分表机制,对数据进行拆分,将数据分布存储在不同的数据库或者不同的数据表中,降低单点服务器的承载和处理压力,提高了数据操作的效率。
分库分表是通过一系列的分库分表规则将数据分布到不同的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(索引)表中。
上述举例中,以userid为indexkey,即按照用户维度分表,由于用户的个人信息(例如性别、电话号码、email等)都保存的同一个表中,所以可以很快很方便地查找某个用户的个人信息,但由于email信息很有可能分布在多张表中,如果要查找email被注册的情况则很麻烦。常用的处理方式,是记录两份数据,一份按照用户维度分库分表,一份按照email维度分库分表。也就是说,当需要增加indexkey以方便数据查找时,数据规模也需要扩充,特别是当indexkey很多时,数据规模将会很庞大,而且相应地逻辑库、物理部署和应用层逻辑等都需要调整,工作量也将非常巨大。
发明内容
为克服相关技术中分库分表后增加indexkey导致数据规模和工作量大的问题,本申请提供一种数据库多索引方法和系统。
根据本申请实施例的第一方面,提供一种数据库多索引方法,包括:
建立关联索引表,所述关联索引表用于存储数据中主索引关键字值和新索引关键字值的对应关系;
根据数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表;
当根据新索引关键字进行查询时,根据新索引关键字值和关联索引表查找到对应的主索引关键字值;
根据所述查找到的对应的主索引关键字值路由到数据表,并获取对应的数据。
可选的,在根据数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表之前,还包括:
根据被处理数据的主索引关键字,确定被处理数据所在的分库;
在所述数据被存入的数据库中插入所述数据处理副本记录。
可选的,所述数据处理副本记录用于记录待处理状态的数据处理,数据处理副本记录每记录一条待处理的数据,对数据处理副本记录中数据所在的行加锁。
可选的,定时插入数据处理副本记录,当数据处理副本记录中的操作都成功时,根据数据处理记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表。
可选的,所述的数据库多索引方法,还包括:
为所述关联索引表设置版本标志;
在数据处理副本记录中设置更新成功标志,且所述更新成功标志大于所述关联索引表当前的版本标志,其中,每个数据处理副本记录的更新成功标志不同,且按数据处理副本记录中的操作成功的时间顺序递增;
当根据所述数据处理副本记录更新所述关联索引表成功时,设置所述版本标志等于所述数据处理副本的更新成功标志。
可选的,所述的数据库多索引方法,在根据数据处理副本记录中根据主索引关键字值和新索引关键字值的对应关系更新所述关联索引表之后,还包括:
在所述关联索引表更新成功后,删除所述数据处理副本记录。
根据本申请实施例的第二方面,提供一种数据库多索引装置,包括:
关联所以表建立模块,用于建立关联索引表,所述关联索引表用于存储数据中主索引关键字值和新索引关键字值的对应关系;
关联索引表更新模块,用于根据数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表;
查询映射模块,用于当根据新索引关键字进行查询时,根据新索引关键字值和关联索引表查找到对应的主索引关键字值;
查询模块,用于根据所述查找到的对应的主索引关键字值路由到数据表,并获取对应的数据。
可选的,所述的数据库多索引装置,还包括:
分库确定模块,用于根据被处理数据的主索引关键字,确定被处理数据所在的分库;
副本记录插入模块,用于在所述数据被存入的数据库中插入数据处理副本记录。
可选的,所述数据处理副本记录用于记录待处理状态的数据处理,所述副本记录插入模块,包括:
行锁定模块,用于数据处理副本记录每记录一条待处理的数据后,对数据处理副本记录中数据所在的行加锁;
插入模块,用于在数据被存入的数据库中插入数据处理副本记录。
可选的,所述副本记录插入模块定时插入数据处理副本记录。
可选的,所述的数据库多索引装置,还包括:
操作判断模块,用于判断数据处理副本记录中的操作是否都成功;
当数据处理副本记录中的操作都成功时,所述关联索引表更新模块根据数据处理记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表。
可选的,所述的数据库多索引装置,还包括:
关联索引表版本设置模块,用于为所述关联索引表设置版本标志;
更新成功标志设置模块,用于在数据处理副本记录中设置更新成功标志,且所述更新成功标志大于所述关联索引表当前的版本标志,其中,每个数据处理副本记录的更新成功标志不同,且按数据处理副本记录中的操作成功的时间顺序递增;
版本标志更新模块,用于当根据所述数据处理副本记录更新所述关联索引表成功时,设置所述版本标志等于所述数据处理副本的更新成功标志。
可选的,所述的数据库多索引装置,还包括:
副本记录删除模块,用于在所述关联索引表更新成功后,删除所述数据处理副本记录。
根据本申请实施例的第三方面,提供了一种包含上述数据库多索引装置的数据库多索引系统。
本申请实施例提供的技术方案可以包括以下有益效果:通过建立关联索引表,使用关联索引表存储新索引关键字与主索引关键字的对应关系,当使用新索引关键字作为主索引关键字进行查询时,根据新索引关键字在关联索引表中查找到对应的主索引关键字,根据对应的主索引关键字路由到分库分表,完成数据的查询。从而在需要使用新索引关键字进行查询时,不需使用新索引关键字进行分库分表而重新记录一份数据,只需建立并更新关联索引表便可实现,大大降低了数据规模和工作量。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一示例性实施例示出的一种数据库多索引方法的流程示意图。
图2为本申请另一示例性实施例示出的一种数据库多索引方法的流程示意图。
图3为本申请又一示例性实施例示出的一种数据库多索引方法的流程示意图。
图4为本申请一示例性实施例示出的一种数据库多索引装置的框图。
图5为本申请另一示例性实施例示出的一种数据库多索引装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
为了全面理解本申请,在以下详细描述中提到了众多具体的细节,但是本领域技术人员应该理解,本申请可以无需这些具体细节而实现。在其他实施例中,不详细描述公知的方法、过程、组件和电路,以免不必要地导致实施例模糊。
图1为本申请一示例性实施例示出的一种数据库多索引方法的流程示意图。如图1所示,所述方法包括:
步骤S101,建立关联索引表,所述关联索引表用于存储数据中主索引关键字值和新索引关键字值的对应关系。
步骤S102,根据数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表。
其中,对于数据库已有的数据可以使用数据库索引生成功能来生成关联索引表。例如,以userinfo表(用户个人信息表)按字段userid作为indexkey分库,userinfo表中包括用户的手机、地址、email等信息,userinfo表的结构如表1所示:
表1
ColunmeName userid username sex email Tel. cardnumber address
是否查询
通常为使主索引关键字userid方便索引,会使用hash(哈希)算法将userid转成一串数字。当希望将其他表中字段作为新的主索引关键字(称之为新索引关键字)时,为方便主索引字关键字和新索引关键字的对应,以及方便索引,亦可使用hash算法将新索引关键字的值转换为数字值。例如,希望以userinfo表中的email字段作为新索引关键字,则将email字段值使用hash算法转换为数字,并在关联索引表中,将userid哈希值和email哈希值一一对应。也可以不使用email的哈希值,而将email字符串直接和ueserid哈希值对应,关联索引表可以如表2所示。
email userid
rose@163.com 2088123331223
peony@126.com 2174573383058
…… ……
关联索引表中可以只包括一个新索引关键字和主索引关键字的对应关系,也就是说,对每个新索引关键字都建立一个关联索引表。也可以将所有新索引关键字和主索引关键字的对应关系包括在一个关联索引表中。
关联索引表建立后,当发生数据处理操作引起数据表变化时,需要更新所述关联索引表,所述数据处理包括写入新数据和删除了原有数据。当发生数据处理操作时,为完成关联索引表的更新,捞取数据库系统中的待处理状态的数据生成数据处理副本记录,数据处理副本记录的生成过程与数据库其他副本记录的生成过程相同,其中,数据处理副本记录每记录一条待处理的数据,对数据处理副本记录中数据所在的行加锁,以免出现重复捞取。当数据处理副本记录可以根据数据写入和删除的规律来选择定时生成、或者由数据写入或数据删除操作触发,当由数据写入或删除时,即生成数据处理副本记录。由于一般数据库建立后,而且数据写入和删除通常是批量进行,因此不需根据每个数据的写入和删除来触发生成数据处理副本记录,而是可以根据数据写入和删除的频率,定时捞取待处理状态的批量数据生成数据处理副本记录,避免频繁地生成数据处理副本记录,占据系统处理资源。
生成数据处理副本记录后,将数据处理副本记录标记为待处理状态,根据被处理数据的主索引关键字,确定被处理数据所在的分库,在被处理数据对应的分库插入对应的数据处理副本记录。如果生成的待处理状态的数据处理副本记录中的数据属于不同的分库,则将生成的待处理状态的数据处理副本记录根据不同分库划分,分别插入到对应的分库中。
当数据处理副本记录中的操作都成功时,可以将数据处理副本记录标记为待更新状态,并根据数据处理副本记录中数据的主索引关键字值和新索引关键字值更新关联索引表。所述更新包括在关键索引表中增加新的主索引关键字值和新索引关键字值的对应关系,以及删除原有的主索引关键字值和新索引关键字值的对应关系。当根据数据处理副本记录更新关联索引表成功后,可以将数据处理副本记录标记为成功状态。通常查询数据处理副本记录的状态是否为成功状态来判断该数据处理副本记录是否已用于更新关联索引表,以及根据该数据处理副本记录更新关联索引表是否已成功。
其中,根据数据处理副本记录更新关联索引表,可以避免根据数据表的变化来更新关联索引表带来的工作量大、效率低的问题。在被处理数据所在的分库中插入数据处理副本记录,有助于数据处理操作和数据处理副本记录状态的一致。所述数据处理副本记录也可以位于生成数据处理副本记录的数据库,而不插入被处理数据所在的分库,但由于被处理数据和相应的操作,与数据处理副本记录不同库,较难保持数据处理操作和数据处理副本记录状态的一致。
当根据数据处理副本记录更新完关联索引表且成功后,可以删除所述数据处理副本记录,以节省数据库空间。可以通过查询数据处理副本记录的状态是否为成功状态来判断是否根据数据处理副本记录更新关联索引表成功。
步骤S103,当根据新索引关键字进行查询时,根据新索引关键字值和关联索引表查找到对应的主索引关键字值。
步骤S104,根据所述查找到的对应的主索引关键字值路由到数据表,并获取对应的数据。
其中,当查询时,查询条件以新索引关键字替代主索引关键字时,根据查询条件中的新索引关键字值在关联索引表中查找到对应的主索引关键字值。如果关联索引表中使用新索引关键字的哈希值与主索引关键字的哈希值对应,则将查询条件中的新索引关键字值转换为哈希值,然后根据新索引关键字的哈希值查找到对应的主索引关键字的哈希值,如果分库规则是根据主索引关键字的哈希值分库的,则根据查找到的对应的主索引关键字的哈希值路由到分库中的数据表,如果分库规则是主索引关键字的原始值分库的,则将查找到的对应的主索引关键字的哈希值转换为主索引关键字的原始值,根据转换得到的主索引关键字的原始值路由到分库的数据表。路由到分库的数据表后,获取与查询条件对应的数据。
图2为本申请另一示例性实施例示出的一种数据库多索引方法的流程示意图。如图2所示,所述方法包括:
步骤S201,建立关联索引表,并设置关联索引表版本标志,所述关联索引表用于存储数据中主索引关键字值和新索引关键字值的对应关系。
步骤S202,捞取数据库系统中的待处理状态的数据生成数据处理副本记录。
步骤S203,根据被处理数据的主索引关键字,确定被处理数据所在的分库,在被处理数据对应的分库插入对应的数据处理副本记录。
步骤S204,在所述数据处理副本记录中设置更新成功标志,所述更新成功标志的值大于当前关联索引表版本标志的值,其中,每个数据处理副本记录的更新成功标志不同,且按数据处理副本记录中的操作成功的时间顺序递增。
步骤S205,当所述数据处理副本记录中的操作都成功时,比较所述所述数据处理副本记录的更新成功标志和关联索引表版本标志,判断所述操作成功标志是否大于所述版本标志。
步骤S206,如果所述操作成功标志大于关联索引表版本标志,根据所述数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表。
步骤S207,当所述关联索引表更新成功时,设置关联索引表版本标志的值等于所述数据处理副本记录的更新成功标志的值。
其中,由于被处理的数据可能位于多个分库,为使被处理的数据和相应的操作,与对应的数据处理副本记录一致,生成的数据处理副本记录可能也会相应地进行划分后位于多个库中,如果数据处理副本记录与关联索引表不同库,那么将难以实现相应的数据库事务的一致性,相应的数据库事务难以回滚,当关联索引表更新失败时,更新事务难以回滚会造成关联索引表无法正确完成更新。通过为关联索引表设置版本标志,以及为数据处理副本记录设置更新成功标志,且设置所述更新成功标志时,是使所述更新成功标志的值大于当前关联索引表版本标志的值,由此可以通过比较数据处理副本记录更新成功标志的值和关联索引表版本标志的值,当某个数据处理副本记录更新成本标志大于关联索引表版本标志时,说明关联索引表尚未根据该数据处理副本记录更新或者更新失败,此时可以根据该数据处理副本记录更新关联索引表,或者重新根据该数据处理副本记录更新关联索引表,以保证关联索引表正常且正确地更新。
步骤S208,当根据所述数据处理副本记录更新关联索引表成功后,删除所述数据处理副本记录。
步骤S209,当根据新索引关键字进行查询时,根据新索引关键字值和关联索引表查找到对应的主索引关键字值。
步骤S2010,根据所述查找到的对应的主索引关键字值路由到数据表,并获取对应的数据。
其中,步骤S209和步骤S2010分别和步骤S103和步骤S104相同。
图3为本申请另一示例性实施例示出的一种数据库多索引方法的流程示意图。如图3所示,所述方法包括:
步骤S301,建立关联索引表,并设置关联索引表版本标志,所述关联索引表用于存储数据中主索引关键字值和新索引关键字值的对应关系。
步骤S302,捞取数据库系统中的待处理状态的数据生成数据处理副本记录,将数据处理副本记录标记为待处理状态。
步骤S303,根据被处理数据的主索引关键字,确定被处理数据所在的分库,在被处理数据对应的分库插入对应的数据处理副本记录。
步骤S304,在所述数据处理副本记录中设置更新成功标志,所述更新成功标志的值大于当前关联索引表版本标志的值,其中,每个数据处理副本记录的更新成功标志不同,且按数据处理副本记录中的操作成功的时间顺序递增。
步骤S305,当所述数据处理副本记录中的操作都成功时,将数据处理副本记录标记为待更新状态。
步骤S306,当数据处理副本记录状态为待更新状态时,比较所述所述数据处理副本记录的更新成功标志和关联索引表版本标志,判断所述操作成功标志是否大于所述版本标志。
步骤S307,如果所述操作成功标志大于关联索引表版本标志,根据所述数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表。
步骤S308,当所述关联索引表更新成功时,设置关联索引表版本标志的值等于所述数据处理副本记录的更新成功标志的值,将所述数据处理副本记录标记为成功状态。
其中,当所述数据处理副本记录中的操作都成功时,将数据处理副本记录标记为待更新状态,由此可以通过查询数据处理副本记录的状态判断该数据处理副本记录是否可以用于更新关联索引表,亦即当数据处理副本记录为待更新状态时,可以根据该数据处理副本记录更新关联索引表。从而防止将操作没有都成功的数据处理副本记录用于更新关联索引表的误处理,避免关联索引表更新错误。
其中,通过为关联索引表设置版本标志,以及为数据处理副本记录设置更新成功标志,且设置所述更新成功标志时,是使所述更新成功标志的值大于当前关联索引表版本标志的值,由此可以通过比较数据处理副本记录更新成功标志的值和关联索引表版本标志的值,当某个数据处理副本记录更新成本标志大于关联索引表版本标志时,说明关联索引表尚未根据该数据处理副本记录更新或者更新失败,此时可以根据该数据处理副本记录更新关联索引表,或者重新根据该数据处理副本记录更新关联索引表,以保证关联索引表正常且正确地更新。其中,每个数据处理副本记录的更新成功标志不同,且按数据处理副本记录中的操作都成功的时间的时间顺序递增,数据处理副本记录的更新成功标志可以由数据库的sequence表(Sequence表是数据库中存放等差数列的表,该表受数据库系统控制,任何时候数据库系统都可以根据当前记录的大小加上步长来获取到该表下一条记录)管理。如果某个数据处理副本记录由于数据库处理的错误未能及时用于更新关联索引表,而关联索引表根据其他数据处理副本记录更新后版本标志增加,使关联索引表的版本标志大于该数据处理副本记录的更新标志,则可以通过查询该数据处理副本记录的状态是否为成功状态判断该数据处理副本记录是否已用于更新关联索引表及更新关联索引表成功。结合数据处理副本记录的更新成功标志、关联索引表的版本标志以及数据处理副本记录的状态可以充分地保证关联索引表更新正确,避免遗漏数据处理副本记录而未根据其更新关联索引表。
当根据数据处理副本记录更新完关联索引表且成功后,可以删除所述数据处理副本记录,以节省数据库空间。可以通过查询数据处理副本记录的状态是否为成功状态来判断是否已根据数据处理副本记录更新关联索引表成功。
步骤S309,当根据新索引关键字进行查询时,根据新索引关键字值和关联索引表查找到对应的主索引关键字值。
步骤S3010,根据所述查找到的对应的主索引关键字值路由到数据表,并获取对应的数据。
其中,步骤S309和步骤S3010分别和步骤S103和步骤S104相同。
本申请实施例提供的数据库多索引方法,通过建立关联索引表,使用关联索引表存储新索引关键字与主索引关键字的对应关系,当使用新索引关键字作为主索引关键字进行查询时,根据新索引关键字在关联索引表中查找到对应的主索引关键字,根据对应的主索引关键字路由到分库分表,完成数据的查询。从而在需要使用新索引关键字进行查询时,不需使用新索引关键字进行分库分表,重新记录一份数据,只需建立并更新关联索引表便可实现,大大降低了数据规模和工作量。
通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,并存储在一个存储介质中,包括若干指令用以使得一台智能设备执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储数据和程序代码的介质。
图4为本申请一示例性实施例示出的一种数据库多索引装置的框图。如图3所示,在一种可能的实施方式中,所述装置包括:
关联索引表建立模块U401,用于建立关联索引表,所述关联索引表用于存储数据中主索引关键字值和新索引关键字值的对应关系;
关联索引表更新模块U402,与U402连接,用于根据数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表;
查询映射模块U403,与U402连接,用于当根据新索引关键字进行查询时,根据新索引关键字值和关联索引表查找到对应的主索引关键字值;
查询模块U404,与U403连接,用于根据所述查找到的对应的主索引关键字值路由到数据表,并获取对应的数据。
所述的数据库多索引装置,还包括:
数据处理副本记录生成模块,用于根据被处理数据生成数据处理副本记录,所述数据处理副本记录生成模块可以为常用的数据库副本记录生成模块。
图5为本申请另一示例性实施例示出的一种数据库多索引装置的框图。如图4所示,在另一种可能的实施方式中,所述装置包括:
关联索引表建立模块U501,用于建立关联索引表,所述关联索引表用于存储数据中主索引关键字值和新索引关键字值的对应关系;
关联索引表版本设置模块U502,与U501连接,用于为所述关联索引表设置版本标志;
数据处理副本记录生成模块U503,用于根据被处理数据生成数据处理副本记录;
分库确定模块U504,与U503连接,用于根据被处理数据的主索引关键字,确定被处理数据所在的分库;
副本记录插入模块U505,与U503和U504连接,用于在被处理数据所在的分库中插入数据处理副本记录。
更新成功标志设置模块U506,与U505连接,用于在数据处理副本记录中设置更新成功标志,且所述更新成功标志大于所述关联索引表当前的版本标志,其中,每个数据处理副本记录的更新成功标志不同,且按数据处理副本记录中的操作成功的时间顺序递增;
操作判断模块U507,与U505连接,用于判断数据处理副本记录中的操作是否都成功;
比较模块U508,与U507和U5010连接,用于当数据处理副本记录中的操作都成功时,比较所述更新成功标志和所述版本标志的大小;
关联索引表更新模块U509,与U501和U508连接,用于当所述更新成功标志大于所述版本标志时,根据数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表;
版本标志更新模块U5010,与U509连接,用于当所述关联索引表更新成功时,设置所述版本标志等于所述数据处理副本的更新成功标志;
副本记录删除模块U5011,与U5010连接,用于在根据所述数据处理副本记录更新所述关联索引表成功后,删除所述数据处理副本记录。
查询映射模块U5012,与U501连接,用于当根据新索引关键字进行查询时,根据新索引关键字值和关联索引表查找到对应的主索引关键字值;
查询模块U5013,与U5012连接,用于根据所述查找到的对应的主索引关键字值路由到数据表,并获取对应的数据。
其中,在一种可能的实施方式中,所述副本记录插入模块用于定时插入数据处理副本记录。
其中,在一种可能的实施方式中,所述副本记录插入模块,可以包括:
行锁定模块,所述数据处理副本记录用于记录待处理状态的数据处理,数据处理副本记录每记录一条待处理的数据,对数据处理副本记录中数据所在的行加锁;
插入模块,用于在被处理数据所在的分库库中插入数据处理副本记录。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
根据本申请实施例的第三方面,提供一种包含上述数据库多索引装置的数据库多索引系统。所述数据库多索引系统使用所述数据库多索引装置建立关联索引表来实现多个索引关键字的查询,相比常规的多索引数据库系统数据量小且查询快速。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者逆序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种数据库多索引方法,其特征在于,包括:
建立关联索引表,所述关联索引表用于存储数据中主索引关键字值和新索引关键字值的对应关系;
根据被处理数据的主索引关键字,确定被处理数据所在的分库;
在所述数据被存入的数据库中插入数据处理副本记录;
所述数据处理副本记录用于记录待处理状态的数据处理,数据处理副本记录每记录一条待处理的数据,对数据处理副本记录中数据所在的行加锁;
根据数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表;
当根据新索引关键字进行查询时,根据新索引关键字值和关联索引表查找到对应的主索引关键字值;
根据所述查找到的对应的主索引关键字值路由到数据表,并获取对应的数据。
2.如权利要求1所述的数据库多索引方法,其特征在于,定时插入数据处理副本记录,当数据处理副本记录中的操作都成功时,根据数据处理记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表。
3.如权利要求2所述的数据库多索引方法,其特征在于,还包括:
为所述关联索引表设置版本标志;
在数据处理副本记录中设置更新成功标志,且所述更新成功标志大于所述关联索引表当前的版本标志,其中,每个数据处理副本记录的更新成功标志不同,且按数据处理副本记录中的操作成功的时间顺序递增;
当根据所述数据处理副本记录更新所述关联索引表成功时,设置所述版本标志等于所述数据处理副本的更新成功标志。
4.如权利要求2或3所述的数据库多索引方法,其特征在于,在根据数据处理副本记录中根据主索引关键字值和新索引关键字值的对应关系更新所述关联索引表之后,还包括:
在所述关联索引表更新成功后,删除所述数据处理副本记录。
5.一种数据库多索引装置,其特征在于,包括:
关联索引表建立模块,用于建立关联索引表,所述关联索引表用于存储数据中主索引关键字值和新索引关键字值的对应关系;
分库确定模块,用于根据被处理数据的主索引关键字,确定被处理数据所在的分库;
副本记录插入模块,用于在所述数据被存入的数据库中插入数据处理副本记录;所述数据处理副本记录用于记录待处理状态的数据处理,所述副本记录插入模块,包括:
行锁定模块,用于数据处理副本记录每记录一条待处理的数据后,对数据处理副本记录中数据所在的行加锁;
插入模块,用于在数据被存入的数据库中插入数据处理副本记录;
关联索引表更新模块,用于根据数据处理副本记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表;
查询映射模块,用于当根据新索引关键字进行查询时,根据新索引关键字值和关联索引表查找到对应的主索引关键字值;
查询模块,用于根据所述查找到的对应的主索引关键字值路由到数据表,并获取对应的数据。
6.如权利要求5所述的数据库多索引装置,其特征在于,所述副本记录插入模块定时插入数据处理副本记录。
7.如权利要求6所述的数据库多索引装置,其特征在于,还包括:
操作判断模块,用于判断数据处理副本记录中的操作是否都成功;
当数据处理副本记录中的操作都成功时,所述关联索引表更新模块根据数据处理记录中主索引关键字值和新索引关键字值的对应关系更新所述关联索引表。
8.如权利要求7所述的数据库多索引装置,其特征在于,还包括:
关联索引表版本设置模块,用于为所述关联索引表设置版本标志;
更新成功标志设置模块,用于在数据处理副本记录中设置更新成功标志,且所述更新成功标志大于所述关联索引表当前的版本标志,其中,每个数据处理副本记录的更新成功标志不同,且按数据处理副本记录中的操作成功的时间顺序递增;
版本标志更新模块,用于当根据所述数据处理副本记录更新所述关联索引表成功时,设置所述版本标志等于所述数据处理副本的更新成功标志。
9.如权利要求7或8所述的数据库多索引装置,其特征在于,还包括:
副本记录删除模块,用于在所述关联索引表更新成功后,删除所述数据处理副本记录。
10.一种包括权利要求5至9任一项所述数据库多索引装置的数据库多索引系统。
CN201410475100.XA 2014-09-17 2014-09-17 一种数据库多索引方法、装置及系统 Active CN105488050B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410475100.XA CN105488050B (zh) 2014-09-17 2014-09-17 一种数据库多索引方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410475100.XA CN105488050B (zh) 2014-09-17 2014-09-17 一种数据库多索引方法、装置及系统

Publications (2)

Publication Number Publication Date
CN105488050A CN105488050A (zh) 2016-04-13
CN105488050B true CN105488050B (zh) 2019-03-08

Family

ID=55675031

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410475100.XA Active CN105488050B (zh) 2014-09-17 2014-09-17 一种数据库多索引方法、装置及系统

Country Status (1)

Country Link
CN (1) CN105488050B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818115B (zh) * 2016-09-14 2022-04-26 南京星云数字技术有限公司 一种处理数据表的方法及装置
CN107729402A (zh) * 2017-09-22 2018-02-23 努比亚技术有限公司 一种分表方法、装置及计算机可读存储介质
CN108108392B (zh) * 2017-11-23 2020-07-24 北京百度网讯科技有限公司 商品数据管理方法、装置、计算机设备及存储介质
CN110019211A (zh) * 2017-11-27 2019-07-16 北京京东尚科信息技术有限公司 关联索引的方法、装置和系统
CN108009254A (zh) 2017-12-05 2018-05-08 北京百度网讯科技有限公司 多索引方法及装置、云系统以及计算机可读存储介质
CN110147359B (zh) * 2017-12-13 2024-11-05 北京奇虎科技有限公司 一种增量生成方法、装置以及一种数据更新方法、装置
CN108776678B (zh) * 2018-05-29 2020-07-03 阿里巴巴集团控股有限公司 基于移动端NoSQL数据库的索引创建方法及装置
CN109800062B (zh) * 2018-12-25 2020-02-07 星环信息科技(上海)有限公司 一种分布式数据库事务处理系统
CN109918430B (zh) * 2019-01-22 2022-09-23 中国人民解放军战略支援部队信息工程大学 一种5g用户数据去关联存储系统及存取方法
CN109977699B (zh) * 2019-03-26 2022-04-01 贝富(广州)新技术有限公司 基于区块链的房屋产权信息存储方法、系统以及存储介质
CN112506964B (zh) * 2020-11-30 2024-05-28 深圳市移卡科技有限公司 数据查询方法、系统及计算机可读存储介质
CN112817980B (zh) * 2021-02-05 2024-06-11 腾讯科技(深圳)有限公司 一种数据索引处理方法、装置、设备及存储介质
CN113032439A (zh) * 2021-05-20 2021-06-25 广州宸祺出行科技有限公司 一种分库分表结构数据库的查询方法、装置及系统
CN113434613A (zh) * 2021-07-09 2021-09-24 中国银行股份有限公司 关联数据块处理方法及装置
CN113779286B (zh) * 2021-11-11 2022-02-08 支付宝(杭州)信息技术有限公司 管理图数据的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117305A (zh) * 2010-01-06 2011-07-06 中国移动通信集团公司 查询数据的系统、方法和数据管理系统
CN103020204A (zh) * 2012-12-05 2013-04-03 北京普泽天玑数据技术有限公司 一种对分布式顺序表进行多维区间查询的方法及其系统
CN103714090A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 多索引数据库事务处理方法及数据库

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090187599A1 (en) * 2008-01-23 2009-07-23 Bruso Kelsey L Generating identity values in a multi-host database management system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117305A (zh) * 2010-01-06 2011-07-06 中国移动通信集团公司 查询数据的系统、方法和数据管理系统
CN103714090A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 多索引数据库事务处理方法及数据库
CN103020204A (zh) * 2012-12-05 2013-04-03 北京普泽天玑数据技术有限公司 一种对分布式顺序表进行多维区间查询的方法及其系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于多维链表的数据库索引技术研究与实现;李晓东 等;《计算机工程与应用》;20040902;第180-181,193页

Also Published As

Publication number Publication date
CN105488050A (zh) 2016-04-13

Similar Documents

Publication Publication Date Title
CN105488050B (zh) 一种数据库多索引方法、装置及系统
CN110275884B (zh) 数据存储方法及节点
CN111247518B (zh) 用于数据库分片的方法和系统
CN106325933B (zh) 批量数据同步方法和装置
RU2701124C2 (ru) Составные функции разбиения
US20100169326A1 (en) Method, apparatus and computer program product for providing analysis and visualization of content items association
US20210166220A1 (en) Method for Enabling Access to Past Transaction in Blockchain Network, and Node
CN108959538B (zh) 全文检索系统及方法
CN110858194A (zh) 一种数据库扩容的方法和装置
CN112214505B (zh) 数据同步方法、装置、计算机可读存储介质及电子设备
CN110022315A (zh) 一种块链式账本中的权重管理方法、装置及设备
US20190362016A1 (en) Frequent pattern analysis for distributed systems
US11366821B2 (en) Epsilon-closure for frequent pattern analysis
CN111753019B (zh) 一种应用于数据仓库的数据分区方法和装置
CN113051229A (zh) 一种用户数据获取方法、装置、终端及可读存储介质
CN105843809B (zh) 数据处理方法和装置
EP3343395A1 (en) Data storage method and apparatus for mobile terminal
CN115185946A (zh) 多租户系统、多租户管理方法、计算机设备和存储介质
AU2019350694B2 (en) Identification of records for post-cloning tenant identifier translation
CN113449003B (zh) 信息查询的方法、装置、电子设备及介质
KR100785331B1 (ko) 인물 관계링크 설정을 이용하여 인맥관리할 수 있는휴대단말기 및 인맥관리방법
WO2021207831A1 (en) Method and systems for indexing databases on a contextual basis
CN115525655A (zh) 一种数据查询切片的方法和系统
US10372917B1 (en) Uniquely-represented B-trees
CN108322380B (zh) 调用数据的方法和装置以及推送信息的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200924

Address after: Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200924

Address after: Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: Grand Cayman Islands

Patentee before: Alibaba Group Holding Ltd.

TR01 Transfer of patent right