CN110727702A - 数据查询方法、装置、终端和计算机可读存储介质 - Google Patents

数据查询方法、装置、终端和计算机可读存储介质 Download PDF

Info

Publication number
CN110727702A
CN110727702A CN201910871705.3A CN201910871705A CN110727702A CN 110727702 A CN110727702 A CN 110727702A CN 201910871705 A CN201910871705 A CN 201910871705A CN 110727702 A CN110727702 A CN 110727702A
Authority
CN
China
Prior art keywords
data
database
key value
target
queried
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.)
Granted
Application number
CN201910871705.3A
Other languages
English (en)
Other versions
CN110727702B (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.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co 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 Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201910871705.3A priority Critical patent/CN110727702B/zh
Publication of CN110727702A publication Critical patent/CN110727702A/zh
Application granted granted Critical
Publication of CN110727702B publication Critical patent/CN110727702B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请属于计算机技术领域,尤其涉及一种数据查询方法、装置、终端和计算机可读存储介质,其中,所述数据查询方法包括:获取待查询数据的第一用户识别号和第一主键值;计算第一用户识别号模N后的值,并将所述第一用户识别号模N后的值作为所述待查询数据对应的第一数据库键值;从所述第一主键值中提取所述待查询数据的第一数据生成时间,并根据所述第一数据生成时间所属的时间范围确定所述待查询数据对应的第一分表键值;根据所述第一数据库键值确定与所述待查询数据对应的第一目标数据库;根据所述第一分表键值确定与所述待查询数据对应的第一目标分表,并根据所述第一主键值从所述第一目标分表中查找出所述待查询数据,提高了数据查询效率。

Description

数据查询方法、装置、终端和计算机可读存储介质
技术领域
本申请属于计算机技术领域,尤其涉及一种数据查询方法、装置、终端和计算机可读存储介质。
背景技术
关系型数据库,是建立在关系模型基础上的数据库。关系型数据库以行和列的形式存储数据,行和列的形式被称为表,表是由一组相关实体组成的集合。
关系型数据库通过将数据保存在不同的分表中,增加了数据的存储速度。然而,当数据库中的数据量达到百万级别或者千万级别时,则容易出现数据查询速度慢的问题。
发明内容
本申请实施例提供一种数据查询方法、装置、终端和计算机可读存储介质,可以解决数据查询速度慢的问题。
本申请实施例第一方面提供一种数据查询方法,包括:
获取待查询数据的第一用户识别号和第一主键值;
计算所述第一用户识别号模N后的值,并将所述第一用户识别号模N后的值作为所述待查询数据对应的第一数据库键值;其中,N为数据库总数;
从所述第一主键值中提取所述待查询数据的第一数据生成时间,并根据所述第一数据生成时间所属的时间范围确定所述待查询数据对应的第一分表键值;
根据所述第一数据库键值确定预先建立的N个数据库中与所述待查询数据对应的第一目标数据库;其中,每个所述预先建立的数据库包括多个分表,每个分表设置有分表键值;
根据所述第一分表键值确定所述第一目标数据库中与所述待查询数据对应的第一目标分表,并根据所述第一主键值从所述第一目标分表中查找出所述待查询数据。
本申请实施例中,在进行数据查询时,先获取待查询数据的第一用户识别码,并对第一用户识别码进行模N运算确定第一数据库键值,再通过第一数据生成时间所属的时间范围确定所述待查询数据对应的第一分表键值,使得进行数据查询时,并不需要对数据库中的每个分表进行数据查询,而是通过获取待查询数据的第一用户识别码以及第一数据生成时间的方式,精准地确认出待查询数据所在的数据库及数据库的分表,提高了数据查询效率,解决了数据查询速度慢的问题。
在上述第一方面的第一种可能实现方式中,在所述根据第一数据库键值确定预先建立的数据库中与所述待查询数据对应的第一目标数据库之前包括:构建数据库,并将待存储数据存入所述数据库。
以上述第一种可能实现方式为基础,提供的第二种可能实现方式中,所述构建所述数据库,并将待存储数据存入所述数据库包括:
创建N个数据库,并将所述数据库的数据库键值设置为0到N-1;
为所述N个数据库中的每个数据库分别建立M张分表,并以预设时间范围作为所述M张分表的分表键值;N和M均为大于或等于1的整数;
在进行数据存储时,获取待存储数据以及所述待存储数据的第二用户识别号和第二数据生成时间;
计算所述第二用户识别号模N后的值,并以所述第二用户识别号模N后的值作为所述待存储数据对应的第二数据库键值;
根据所述第二数据生成时间所属的时间范围确定所述待存储数据对应的第二分表键值;
将所述待存储数据存入与所述第二数据库键值以及所述第二分表键值对应的第二目标数据库的第二目标分表。
以上述第二种可能实现方式为基础提供的第三种实现方式中,在所述构建数据库,并将待存储数据存入所述数据库之后,包括:对所述数据库进行扩容。
以上述第三种可能实现方式为基础提供的第四种实现方式中,所述对所述数据库进行扩容包括:
将每个数据库分别扩容成一个主库和m个从库,总共得到(m+1)*N个数据库;其中,所述主库和所述从库中存储的数据相同,并且m为大于或等于1的整数;
将所述主库的数据库键值设置为0到N-1,并将从库的数据库键值设置为N到(m+1)*N-1;
对所述主库和所述从库中的数据进行去冗余处理,得到扩容后的数据库。
以上述第四种可能实现方式为基础提供的第五种实现方式中,所述对所述主库和所述从库中的数据进行去冗余处理,得到扩容后的数据库包括:
逐条获取第三目标数据库中存储的目标数据的第三用户识别号,以及所述第三目标数据库的数据库键值;
计算所述第三用户识别号模(m+1)*N后的值;
若所述第三用户识别号模(m+1)*N后的值与所述第三目标数据库的数据库键值相同,则将所述目标数据保留在所述第三目标数据库中;若所述第三用户识别号模(m+1)*N后的值与所述第三目标数据库的数据库键值不相同,则将所述目标数据从所述第三目标数据库中删除,得到扩容后的数据库。
以上述第三种可能实现方式为基础提供的第六种实现方式中,在所述对数据库进行扩容之前包括:
获取进行K次数据查询的平均查询时间;其中,K为大于1的整数;
若所述平均查询时间大于预设时间阈值,则对所述数据库进行扩容。
本申请实施例中,利用上述方法构建的数据库支持平滑拓展,缓解了单个数据库的存储压力,提高了数据库存储的数据量,还简化了数据库扩容过程,缩短了扩容时间。
本申请实施例第二方面提供的一种数据查询装置,包括:
获取单元,用于获取待查询数据的第一用户识别号和第一主键值;
计算单元,用于计算所述第一用户识别号模N后的值,并将所述第一用户识别号模N后的值作为所述待查询数据对应的第一数据库键值;其中,N为数据库总数;
第一确定单元,用于从所述第一主键值中提取所述待查询数据的第一数据生成时间,并根据所述第一数据生成时间所属的时间范围确定所述待查询数据对应的第一分表键值;
第二确定单元,用于根据所述第一数据库键值确定预先建立的N个数据库中与所述待查询数据对应的第一目标数据库;其中,每个所述预先建立的数据库包括多个分表,每个分表设置有分表键值;
查询单元,用于根据所述第一分表键值确定所述第一目标数据库中与所述待查询数据对应的第一目标分表,并根据所述第一主键值从所述第一目标分表中查找出所述待查询数据。
本申请实施例第三方面提供一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中任意一项数据查询方法。
本申请实施例第四方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任意一项数据查询方法。
本申请实施例第五方面提供一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任意一项数据查询方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本申请实施例提供的一种数据查询方法的实现流程示意图;
图2是本申请实施例提供的数据库构建以及将待存储数据存储至所述数据库的流程示意图;
图3是本申请实施例提供的对数据库进行扩容的第一实现流程示意图;
图4是本申请实施例提供的对数据库进行扩容的第二实现流程示意图;
图5是本申请实施例提供的对数据库进行扩容的第三实现流程示意图;
图6是本申请实施例提供的对数据库进行去冗余的示意图;
图7是本申请实施例提供的数据查询装置的结构示意图;
图8是本申请实施例提供的终端的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
关系型数据库通过将数据保存在不同的分表中,增加了数据的存储速度。然而,当数据库中的数据量达到百万级别或者千万级别时,由于缺乏合理的数据查询方法,通常只能逐个分表进行查询,因此大大降低了数据查询速度,具有数据查询速度慢的问题。
基于此,本申请实施例提供一种数据查询方法、装置、终端和计算机可读存储介质,可以解决数据查询速度慢的问题,为了说明本申请的技术方案,下面通过具体实施例来进行说明。
如图1示出了本申请实施例提供的一种数据查询方法的实现流程示意图,该方法应用于终端,可以由终端上配置的数据查询装置执行,适用于需提高数据查询效率的情形,并且,该终端可以为手机、电脑或服务器等终端设备。所述数据查询方法可以包括步骤101至步骤105。
步骤101,获取待查询数据的第一用户识别号和第一主键值。
本申请实施例中,第一用户识别号是指用来标识待查询数据对应的用户身份信息的识别号,该用户身份信息可以来自于用户输入,也可以由终端从会话信息中获取。
由于上述第一用户识别号要参与后续的取模运算,因此,第一用户识别号为数字字符组成的信息。例如,该用户识别号可以是用户的身份证号、银行卡号、手机号等数字字符组成的信息,或者为由非数字字符的信息转换成的数字字符信息。
上述第一主键值是指用于标识数据的标识信息。
可选的,在本申请的一些实施方式中,上述第一主键值可以为由时间戳和随机数拼接而成的数据。
例如,上述待查询数据的生成时间为2018年11月11日00:00:00,则其对应的时间戳是1541865600000,即2018年11月11日00:00:00与1970年1月1日00:00:00之间的毫秒数。
上述随机数可以是通用唯一识别码(Universally Unique Identifier,UUID),UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,通常可以通过调用UUID的接口生成,并且每次生成的UUID均不相同,可以保证上述第一主键值的唯一性。
在本申请的一些实施方式中,上述随机数还可以为根据其他随机函数生成的随机数,本申请对此不做限制。
步骤102,计算所述第一用户识别号模N后的值,并将所述第一用户识别号模N后的值作为所述待查询数据对应的第一数据库键值;其中,N为数据库总数。
在获取了待查询数据的第一用户识别号之后,即可计算所述第一用户识别号模N后的值,并将所述第一用户识别号模N后的值作为所述待查询数据对应的第一数据库键值。
例如,当前构建有两个数据库(即,N=2),当待查询数据对应的第一用户识别为0时,所述第一用户识别进行模2运算后的值为0,则待查询数据对应的第一数据库键值为0;当待查询数据对应的第一用户识别为1时,所述第一用户识别进行模2运算后的值为1,则待查询数据对应的第一数据库键值为1。
上述第一数据库键值是指用于标识待查询数据对应的数据库的标识信息。
步骤103,从所述第一主键值中提取所述待查询数据的第一数据生成时间,并根据所述第一数据生成时间所属的时间范围确定所述待查询数据对应的第一分表键值。
其中,上述第一数据生成时间所属的时间范围可以由所述待查询数据的第一主键值确定。
例如,上述第一主键值为由时间戳和随机数拼接而成的数据时,即可将时间戳转换为待查询数据对应的第一数据生成时间。
上述第一分表键值是指用于标识待查询数据对应的分表的标识信息。
例如,当前构建有按月划分的分表,分别命名为table0至table11,待查询数据的生成时间是2019年01月01日到2019年01月31日之间,则待查数据对应的第一分表键值可以为0;待查询数据的生成时间是2019年12月01日到2019年12月31日之间,则所述待查数据对应的第一分表键值可以为11。
可选的,上述分表可以根据不同的时间范围进行调整,例如以周、季度或者年对应一张表。
步骤104,根据所述第一数据库键值确定预先建立的N个数据库中与所述待查询数据对应的第一目标数据库;其中,每个所述预先建立的数据库包括多个分表,每个分表设置有分表键值。
步骤105,根据所述第一分表键值确定所述第一目标数据库中与所述待查询数据对应的第一目标分表,并根据所述第一主键值从所述第一目标分表中查找出所述待查询数据。
本申请实施例中,在进行数据查询时,首先获取待查询数据的第一用户识别号和第一主键值;接着,通过计算所述第一用户识别号模N后的值确定所述待查询数据对应的第一数据库键值,并根据从第一主键值中提取出的第一数据生成时间确定所述待查询数据对应的第一分表键值;然后,根据所述第一数据库键值确定预先建立的N个数据库中与所述待查询数据对应的第一目标数据库,并根据所述第一分表键值确定所述第一目标数据库中与所述待查询数据对应的第一目标分表,进而确定出所述待查询数据存放的具体位置,即,所述第一目标数据库中的第一目标分表,并最终实现根据所述第一主键值从所述第一目标分表中快速地查找出所述待查询数据。由于本申请中,数据查询过程中,并不需要对数据库中的每个分表进行数据查询,而是通过直接计算的方式,精准地确认出待查询的数据所在的数据库及数据库中的分表,因此,提高了数据查询效率,解决了数据查询速度慢的问题。
可选的,所述待查找数据,还可以包括对数据库中的分表进行查询。
具体的,在对待查询分表进行查询时,可以先获取待查询分表对应的第一用户识别号和分表的键值,根据所述第一用户识别号进行模N运算,计算所述待查询分表对应的第一数据库键值,根据所述第一数据库键值确定预先建立的N个数据库中与所述待查询分表对应的第一目标数据库;并根据分表的键值查找出第一目标数据库中的该分表。
需要说明的是,在本申请的一些实施例中,对于待查询分表,服务端只需要第一用户识别号及时间戳两个参数就能够进行分表查询。其中,第一用户识别号可以从会话信息中获取,并根据第一用户识别号查询到对应的数据库,再根据时间戳参数查询对应的分表。
在本申请的一些实施方式中,上述步骤101,在所述根据第一数据库键值确定预先建立的N个数据库中与所述待查询数据对应的第一目标数据库之前,还可以包括,构建所述数据库,并将待存储数据存入所述数据库。
也就是说,在进行数据查询之前,先要将数据存入数据库中。
具体的,如图2所示,所述构建数据库,并将待存储数据存储至所述数据库可以包括步骤201至206。
步骤201,创建N个数据库,并将所述数据库的数据库键值设置为0到N-1。
其中,N的取值可以根据实际应用场景进行设定。例如,对于需要存储比较大的数据量时,数据库的数量可以设置得大一些,反之,则设置得小一些,本申请对此不做限制。
步骤202,为所述N个数据库中的每个数据库分别建立M张分表,并以预设时间范围作为所述M张分表的分表键值;N和M均为大于或等于1的整数。
步骤203,在进行数据存储时,获取待存储数据以及所述待存储数据的第二用户识别号和第二数据生成时间。
步骤204,计算所述第二用户识别号模N后的值,并以所述第二用户识别号模N后的值作为所述待存储数据对应的第二数据库键值。
步骤205,根据所述第二数据生成时间所属的时间范围确定所述待存储数据对应的第二分表键值。
步骤206,将所述待存储数据存入与所述第二数据库键值以及所述第二分表键值对应的第二目标数据库的第二目标分表。
例如,当前构建有两个数据库db0与db1,数据库分表按月划分,分别命名为table0至table11,待存储数据的用户识别号(第二用户识别号)为0,其模N后的值为0;待存储数据的数据生成时间(第二数据生成时间)为2019年1月1日,其所属的时间范围为1月份,属于table0,则该待存储数据将存储到db0数据库的table0表中。
需要说明的是,上述数据库的构建以及数据存储的过程与上述图1所示的数据查询的过程相适应,具体实现过程可以参看上述图1所示实施例的描述。
在数据查询的过程中,随着数据库存储的数据量越来越大,数据库的响应时间有可能变慢,导致数据查询效率降低。
因此,在本申请的一些实施方式中,在所述构建数据库,并将待存储数据存入所述数据库之后,可以对所述数据库进行扩容,以提高数据库的响应速度。
例如,如图3所示,在本申请的一些实施方式中,在所述对数据库进行扩容之前可以包括:步骤301至步骤302。
步骤301,获取进行K次数据查询的平均查询时间;K为大于1的整数;
步骤302,若所述平均查询时间大于预设时间阈值,则对所述数据库进行扩容。
本申请实施例中,在平均查询时间大于预设时间阈值时,表示数据库的响应速度已经开始变慢,因此,可以确定需要对所述数据库进行扩容。
其中,上述K的取值以及上述预设时间阈值的具体取值可以根据实际应用场景进行设定,本申请对此不做限制。
可选的,为了更准确地对数据库进行扩容处理,在本申请的一些实施方式中,上述步骤302中,若平均查询时间大于预设时间阈值,则对所述数据库进行扩容还可以包括:若所述平均查询时间大于预设时间阈值,则获取数据库存储的数据量,若所述数据量大于预设数据量阈值,则对数据库进行扩容。
例如,假设上述预设时间阈值为3秒,K=10,预设的数据量阈值为100万条。此时,若进行10次数据查询的平均时间为5秒,则可以确定平均查询时间大于预设时间阈值,进而可以检测数据库存储的数据量,若所述数据库存储的数据量为50万条,小于预设的数据量阈值,则不进行数据库扩容;若所述数据库存储的数据量为150万条,大于预设的数据量阈值,则可以进行数据库扩容。
具体的,如图4所示,所述对数据库进行扩容可以包括:步骤401至步骤403。
步骤401,将每个数据库分别扩容成一个主库和m个从库,总共得到(m+1)*N个数据库;其中,所述主库和所述从库中存储的数据相同,并且m为大于或等于1的整数。
步骤402,将所述主库的数据库键值设置为0到N-1,并将从库的数据库键值设置为N到(m+1)*N-1。
步骤403,对所述主库和所述从库中的数据进行去冗余处理,得到扩容后的数据库。
例如,当前构建有两个数据库db0与db1,将db0数据库扩容成一个主库db0与一个从库db2,将db1数据库扩容成一个主库db1与一个从库db3,则总共得到4个数据库。
其中,db2存储的数据与db0相同,db3存储的数据与db1相同,因此,需要分别对db0、db1、db2和db3的数据进行去冗余处理,得到扩容后的数据库。
可选的,如图5所示,所述对所述主库和所述从库中的数据进行去冗余处理,得到扩容后的数据库的步骤,可以包括:步骤501至步骤503。
步骤501,逐条获取第三目标数据库中存储的目标数据的第三用户识别号,以及所述第三目标数据库的数据库键值。
步骤502,计算所述第三用户识别号模(m+1)*N后的值。
步骤503,若所述第三用户识别号模(m+1)*N后的值与所述第三目标数据库的数据库键值相同,则将所述目标数据保留在所述第三目标数据库中;若所述第三用户识别号模(m+1)*N后的值与所述第三目标数据库的数据库键值不相同,则将所述目标数据从所述第三目标数据库中删除,得到扩容后的数据库。
其中,所述第三目标数据库包括所有主库和从库;上述目标数据是指主库和从库中存储的每一条数据。
上述步骤501至步骤503相对于对各个主库和从库以及各个主库和从库中存储的数据进行遍历,以确定是否要保留在其对应的数据库中,并将各个数据库中需要删除的数据删除,得到扩容后的数据库。
例如,如图6所示,扩容前的初始状态构建有两个数据库db0与db1,分别存储有第一用户识别号为0、1、2、3的数据。具体的,由于第一用户识别号0与2模2后的值为0,第一用户识别号1与3模2后的值为1,因此,需要将第一用户识别号0与2的数据储存于数据库db0中,将第一用户识别号为1与3的数据储存于数据库db1中。
接着,在对数据库db0与db1进行扩容时,可以将db0数据库扩容成一个主库db0与一个从库db2,将db1数据库扩容成一个主库db1与一个从库db3,总共得到4个数据库,其中db0与db2储存的数据相同,db1与db3储存的数据相同。
最后,需要对4个数据库中的数据分别进行去冗余处理。具体的,第一用户识别号为0的数据进行模4运算后为0,则将所述数据保留在db0中,从db2中删除;第一用户识别号为2的数据进行模4运算后为2,则将所述数据保留在db2中,从db0中删除;第一用户识别号为1的数据进行模4运算后为1,则将所述数据保留在db1中,从db3中删除;第一用户识别号为3的数据进行模4运算后为3,则将所述数据保留在db3中,从db1中删除,最后得到扩容后的数据库db0、db1、db2、db3。
可选的,所述对数据库进行扩容时,还可以包括对数据库分表进行扩容。
可选的,在对数据库分表进行扩容可以包括:每隔一定的时间周期,为数据库创建一个新的分表实现分表的扩容,并以创建时间区间作为该分表的键值。
例如,所述时间周期为一个月,在2019年1月1日,新创建一张一月份对应的分表进行扩容,分表的键值为2019年1月;在2019年2月1日,再扩容一张二月份对应的分表,分表键值为2019年2月。又例如,所述时间周期为一年,则在2019年1月1日创建12张分表,每张分表的键值依次为2019年1月至2019年12月。
本申请实施例中,通过建立多个数据库及多个分表,并在进行数据查询时,获取待查询数据的第一用户识别码,并进行模N运算确定第一数据库键值,再通过第一数据生成时间所属的时间范围确定所述待查询数据对应的第一分表键值,使得进行数据查询时,并不需要对数据库中的每个分表进行数据查询,而是通过获取待查询数据的第一用户识别码以及第一数据生成时间的方式,精准地确认出待查询数据所在的数据库及数据库的分表,提高了数据查询效率,缩短了数据查询时间,尤其在数据量较大的情况下,有效解决了数据查询速度慢的问题。并且,利用上述方法构建的数据库支持平滑拓展,缓解了单个数据库的存储压力,提高了数据库存储的数据量,还简化了数据库扩容过程,缩短了扩容时间。
如图7所示为本申请实施例提供一种数据查询装置700的结构示意图,所述数据查询装置700可以包括:获取单元701、计算单元702、第一确定单元703、第二确定单元704和查询单元705。
获取单元701,用于获取待查询数据的第一用户识别号和第一主键值;
计算单元702,用于计算所述第一用户识别号模N后的值,并将所述第一用户识别号模N后的值作为所述待查询数据对应的第一数据库键值;其中,N为数据库总数;
第一确定单元703,用于从所述第一主键值中提取所述待查询数据的第一数据生成时间,并根据所述第一数据生成时间所属的时间范围确定所述待查询数据对应的第一分表键值;
第二确定单元704,用于根据所述第一数据库键值确定预先建立的N个数据库中与所述待查询数据对应的第一目标数据库;其中,每个所述预先建立的数据库包括多个分表,每个分表设置有分表键值;
查询单元705,用于根据所述第一分表键值确定所述第一目标数据库中与所述待查询数据对应的第一目标分表,并根据所述第一主键值从所述第一目标分表中查找出所述待查询数据。
可选的,所述数据查询装置,还包括构建单元,用于在所述根据第一数据库键值确定预先建立的数据库中与所述待查询数据对应的第一目标数据库之前,构建数据库,并将待存储数据存入所述数据库。
可选的,所述构建单元,还具体用于,
创建N个数据库,并将所述数据库的数据库键值设置为0到N-1;
为所述N个数据库中的每个数据库分别建立M张分表,并以预设时间范围作为所述M张分表的分表键值;N和M均为大于或等于1的整数;
在进行数据存储时,获取待存储数据以及所述待存储数据的第二用户识别号和第二数据生成时间;
计算所述第二用户识别号模N后的值,并以所述第二用户识别号模N后的值作为所述待存储数据对应的第二数据库键值;
根据所述第二数据生成时间所属的时间范围确定所述待存储数据对应的第二分表键值;
将所述待存储数据存入与所述第二数据库键值以及所述第二分表键值对应的第二目标数据库的第二目标分表。
可选的,所述数据查询装置,还包括扩容单元,用于在所述构建数据库,并将待存储数据存入所述数据库之后,对所述数据库进行扩容。
可选的,所述扩容单元,还具体用于,
将每个数据库分别扩容成一个主库和m个从库,总共得到(m+1)*N个数据库;其中,所述主库和所述从库中存储的数据相同,并且m为大于或等于1的整数;
将所述主库的数据库键值设置为0到N-1,并将从库的数据库键值设置为N到(m+1)*N-1;
对所述主库和所述从库中的数据进行去冗余处理,得到扩容后的数据库。
可选的,所述扩容单元,还具体用于,
逐条获取第三目标数据库中存储的目标数据的第三用户识别号,以及所述第三目标数据库的数据库键值;
计算所述第三用户识别号模(m+1)*N后的值;
若所述第三用户识别号模(m+1)*N后的值与所述第三目标数据库的数据库键值相同,则将所述目标数据保留在所述第三目标数据库中;若所述第三用户识别号模(m+1)*N后的值与所述第三目标数据库的数据库键值不相同,则将所述目标数据从所述第三目标数据库中删除,得到扩容后的数据库。
可选的,所述扩容单元,还具体用于,在所述对数据库进行扩容之前,获取进行K次数据查询的平均查询时间;其中,K为大于1的整数;若所述平均查询时间大于预设时间阈值,则对所述数据库进行扩容。
需要说明的是,为描述的方便和简洁,上述描述的数据查询装置700的具体工作过程,可以参考图1至图6所述方法的对应过程,在此不再赘述。
图8是本申请实施例提供的终端的示意图。如图8所示,该终端8包括:处理器80、存储器81以及存储在所述存储器81中并可在所述处理器80上运行的计算机程序82,例如数据查询程序。所述处理器80执行所述计算机程序82时实现上述各个数据查询方法实施例中的步骤,例如图1所示的步骤101至105。或者,所述处理器80执行所述计算机程序82时实现上述各装置实施例中各模块/单元的功能,例如图7所示单元701至705的功能。
所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器81中,并由所述处理器80执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述终端中的执行过程。例如,所述计算机程序可以被分割成获取单元、计算单元、第一确定单元、第二确定单元和查询单元,各单元具体功能如下:
获取单元,用于获取待查询数据的第一用户识别号和第一主键值;
计算单元,用于计算所述第一用户识别号模N后的值,并将所述第一用户识别号模N后的值作为所述待查询数据对应的第一数据库键值;其中,N为数据库总数;
第一确定单元,用于从所述第一主键值中提取所述待查询数据的第一数据生成时间,并根据所述第一数据生成时间所属的时间范围确定所述待查询数据对应的第一分表键值;
第二确定单元,用于根据所述第一数据库键值确定预先建立的N个数据库中与所述待查询数据对应的第一目标数据库;其中,每个所述预先建立的数据库包括多个分表,每个分表设置有分表键值;
查询单元,用于根据所述第一分表键值确定所述第一目标数据库中与所述待查询数据对应的第一目标分表,并根据所述第一主键值从所述第一目标分表中查找出所述待查询数据。
所述终端可以是智能手机等移动终端,或者是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端可包括,但不仅限于,处理器80、存储器81。本领域技术人员可以理解,图8仅仅是终端的示例,并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端还可以包括输入输出设备、网络接入设备、总线等。
所称处理器80可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器81可以是所述终端的内部存储单元,例如终端的硬盘或内存。所述存储器81也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器81还可以既包括所述终端的内部存储单元也包括外部存储设备。所述存储器81用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述存储器81还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种数据查询方法,其特征在于,包括:
获取待查询数据的第一用户识别号和第一主键值;
计算所述第一用户识别号模N后的值,并将所述第一用户识别号模N后的值作为所述待查询数据对应的第一数据库键值;其中,N为数据库总数;
从所述第一主键值中提取所述待查询数据的第一数据生成时间,并根据所述第一数据生成时间所属的时间范围确定所述待查询数据对应的第一分表键值;
根据所述第一数据库键值确定预先建立的N个数据库中与所述待查询数据对应的第一目标数据库;其中,每个所述预先建立的数据库包括多个分表,每个分表设置有分表键值;
根据所述第一分表键值确定所述第一目标数据库中与所述待查询数据对应的第一目标分表,并根据所述第一主键值从所述第一目标分表中查找出所述待查询数据。
2.如权利要求1所述的数据查询方法,其特征在于,在所述根据第一数据库键值确定预先建立的数据库中与所述待查询数据对应的第一目标数据库之前,包括:
构建数据库,并将待存储数据存入所述数据库。
3.如权利要求2所述的数据查询方法,其特征在于,所述构建所述数据库,并将待存储数据存入所述数据库包括:
创建N个数据库,并将所述数据库的数据库键值设置为0到N-1;
为所述N个数据库中的每个数据库分别建立M张分表,并以预设时间范围作为所述M张分表的分表键值;N和M均为大于或等于1的整数;
在进行数据存储时,获取待存储数据以及所述待存储数据的第二用户识别号和第二数据生成时间;
计算所述第二用户识别号模N后的值,并以所述第二用户识别号模N后的值作为所述待存储数据对应的第二数据库键值;
根据所述第二数据生成时间所属的时间范围确定所述待存储数据对应的第二分表键值;
将所述待存储数据存入与所述第二数据库键值以及所述第二分表键值对应的第二目标数据库的第二目标分表。
4.如权利要求3所述的数据查询方法,其特征在于,在所述构建数据库,并将待存储数据存入所述数据库之后,包括:
对所述数据库进行扩容。
5.如权利要求4所述的数据查询方法,其特征在于,所述对所述数据库进行扩容包括:
将每个数据库分别扩容成一个主库和m个从库,总共得到(m+1)*N个数据库;其中,所述主库和所述从库中存储的数据相同,并且m为大于或等于1的整数;
将所述主库的数据库键值设置为0到N-1,并将从库的数据库键值设置为N到(m+1)*N-1;
对所述主库和所述从库中的数据进行去冗余处理,得到扩容后的数据库。
6.如权利要求5所述的数据查询方法,其特征在于,所述对所述主库和所述从库中的数据进行去冗余处理,得到扩容后的数据库包括:
逐条获取第三目标数据库中存储的目标数据的第三用户识别号,以及所述第三目标数据库的数据库键值;
计算所述第三用户识别号模(m+1)*N后的值;
若所述第三用户识别号模(m+1)*N后的值与所述第三目标数据库的数据库键值相同,则将所述目标数据保留在所述第三目标数据库中;若所述第三用户识别号模(m+1)*N后的值与所述第三目标数据库的数据库键值不相同,则将所述目标数据从所述第三目标数据库中删除,得到扩容后的数据库。
7.如权利要求4所述的数据查询方法,其特征在于,在所述对数据库进行扩容之前包括:
获取进行K次数据查询的平均查询时间;其中,K为大于1的整数;
若所述平均查询时间大于预设时间阈值,则对所述数据库进行扩容。
8.一种数据查询装置,其特征在于,包括:
获取单元,用于获取待查询数据的第一用户识别号和第一主键值;
计算单元,用于计算所述第一用户识别号模N后的值,并将所述第一用户识别号模N后的值作为所述待查询数据对应的第一数据库键值;其中,N为数据库总数;
第一确定单元,用于从所述第一主键值中提取所述待查询数据的第一数据生成时间,并根据所述第一数据生成时间所属的时间范围确定所述待查询数据对应的第一分表键值;
第二确定单元,用于根据所述第一数据库键值确定预先建立的N个数据库中与所述待查询数据对应的第一目标数据库;其中,每个所述预先建立的数据库包括多个分表,每个分表设置有分表键值;
查询单元,用于根据所述第一分表键值确定所述第一目标数据库中与所述待查询数据对应的第一目标分表,并根据所述第一主键值从所述第一目标分表中查找出所述待查询数据。
9.一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7中任意一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任意一项所述方法的步骤。
CN201910871705.3A 2019-09-16 2019-09-16 数据查询方法、装置、终端和计算机可读存储介质 Active CN110727702B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910871705.3A CN110727702B (zh) 2019-09-16 2019-09-16 数据查询方法、装置、终端和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910871705.3A CN110727702B (zh) 2019-09-16 2019-09-16 数据查询方法、装置、终端和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN110727702A true CN110727702A (zh) 2020-01-24
CN110727702B CN110727702B (zh) 2024-01-26

Family

ID=69218983

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910871705.3A Active CN110727702B (zh) 2019-09-16 2019-09-16 数据查询方法、装置、终端和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110727702B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737259A (zh) * 2020-06-19 2020-10-02 中国银行股份有限公司 数据互锁方法及装置、支付数据生成方法及装置
CN112036894A (zh) * 2020-09-01 2020-12-04 中国银行股份有限公司 利用虹膜特征及动作特征进行身份确认的方法及系统
CN112416903A (zh) * 2020-11-23 2021-02-26 中国工商银行股份有限公司 一种数据库的扩容方法、缩容方法及装置
CN112487047A (zh) * 2020-11-02 2021-03-12 广州明珞装备股份有限公司 一种备件消耗数据查询方法、系统和存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402394A (zh) * 2010-09-13 2012-04-04 腾讯科技(深圳)有限公司 一种基于哈希算法的数据存储方法及装置
CN102968498A (zh) * 2012-12-05 2013-03-13 华为技术有限公司 数据处理方法及装置
CN103246659A (zh) * 2012-02-06 2013-08-14 阿里巴巴集团控股有限公司 键值数据查询的方法和装置
CN103577456A (zh) * 2012-07-31 2014-02-12 国际商业机器公司 用于处理时序数据的方法和装置
JP2014063540A (ja) * 2014-01-15 2014-04-10 Toshiba Corp key−valueストア方式を有するメモリシステム
CN104714972A (zh) * 2013-12-17 2015-06-17 中国银联股份有限公司 数据库分表建立及查询方法
US20160371336A1 (en) * 2015-06-18 2016-12-22 International Business Machines Corporation Partitioned join with dense inner table representation
CN106503040A (zh) * 2016-09-20 2017-03-15 福建天晴数码有限公司 适用sql查询方法的kv数据库及其创建方法
CN107818115A (zh) * 2016-09-14 2018-03-20 苏宁云商集团股份有限公司 一种处理数据表的方法及装置
CN108427684A (zh) * 2017-02-14 2018-08-21 华为技术有限公司 数据查询方法、装置及计算设备
CN110019277A (zh) * 2019-01-17 2019-07-16 阿里巴巴集团控股有限公司 一种数据累积的方法、数据查询的方法、装置及设备

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402394A (zh) * 2010-09-13 2012-04-04 腾讯科技(深圳)有限公司 一种基于哈希算法的数据存储方法及装置
CN103246659A (zh) * 2012-02-06 2013-08-14 阿里巴巴集团控股有限公司 键值数据查询的方法和装置
CN103577456A (zh) * 2012-07-31 2014-02-12 国际商业机器公司 用于处理时序数据的方法和装置
CN102968498A (zh) * 2012-12-05 2013-03-13 华为技术有限公司 数据处理方法及装置
CN104714972A (zh) * 2013-12-17 2015-06-17 中国银联股份有限公司 数据库分表建立及查询方法
JP2014063540A (ja) * 2014-01-15 2014-04-10 Toshiba Corp key−valueストア方式を有するメモリシステム
US20160371336A1 (en) * 2015-06-18 2016-12-22 International Business Machines Corporation Partitioned join with dense inner table representation
CN107818115A (zh) * 2016-09-14 2018-03-20 苏宁云商集团股份有限公司 一种处理数据表的方法及装置
CN106503040A (zh) * 2016-09-20 2017-03-15 福建天晴数码有限公司 适用sql查询方法的kv数据库及其创建方法
CN108427684A (zh) * 2017-02-14 2018-08-21 华为技术有限公司 数据查询方法、装置及计算设备
CN110019277A (zh) * 2019-01-17 2019-07-16 阿里巴巴集团控股有限公司 一种数据累积的方法、数据查询的方法、装置及设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737259A (zh) * 2020-06-19 2020-10-02 中国银行股份有限公司 数据互锁方法及装置、支付数据生成方法及装置
CN111737259B (zh) * 2020-06-19 2023-09-19 中国银行股份有限公司 数据互锁方法及装置、支付数据生成方法及装置
CN112036894A (zh) * 2020-09-01 2020-12-04 中国银行股份有限公司 利用虹膜特征及动作特征进行身份确认的方法及系统
CN112036894B (zh) * 2020-09-01 2023-08-18 中国银行股份有限公司 利用虹膜特征及动作特征进行身份确认的方法及系统
CN112487047A (zh) * 2020-11-02 2021-03-12 广州明珞装备股份有限公司 一种备件消耗数据查询方法、系统和存储介质
CN112416903A (zh) * 2020-11-23 2021-02-26 中国工商银行股份有限公司 一种数据库的扩容方法、缩容方法及装置

Also Published As

Publication number Publication date
CN110727702B (zh) 2024-01-26

Similar Documents

Publication Publication Date Title
CN110727702B (zh) 数据查询方法、装置、终端和计算机可读存储介质
CN111046034B (zh) 管理内存数据及在内存中维护数据的方法和系统
CN107818115B (zh) 一种处理数据表的方法及装置
CN109885614B (zh) 一种数据同步的方法和装置
US20160328445A1 (en) Data Query Method and Apparatus
CN105900093A (zh) 一种KeyValue数据库的数据表的更新方法与表数据更新装置
WO2021179488A1 (zh) 监控数据存储方法、设备、服务器及存储介质
CN112559513A (zh) 链路数据存取方法、装置、存储介质、处理器及电子装置
CN111858581A (zh) 一种分页查询的方法、装置、存储介质和电子设备
CN109165259B (zh) 基于网络附属存储的索引表更新方法、处理器及存储装置
CN115328917A (zh) 一种查询方法、装置、设备及存储介质
CN109547526B (zh) 一种消息推送方法、计算机可读存储介质及服务器
CN114385657A (zh) 数据存储方法、装置及存储介质
CN111158994B (zh) 一种压测性能测试方法及装置
CN109284278B (zh) 基于数据分析技术的计算逻辑迁移方法及终端设备
CN113268483A (zh) 请求处理方法和装置、电子设备和存储介质
CN114547184A (zh) 人员信息同步方法、终端设备及存储介质
CN114139512A (zh) 电子表格控制方法、装置、计算机可读存储介质及服务器
CN113127436B (zh) 一种数据同步方法、装置、服务器及存储介质
CN111611245B (zh) 处理数据表的方法和系统
CN115328892B (zh) 一种业务表单数据结构处理方法、系统、电子设备及介质
CN114510534B (zh) 数据同步方法、装置、设备及存储介质
CN114048197B (zh) 树形结构数据处理方法、电子设备及计算机可读存储装置
CN108897849B (zh) 一种提升数据库应用性能的方法及终端
CN117762971A (zh) 面向区块链交易检索的高效查询方法、系统、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant