CN110781215A - 数据的查询方法、装置以及存储介质 - Google Patents
数据的查询方法、装置以及存储介质 Download PDFInfo
- Publication number
- CN110781215A CN110781215A CN201911001616.XA CN201911001616A CN110781215A CN 110781215 A CN110781215 A CN 110781215A CN 201911001616 A CN201911001616 A CN 201911001616A CN 110781215 A CN110781215 A CN 110781215A
- Authority
- CN
- China
- Prior art keywords
- primary key
- data
- interval
- query
- ids
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 104
- 230000008569 process Effects 0.000 claims abstract description 62
- 238000012545 processing Methods 0.000 claims description 39
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 6
- 239000012634 fragment Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据的查询方法、装置以及存储介质。其中,该方法包括:接收请求查询指定第一主键ID区间内标识的符合业务条件的数据的查询请求,其中第一主键ID为存储有数据的数据表中的主键ID;在预设的区间索引表中确定与指定第一主键ID区间对应的多个第二主键ID,其中第二主键ID为区间索引表中的主键ID,并且区间索引表中的每一第二主键ID对应于数据表中的一个第一主键ID区间;将多个第二主键ID分配至多个进程;以及使用多个进程并行查询数据表中的指定第一主键ID区间内标识的数据,并得到符合业务条件的数据。
Description
技术领域
本申请涉及关系数据库应用领域,特别是涉及一种数据的查询方法、装置以及存储介质。
背景技术
关系型数据库在通常的应用场景下,一般是单表达到1000w级别就要开始考虑分库分表,如按业务的水平拆分或者是按层次的垂直拆分。虽然目前有很多成熟的组件来完成这个任务,比如从客户端角度,有sharding-jdbc,从中间件角度,有Mycat。客户端软件对应用的侵入性很强,但是避免了中间件引入的复杂的运维成本。但是,同一个技术方案在不同的业务场景下,不会全部适用。比如在资金结算系统中,数据量大,数据以指令的形式存在,数据处理成功就可以归档。面对这样的业务场景,分库分表显然不是合适的解决方案,因为无法抽象出合适的主键作为分片的规则,同时分表之后的历史数据大部分都可以归档,显然没有达到分片命中的高效的查询性能。
针对上述的现有技术中存在的资金结算系统中,由于无法抽象出合适的主键作为分片的规则,因此在单表达到预设的级别下,无法采取分库分表的方式来提高查询性能,从而导致数据查询效率低的技术问题,目前尚未提出有效的解决方案。
发明内容
本公开的实施例提供了一种数据的查询方法、装置以及存储介质,以至少解决现有技术中存在的资金结算系统中,由于无法抽象出合适的主键作为分片的规则,因此在单表达到预设的级别下,无法采取分库分表的方式来提高查询性能,从而导致数据查询效率低的技术问题。
根据本公开实施例的一个方面,提供了一种数据的查询方法,包括:接收请求查询指定第一主键ID区间内标识的符合业务条件的数据的查询请求,其中第一主键ID为存储有数据的数据表中的主键ID;在预设的区间索引表中确定与指定第一主键ID区间对应的多个第二主键ID,其中第二主键ID为区间索引表中的主键ID,并且区间索引表中的每一第二主键ID对应于数据表中的一个第一主键ID区间;将多个第二主键ID分配至多个进程;以及使用多个进程并行查询数据表中的指定第一主键ID区间内标识的数据,并得到符合业务条件的数据。
根据本公开实施例的另一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
根据本公开实施例的另一个方面,还提供了一种数据的查询装置,包括:接收模块,用于接收请求查询指定第一主键ID区间内标识的符合业务条件的数据的查询请求,其中第一主键ID为存储有数据的数据表中的主键ID;确定模块,用于在预设的区间索引表中确定与指定第一主键ID区间对应的多个第二主键ID,其中第二主键ID为区间索引表中的主键ID,并且区间索引表中的每一第二主键ID对应于数据表中的一个第一主键ID区间;分配模块,用于将多个第二主键ID分配至多个进程;以及查询模块,用于使用多个进程并行查询数据表中的指定第一主键ID区间内标识的数据,并得到符合业务条件的数据。
根据本公开实施例的另一个方面,还提供了一种数据的查询装置,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:接收请求查询指定第一主键ID区间内标识的符合业务条件的数据的查询请求,其中第一主键ID为存储有数据的数据表中的主键ID;在预设的区间索引表中确定与指定第一主键ID区间对应的多个第二主键ID,其中第二主键ID为区间索引表中的主键ID,并且区间索引表中的每一第二主键ID对应于数据表中的一个第一主键ID区间;将多个第二主键ID分配至多个进程;以及使用多个进程并行查询数据表中的指定第一主键ID区间内标识的数据,并得到符合业务条件的数据。
在本公开实施例中,首先在预设的区间索引表中确定与指定第一主键ID区间对应的多个第二主键ID,从而确定指定第一主键ID区间在数据表中的位置信息,然后将多个第二主键ID分配至多个进程,并使用多个进程并行查询数据表中的指定第一主键ID区间内标识的数据,并得到符合业务条件的数据。使得每次查询时间与数据表无关,由多个进程并行对数据表中的数据进行查询。从而在资金结算系统中,基于预设的二级的区间索引表确定指定第一主键ID区间在一级的数据表中的位置信息,并采用多进程多线程的方式并行查询数据表,实现在业务条件日益复杂的情况下,达到线性的高效查询亿级单表数据,并且做批量处理的能力,整个过程随着数据量的增大,处理速度可控可预测的目的。进而解决了现有技术中存在的资金结算系统中,由于无法抽象出合适的主键作为分片的规则,因此在单表达到预设的级别下,无法采取分库分表的方式来提高查询性能,从而导致数据查询效率低的技术问题。
附图说明
此处所说明的附图用来提供对本公开的进一步理解,构成本申请的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
图1是用于实现根据本公开实施例1所述的方法的计算设备的硬件结构框图;
图2是根据本公开实施例1所述的数据的查询系统的示意图;
图3是根据本公开实施例1的第一个方面所述的数据的查询方法的流程示意图;
图4是根据本公开实施例1的第一个方面所述的数据的查询方法的整体流程示意图;
图5是根据本公开实施例2所述的数据的查询装置的示意图;以及
图6是根据本公开实施例3所述的数据的查询装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本公开的技术方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本实施例,还提供了一种数据的查询方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的计算设备中执行。图1示出了一种用于实现数据的查询方法的计算设备的硬件结构框图。如图1所示,计算设备可以包括一个或多个处理器(处理器可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器、以及用于通信功能的传输装置。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算设备中的其他元件中的任意一个内。如本公开实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器可用于存储应用软件的软件程序以及模块,如本公开实施例中的数据的查询方法对应的程序指令/数据存储装置,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的数据的查询方法。存储器可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算设备的通信供应商提供的无线网络。在一个实例中,传输装置包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算设备的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算设备可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算设备中的部件的类型。
图2是根据本实施例所述的数据的查询系统的示意图。参照图2所示,该系统包括:服务器200以及终端设备100。其中服务器200为资金结算系统的服务器,终端设备100为负责资金结算的工作人员(例如,用户110)的终端设备。需要说明的是,系统中的服务器200以及终端设备100均可适用上面所述的硬件结构。
在上述运行环境下,根据本实施例的第一个方面,提供了一种数据的查询方法,该方法由图2中所示的服务器200实现。图3示出了该方法的流程示意图,参考图3所示,该方法包括:
S302:接收请求查询指定第一主键ID区间内标识的符合业务条件的数据的查询请求,其中第一主键ID为存储有数据的数据表中的主键ID;
S304:在预设的区间索引表中确定与指定第一主键ID区间对应的多个第二主键ID,其中第二主键ID为区间索引表中的主键ID,并且区间索引表中的每一第二主键ID对应于数据表中的一个第一主键ID区间;
S306:将多个第二主键ID分配至多个进程;以及
S308:使用多个进程并行查询数据表中的指定第一主键ID区间内标识的数据,并得到符合业务条件的数据。
正如前面背景技术中所述的,关系型数据库在通常的应用场景下,一般是单表达到1000w级别就要开始考虑分库分表,如按业务的水平拆分或者是按层次的垂直拆分。虽然目前有很多成熟的组件来完成这个任务,比如从客户端角度,有sharding-jdbc,从中间件角度,有Mycat。客户端软件对应用的侵入性很强,但是避免了中间件引入的复杂的运维成本。但是,同一个技术方案在不同的业务场景下,不会全部适用。比如在资金结算系统中,数据量大,数据以指令的形式存在,数据处理成功就可以归档。面对这样的业务场景,分库分表显然不是合适的解决方案,因为无法抽象出合适的主键作为分片的规则,同时分表之后的历史数据大部分都可以归档,显然没有达到分片命中的高效的查询性能。
针对上述背景技术中存在的问题,结合图2所示,与资金结算相关的数据预先存储于数据库的数据表中,数据表中的每一条结算数据与唯一的第一主键ID对应。在工作人员(例如,用户110)具有资金结算需求的情况下,可以采用第一主键ID区间和业务条件进行复合查询,例如向终端设备100输入指定第一主键ID区间(例如:第一主键ID区间的起始ID为10000和结束ID为100000)和具体的业务条件(例如:交易资金>500,交易时间为13:00~17:00),并通过终端设备100将请求查询起始ID为10000和结束ID为100000内标识的符合交易资金>500、交易时间为13:00~17:00的数据的查询请求发送至服务器200。此时,服务器200接收该查询请求。
进一步地,参照图4所示,服务器200预先读取存储有数据的数据表,生成按第一主键ID分区的区间索引表。即,第二主键ID为区间索引表中的主键ID,并且区间索引表中的每一第二主键ID对应于数据表中的一个第一主键ID区间。例如:区间索引表中的第二主键ID“20”对应于数据表中的起始ID为10000和结束ID为20000的第一主键ID区间,同样的第二主键ID“21”对应于数据表中的起始ID为20000和结束ID为30000第一主键ID区间,以此类推。因此服务器200需要在预设的区间索引表中确定与指定第一主键ID区间(起始ID为10000和结束ID为100000)对应的多个第二主键ID。例如:参照上述的,指定第一主键ID区间(起始ID为10000和结束ID为100000)对应的多个第二主键ID为20、21、22、23、24、25、26、27以及28。
进一步地,服务器200将多个第二主键ID(20、21、22、23、24、25、26、27以及28)分配至多个进程。例如但不限于:将第二主键ID“20”、“21”和“22”分配至进程1,将第二主键ID“23”、“24”和“25”分配至进程2,将第二主键ID“26”、“27”和“28”分配至进程3。最后,服务器200使用多个进程(进程1、进程2以及进程3)并行查询数据表中的起始ID为10000和结束ID为100000内标识的数据,并得到符合业务条件的数据。
从而,通过这种方式,首先在预设的区间索引表中确定与指定第一主键ID区间对应的多个第二主键ID,从而确定指定第一主键ID区间在数据表中的位置信息,然后将多个第二主键ID分配至多个进程,并使用多个进程并行查询数据表中的指定第一主键ID区间内标识的数据,并得到符合业务条件的数据。使得每次查询时间与数据表无关,由多个进程并行对数据表中的数据进行查询。从而在资金结算系统中,基于预设的二级的区间索引表确定指定第一主键ID区间在一级的数据表中的位置信息,并采用多进程多线程的方式并行查询数据表,实现在业务条件日益复杂的情况下,达到线性的高效查询亿级单表数据,并且做批量处理的能力,整个过程随着数据量的增大,处理速度可控可预测的目的。进而解决了现有技术中存在的资金结算系统中,由于无法抽象出合适的主键作为分片的规则,因此在单表达到预设的级别下,无法采取分库分表的方式来提高查询性能,从而导致数据查询效率低的技术问题。
可选地,接收请求查询指定第一主键ID区间内的符合业务条件的数据的查询请求的操作之前,还包括:利用单个进程单个线程,读取数据表中的第一主键ID;将读取到的第一主键ID拆分成均匀的若干份第一主键ID区间;以及将每一份第一主键ID区间写入区间索引表,使得区间索引表中的一个第二主键ID对应于数据表中的一个第一主键ID区间。
具体地,服务器200接收查询请求之前,需要利用单个进程单个线程的方式,读取数据表中的第一主键ID,然后将读取到的第一主键ID拆分成均匀的若干份第一主键ID区间。例如:将第一主键ID拆分成每份包含10000个第一主键ID的区间,即起始ID为0结束ID为10000的为一个区间,起始ID为10000结束ID为20000的为另一个区间,以此类推。最后,服务器200将每一份第一主键ID区间写入区间索引表中,使得区间索引表中的一个第二主键ID对应于数据表中的一个第一主键ID区间。例如但不限于,参照图4所示,区间索引表中的第二主键ID“20”对应于数据表中的起始ID为10000和结束ID为20000的第一主键ID区间,同样的第二主键ID“21”对应于数据表中的起始ID为20000和结束ID为30000第一主键ID区间,以此类推。通过这种方式,构建了二级的区间索引表,服务器200可以基于二级的区间索引表,确定某一第一主键ID区间在原始的数据表中的位置信息,进而达到快速查询数据的目的。
可选地,将多个第二主键ID分配至多个进程的操作,包括:基于预设的哈希算法,将多个第二主键ID均匀分配至多个进程。具体地,服务器200运行在集群模式下,区间索引表中的每个分片按照一致性哈希算法均匀的分散在每个进程中,即将多个第二主键ID均匀分配至多个进程,达到并行查询数据,从而大大提高查询效率的效果。
可选地,还包括:响应于接收到的对查询到的数据处理失败的失败信息,将处理失败的数据写入预设的异常日志表。具体地,如果某个区间的数据部分处理失败,则把这些处理失败的数据写入新的异常日志表中,特殊处理,不影响到主流程。
此外,参考图1所示,根据本实施例的第二个方面,提供了一种存储介质。存储介质包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
图5示出了根据本实施例所述的数据的查询装置500,该装置500与根据实施例1的第一个方面所述的方法相对应。参考图5所示,该装置500包括:接收模块510,用于接收请求查询指定第一主键ID区间内标识的符合业务条件的数据的查询请求,其中第一主键ID为存储有数据的数据表中的主键ID;确定模块520,用于在预设的区间索引表中确定与指定第一主键ID区间对应的多个第二主键ID,其中第二主键ID为区间索引表中的主键ID,并且区间索引表中的每一第二主键ID对应于数据表中的一个第一主键ID区间;分配模块530,用于将多个第二主键ID分配至多个进程;以及查询模块540,用于使用多个进程并行查询数据表中的指定第一主键ID区间内标识的数据,并得到符合业务条件的数据。
可选地,还包括:读取模块,用于在接收模块接收请求查询指定第一主键ID区间内的符合业务条件的数据的查询请求之前,利用单个进程单个线程,读取数据表中的第一主键ID;拆分模块,用于将读取到的第一主键ID拆分成均匀的若干份第一主键ID区间;以及第一写入模块,用于将每一份第一主键ID区间写入区间索引表,使得区间索引表中的一个第二主键ID对应于数据表中的一个第一主键ID区间。
可选地,分配模块530包括:分配子模块,用于基于预设的哈希算法,将多个第二主键ID均匀分配至多个进程。
可选地,还包括:第二写入模块,用于响应于接收到的对查询到的数据处理失败的失败信息,将处理失败的数据写入预设的异常日志表。
从而根据本实施例,首先在预设的区间索引表中确定与指定第一主键ID区间对应的多个第二主键ID,从而确定指定第一主键ID区间在数据表中的位置信息,然后将多个第二主键ID分配至多个进程,并使用多个进程并行查询数据表中的指定第一主键ID区间内标识的数据,并得到符合业务条件的数据。使得每次查询时间与数据表无关,由多个进程并行对数据表中的数据进行查询。从而在资金结算系统中,基于预设的二级的区间索引表确定指定第一主键ID区间在一级的数据表中的位置信息,并采用多进程多线程的方式并行查询数据表,实现在业务条件日益复杂的情况下,达到线性的高效查询亿级单表数据,并且做批量处理的能力,整个过程随着数据量的增大,处理速度可控可预测的目的。进而解决了现有技术中存在的资金结算系统中,由于无法抽象出合适的主键作为分片的规则,因此在单表达到预设的级别下,无法采取分库分表的方式来提高查询性能,从而导致数据查询效率低的技术问题。
实施例3
图6示出了根据本实施例所述的数据的查询装置600,该装置600与根据实施例1的第一个方面所述的方法相对应。参考图6所示,该装置600包括:处理器610;以及存储器620,与处理器610连接,用于为处理器610提供处理以下处理步骤的指令:接收请求查询指定第一主键ID区间内标识的符合业务条件的数据的查询请求,其中第一主键ID为存储有数据的数据表中的主键ID;在预设的区间索引表中确定与指定第一主键ID区间对应的多个第二主键ID,其中第二主键ID为区间索引表中的主键ID,并且区间索引表中的每一第二主键ID对应于数据表中的一个第一主键ID区间;将多个第二主键ID分配至多个进程;以及使用多个进程并行查询数据表中的指定第一主键ID区间内标识的数据,并得到符合业务条件的数据。
可选地,存储器620还用于为处理器610提供处理以下处理步骤的指令:接收请求查询指定第一主键ID区间内的符合业务条件的数据的查询请求的操作之前,利用单个进程单个线程,读取数据表中的第一主键ID;将读取到的第一主键ID拆分成均匀的若干份第一主键ID区间;以及将每一份第一主键ID区间写入区间索引表,使得区间索引表中的一个第二主键ID对应于数据表中的一个第一主键ID区间。
可选地,将多个第二主键ID分配至多个进程的操作,包括:基于预设的哈希算法,将多个第二主键ID均匀分配至多个进程。
可选地,存储器620还用于为处理器610提供处理以下处理步骤的指令:响应于接收到的对查询到的数据处理失败的失败信息,将处理失败的数据写入预设的异常日志表。
从而根据本实施例,首先在预设的区间索引表中确定与指定第一主键ID区间对应的多个第二主键ID,从而确定指定第一主键ID区间在数据表中的位置信息,然后将多个第二主键ID分配至多个进程,并使用多个进程并行查询数据表中的指定第一主键ID区间内标识的数据,并得到符合业务条件的数据。使得每次查询时间与数据表无关,由多个进程并行对数据表中的数据进行查询。从而在资金结算系统中,基于预设的二级的区间索引表确定指定第一主键ID区间在一级的数据表中的位置信息,并采用多进程多线程的方式并行查询数据表,实现在业务条件日益复杂的情况下,达到线性的高效查询亿级单表数据,并且做批量处理的能力,整个过程随着数据量的增大,处理速度可控可预测的目的。进而解决了现有技术中存在的资金结算系统中,由于无法抽象出合适的主键作为分片的规则,因此在单表达到预设的级别下,无法采取分库分表的方式来提高查询性能,从而导致数据查询效率低的技术问题。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据的查询方法,其特征在于,包括:
接收请求查询指定第一主键ID区间内标识的符合业务条件的数据的查询请求,其中所述第一主键ID为存储有所述数据的数据表中的主键ID;
在预设的区间索引表中确定与所述指定第一主键ID区间对应的多个第二主键ID,其中所述第二主键ID为所述区间索引表中的主键ID,并且所述区间索引表中的每一所述第二主键ID对应于所述数据表中的一个第一主键ID区间;
将所述多个第二主键ID分配至多个进程;以及
使用所述多个进程并行查询所述数据表中的所述指定第一主键ID区间内标识的数据,并得到符合所述业务条件的所述数据。
2.根据权利要求1所述的方法,其特征在于,接收请求查询指定第一主键ID区间内的符合业务条件的数据的查询请求的操作之前,还包括:
利用单个进程单个线程,读取所述数据表中的第一主键ID;
将读取到的所述第一主键ID拆分成均匀的若干份第一主键ID区间;以及
将每一份所述第一主键ID区间写入所述区间索引表,使得所述区间索引表中的一个第二主键ID对应于所述数据表中的一个第一主键ID区间。
3.根据权利要求1所述的方法,其特征在于,将所述多个第二主键ID分配至多个进程的操作,包括:基于预设的哈希算法,将所述多个第二主键ID均匀分配至所述多个进程。
4.根据权利要求1所述的方法,其特征在于,还包括:响应于接收到的对查询到的所述数据处理失败的失败信息,将处理失败的所述数据写入预设的异常日志表。
5.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时由处理器执行权利要求1至4中任意一项所述的方法。
6.一种数据的查询装置,其特征在于,包括:
接收模块,用于接收请求查询指定第一主键ID区间内标识的符合业务条件的数据的查询请求,其中所述第一主键ID为存储有所述数据的数据表中的主键ID;
确定模块,用于在预设的区间索引表中确定与所述指定第一主键ID区间对应的多个第二主键ID,其中所述第二主键ID为所述区间索引表中的主键ID,并且所述区间索引表中的每一所述第二主键ID对应于所述数据表中的一个第一主键ID区间;
分配模块,用于将所述多个第二主键ID分配至多个进程;以及
查询模块,用于使用所述多个进程并行查询所述数据表中的所述指定第一主键ID区间内标识的数据,并得到符合所述业务条件的所述数据。
7.根据权利要求6所述的装置,其特征在于,还包括:
读取模块,用于在所述接收模块接收请求查询指定第一主键ID区间内的符合业务条件的数据的查询请求之前,利用单个进程单个线程,读取所述数据表中的第一主键ID;
拆分模块,用于将读取到的所述第一主键ID拆分成均匀的若干份第一主键ID区间;以及
第一写入模块,用于将每一份所述第一主键ID区间写入所述区间索引表,使得所述区间索引表中的一个第二主键ID对应于所述数据表中的一个第一主键ID区间。
8.根据权利要求6所述的装置,其特征在于,所述分配模块包括:分配子模块,用于基于预设的哈希算法,将所述多个第二主键ID均匀分配至所述多个进程。
9.根据权利要求6所述的装置,其特征在于,还包括:第二写入模块,用于响应于接收到的对查询到的所述数据处理失败的失败信息,将处理失败的所述数据写入预设的异常日志表。
10.一种数据的查询装置,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
接收请求查询指定第一主键ID区间内标识的符合业务条件的数据的查询请求,其中所述第一主键ID为存储有所述数据的数据表中的主键ID;
在预设的区间索引表中确定与所述指定第一主键ID区间对应的多个第二主键ID,其中所述第二主键ID为所述区间索引表中的主键ID,并且所述区间索引表中的每一所述第二主键ID对应于所述数据表中的一个第一主键ID区间;
将所述多个第二主键ID分配至多个进程;以及
使用所述多个进程并行查询所述数据表中的所述指定第一主键ID区间内标识的数据,并得到符合所述业务条件的所述数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911001616.XA CN110781215A (zh) | 2019-10-21 | 2019-10-21 | 数据的查询方法、装置以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911001616.XA CN110781215A (zh) | 2019-10-21 | 2019-10-21 | 数据的查询方法、装置以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110781215A true CN110781215A (zh) | 2020-02-11 |
Family
ID=69384326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911001616.XA Pending CN110781215A (zh) | 2019-10-21 | 2019-10-21 | 数据的查询方法、装置以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110781215A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737257A (zh) * | 2020-06-16 | 2020-10-02 | 中国银行股份有限公司 | 数据查询方法及装置 |
CN112597162A (zh) * | 2020-12-25 | 2021-04-02 | 平安银行股份有限公司 | 数据集采集方法、系统、设备及存储介质 |
CN113568916A (zh) * | 2021-07-30 | 2021-10-29 | 中国银行股份有限公司 | 数据表切分方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289508A (zh) * | 2011-08-31 | 2011-12-21 | 上海西本网络科技有限公司 | 分布式缓存阵列及其数据查询方法 |
CN106383826A (zh) * | 2015-07-29 | 2017-02-08 | 阿里巴巴集团控股有限公司 | 数据库查询方法和装置 |
CN107301178A (zh) * | 2016-04-14 | 2017-10-27 | 阿里巴巴集团控股有限公司 | 数据查询处理方法、装置及系统 |
CN107515882A (zh) * | 2016-06-17 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 数据查询方法及装置 |
CN110019339A (zh) * | 2017-11-20 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 一种数据查询方法和系统 |
-
2019
- 2019-10-21 CN CN201911001616.XA patent/CN110781215A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289508A (zh) * | 2011-08-31 | 2011-12-21 | 上海西本网络科技有限公司 | 分布式缓存阵列及其数据查询方法 |
CN106383826A (zh) * | 2015-07-29 | 2017-02-08 | 阿里巴巴集团控股有限公司 | 数据库查询方法和装置 |
CN107301178A (zh) * | 2016-04-14 | 2017-10-27 | 阿里巴巴集团控股有限公司 | 数据查询处理方法、装置及系统 |
CN107515882A (zh) * | 2016-06-17 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 数据查询方法及装置 |
CN110019339A (zh) * | 2017-11-20 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 一种数据查询方法和系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737257A (zh) * | 2020-06-16 | 2020-10-02 | 中国银行股份有限公司 | 数据查询方法及装置 |
CN112597162A (zh) * | 2020-12-25 | 2021-04-02 | 平安银行股份有限公司 | 数据集采集方法、系统、设备及存储介质 |
CN112597162B (zh) * | 2020-12-25 | 2023-08-08 | 平安银行股份有限公司 | 数据集采集方法、系统、设备及存储介质 |
CN113568916A (zh) * | 2021-07-30 | 2021-10-29 | 中国银行股份有限公司 | 数据表切分方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102982141B (zh) | 一种实现分布式数据库代理的方法及装置 | |
CN110781215A (zh) | 数据的查询方法、装置以及存储介质 | |
CN110019125B (zh) | 数据库管理的方法和装置 | |
CN109479053B (zh) | 用于区块链网络的节点发现和自愈的方法和系统 | |
EP3702915B1 (en) | Data processing method and device, storage medium, processor, and system | |
CN110136209B (zh) | 一种摄像头标定方法、装置及计算机可读存储介质 | |
CN111221840A (zh) | 数据处理方法及装置、数据缓存方法、存储介质、系统 | |
CN110688146A (zh) | 对监控系统进行动态配置的方法、装置以及存储介质 | |
CN111611249A (zh) | 数据管理方法、装置、设备及存储介质 | |
CN110704198A (zh) | 数据操作方法、装置、存储介质以及处理器 | |
CN114398397A (zh) | 数据处理方法、装置、存储介质以及系统 | |
CN110858201A (zh) | 数据处理方法及系统、处理器、存储介质 | |
CN111008220A (zh) | 数据源的动态识别方法及装置、存储介质和电子装置 | |
CN113312159A (zh) | Kubernetes集群的负载均衡的处理方法、装置及存储介质 | |
CN112667642A (zh) | 一种信息生成方法及装置、电子设备 | |
CN110609781A (zh) | 接口测试方法、装置以及存储介质 | |
CN112486583A (zh) | 配置参数的系统、方法、装置以及存储介质 | |
CN115563086B (zh) | 数据库的数据修改方法及装置 | |
CN112581069A (zh) | 处理任务的系统、方法、装置以及存储介质 | |
CN110597574A (zh) | 账户的匹配方法、装置以及存储介质 | |
CN112311904A (zh) | 更新域名记录的方法、装置、存储介质以及域名管理系统 | |
CN110708576A (zh) | 收视数据处理方法、装置以及存储介质 | |
CN110874352A (zh) | 数据库管理方法及系统 | |
CN110688231B (zh) | 读写请求统计信息的处理方法、装置和系统 | |
CN116842031B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200211 |