CN117785968A - 数据处理方法、装置、设备以及存储介质 - Google Patents

数据处理方法、装置、设备以及存储介质 Download PDF

Info

Publication number
CN117785968A
CN117785968A CN202211160239.6A CN202211160239A CN117785968A CN 117785968 A CN117785968 A CN 117785968A CN 202211160239 A CN202211160239 A CN 202211160239A CN 117785968 A CN117785968 A CN 117785968A
Authority
CN
China
Prior art keywords
database
data
database connection
target
processed
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
Application number
CN202211160239.6A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211160239.6A priority Critical patent/CN117785968A/zh
Publication of CN117785968A publication Critical patent/CN117785968A/zh
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

本申请实施例公开了一种数据处理方法、装置、设备以及存储介质,可适用于数据库以及区块链等领域。该方法包括:获取针对待处理数据的数据操作语句;基于数据操作语句,从各数据库的所有数据表中确定待处理数据对应的目标数据表、以及从各数据库中确定目标数据表对应的目标数据库;从共享数据库连接池中确定出可用数据库连接,以及基于目标数据表的表信息和目标数据库的库信息生成可执行操作语句,共享数据库连接池包括至少一个数据库连接,各数据库共用共享数据库连接池中的数据库连接;基于可用数据库连接执行可执行操作语句以对待处理数据进行处理。采用本申请实施例,可提升数据库连接的利用率以及数据处理效率适用性高。

Description

数据处理方法、装置、设备以及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、设备以及存储介质。
背景技术
为了适应海量数据的存储需求,目前采用分库分表的存储方式对不同业务的海量数据进行存储。在分库分表的存储模式下,现有技术通常会为每个数据库都会创建一个数据库连接池,并且对每个数据库连接池创建一定数量的数据库连接。但是为了迎合数据存储量较大的应用场景(如存储多个电商平台的订单数据)往往需要增加数据库的数量,从而数据库连接池的数量也会随之增加,进而直接造成数据库连接的数量急剧增加。
在每个业务对象所能支持的数据库连接具有一定数量限制的情况下,所有数据库连接池中的所有数据库连接的数量会很容易超过每个业务对象所能支持的数量上限,进而导致业务对象无法基于数据库连接进行数据处理而降低数据处理效率。并且每个业务对象在实际应用中也不会使用较多的数据库连接,因而数据库连接的急剧增加也会在一定程度上造成连接资源的浪费。
发明内容
本申请实施例提供一种数据处理方法、装置、设备以及存储介质,可提升数据库连接的利用率以及数据处理效率,适用性高。
一方面,本申请实施例提供一种数据处理方法,该方法包括:
获取针对待处理数据的数据操作语句;
基于上述数据操作语句,从各数据库的所有数据表中确定上述待处理数据对应的目标数据表、以及从各上述数据库中确定上述目标数据表对应的目标数据库;
从共享数据库连接池中确定出可用数据库连接,以及基于上述目标数据表的表信息和上述目标数据库的库信息生成可执行操作语句,上述共享数据库连接池包括至少一个数据库连接,各上述数据库共用上述共享数据库连接池中的数据库连接;
基于上述可用数据库连接执行上述可执行操作语句以对上述待处理数据进行处理。
另一方面,本申请实施例提供了一种数据处理装置,该装置包括:
语句获取模块,用于获取针对待处理数据的数据操作语句;
信息确定模块,用于基于上述数据操作语句,从各数据库的所有数据表中确定上述待处理数据对应的目标数据表、以及从各上述数据库中确定上述目标数据表对应的目标数据库;
上述信息确定模块,用于从共享数据库连接池中确定出可用数据库连接,以及基于上述目标数据表的表信息和上述目标数据库的库信息生成可执行操作语句,上述共享数据库连接池包括至少一个数据库连接,各上述数据库共用上述共享数据库连接池中的数据库连接;
语句执行模块,用于基于上述可用数据库连接执行上述可执行操作语句以对上述待处理数据进行处理。
另一方面,本申请实施例提供了一种电子设备,包括处理器和存储器,该处理器和存储器相互连接;
上述存储器用于存储计算机程序;
上述处理器被配置用于在调用上述计算机程序时,执行本申请实施例提供的数据处理方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现本申请实施例提供的数据处理方法。
另一方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,上述计算机程序被处理器执行时实现本申请实施例提供的数据处理方法。
在本申请实施例中,通过共享数据库连接池可避免为分库分表数据存储模式下的每个数据库创建数据库连接池,从而可在不影响业务对象访问数据库的同时减少数据库连接的数量,避免连接资源的浪费。并且在数据库数量增加的情况下也无需另行创建新的数据库连接池,从而避免数据库连接的数量超过业务对象可接受的数据库连接数量上限而导致待处理数据无法处理或与延迟等问题,有效提升数据处理效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的网络结构示意图;
图2是本申请实施例提供的数据处理方法的流程示意图;
图3是本申请实施例提供的创建共享数据库连接池的场景示意图;
图4是本申请实施例提供的初始化数据库连接池的一场景示意图;
图5是本申请实施例提供的初始化数据库连接池的另一场景示意图;
图6是本申请实施例提供的数据库扩容的一场景示意图;
图7是本申请实施例提供的数据库扩容的另一场景示意图;
图8是本申请实施例提供的数据处理方法的流程框架示意图;
图9是本申请实施例提供的数据处理装置的结构示意图;
图10是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供的数据处理方法可适用于任何基于分库分表数据存储模式的数据处理场景中,如在将不同电商平台的订单信息采用分库分表存储模式进行存储,或者将不同业务部分的业务数据采用分库分表数据存储进行存储以便于对相关数据进行管理的数据处理场景,具体应用场景可基于实际应用场景需求确定,在此不做限制。
参见图1,图1是本申请实施例提供的网络结构示意图。如图1所示,数据库连接池12为共享数据库连接池,分库分表场景下的各数据库可共用数据库连接池12中的数据库连接。在接收到业务对象通过业务终端11发起的针对待处理数据的数据操作语句之后,可从所有数据库(如数据库131和数据库132)的所有数据表中确定待处理数据对应的目标数据表、以及从所有数据库中确定出目标数据表对应的目标数据库。
进一步可从数据库连接池12中确定出可用数据库连接,并基于目标数据表的表信息和目标数据库的库信息,将数据操作语句改写为可执行操作语句,从而可基于确定出的可用数据库连接执行可执行操作语句以访问目标数据库中的目标数据表以进行相应的数据处理。
其中,分库分表是指将大量数据分散到多个数据库中,使每个数据库中数据量小响应速度快,以此来提升数据库整体性能。
其中,本申请实施例中分库分表存储模式中的数据库可视为电子化的文件柜——存储电子文件的处所,业务对象可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个业务对象共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
其中,本申请实施例涉及的数据处理方法可以由数据库管理设备或数据库管理系统(Database Management System,DBMS)等执行,DBMS是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型进行分类,例如关系式或者可扩展标记语言(Extensible Markup Language,XML)等,或者可依据所支持的计算机类型进行分类,例如服务器群集、移动电话,或者可依据所用查询语言进行分类,例如结构化查询语言(Structured Query Language,SQL)、XQuery等,或者可依据性能冲量重点进行分类,例如最大规模、最高运行速度等,在此不做限制。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
其中,本申请实施例中的共享数据库连接池可基于一个或者多个服务器实现,用于提供访问数据库时所需的连接资源。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器等,具体可基于实际应用场景需求确定,在此不做限制。
其中,本申请实施例中的业务终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能语音交互设备(例如智能音箱)、可穿戴电子设备(例如智能手表)、车载终端、智能家电(例如智能电视)、AR/VR设备等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
参见图2,图2是本申请实施例提供的数据处理方法的流程示意图。如图1所示,本申请实施例提供的数据处理方法具体可包括如下步骤:
步骤S21、获取针对待处理数据的数据操作语句。
在一些可行的实施方式中,数据操作语句为业务对象发起的用于对待处理数据进行处理的相关语句,如数据查询语句等,其可以为SQL语句也可以为其他语言的操作语句,在此不做限制。并且数据操作语句还可以携带于业务对象发起的数据库访问请求、数据操作请求等相关请求之中。
其中,待处理数据可以为业务对象需要删除数据,或者为业务对象需要删除的数据,或者为业务对象需要查询的数据等等,具体可基于实际应用场景需求确定,如待处理数据还可以为业务对象需要存储的数据等,在本申请实施例中不做限制。
步骤S22、基于数据操作语句,从各数据库的所有数据表中确定出待处理数据对应的目标数据表、以及从各数据库中确定目标数据表对应的目标数据库。
在一些可行的实施方式中,在确定目标数据表和目标数据库时,可基于数据操作语句确定处理数据的数据描述信息。
其中,待处理数据的数据描述信息可以为待处理数据所对应的表信息和的库信息等用于直至待处理数据的存储位置的相关信息。在待处理数据的数据描述信息包括待处理数据上述表信息和库信息的情况下,可直接将表信息对应的数据表确定为待处理数据对应的目标数据表,将库信息对应的数据库确定为目标数据表对应的目标数据库。
例如,数据操作语句用于查询数据库1的数据表2所存储的数据,则待处理数据即为数据库1的数据表2中所存储的数据,其数据描述信息包括数据表2(表信息)和数据库1(库信息),从而可直接基于数据描述信息将数据表2确定为待处理数据对应的目标数据表,将数据库1确定为目标数据表对应的目标数据库。
其中,待处理数据的数据描述信息还可以为待处理数据的数据索引等其他对待处理数据进行描述的相关信息。
其中,上述数据索引用于指示待处理数据的数据范围,如该数据索引可以为姓名索引、平台索引、学校索引等等,用于指示待处理数据为该姓名索引对应的学生的学习数据、该平台索引对应的电商平台的销售数据以及该学校索引对应的学校的教学数据等等,数据索引具体同样可基于实际应用场景需求确定,在此不做限制。
在待处理数据的数据描述信息包括待处理数据的数据索引的情况下,可基于待处理数据的数据索引从各数据库的所有数据表中确定出待处理数据对应的目标数据表。
在基于数据索引确定出待处理数据对应的目标数据表之后,可基于目标数据表的表信息从各数据库中确定目标数据表对应的目标数据库。
其中,表信息可以为表索引。在确定待处理数据对应的目标数据表时,可基于分表规则M%N确定待处理数据对应的目标数据表。
其中,M为数据索引,N为各数据库的所有数据表的数量。如数据索引为32,每个数据库中包括32个数据表,在数据库数量同样为32的情况下,则N为1024,则目标数据表对应的表索引即为32%1024=32,即表索引为32的数据表为待处理数据对应的目标数据表。
在确定目标数据表对应的目标数据库时,可基于分库规则确定表索引为32的数据表所在的数据库,并将其确定为目标数据表对应的目标数据库。其中,分库规则可以为M%N/H。H为数据库的数量。
例如,数据操作语句用于查询索引为32的电商平台的订单数据,则索引为32的电商平台的订单数据即为待处理数据,此时可将电商平台的索引(32)确定为待处理数据的数据索引,进而基于电商平台的索引(32)从各数据库的所有数据表中确定出待处理数据对应的目标数据表,也即确定出存储索引为32的电商平台的订单数据的数据表。在确定出目标数据表之后,可基于目标数据表的表信息(如表索引)从各数据库中确定出目标数据表对应的目标数据库,也即确定出存储索引为32的电商平台的订单数据的数据表所在的数据库。
步骤S23、从共享数据库连接池中确定出可用数据库连接,以及基于目标数据表的表信息和目标数据库的库信息生成可执行操作语句。
在一些可行的实施方式中,共享数据库连接池包括至少一个数据库连接,且所有数据库共用共享数据库连接池中的数据库连接,即通过共享数据库连接池中的任一数据库连接可访问任意一个数据库。
其中,在获取针对待处理数据的数据操作语句以对待处理数据进行处理之前,可为各数据库创建共享数据库连接池,并为共享数据库连接池建立预设数量的数据库连接。
其中,上述预设数量的数据库连接为初始化共享数据库连接池时一并创建的初始可用的数据库连接。
其中,在创建共享数据库连接池时,可为各数据库创建一个逻辑数据库,并创建该逻辑数据库对应的数据库连接池,在为该逻辑数据库对应的数据库连接池创建预设数量的数据库连接之后可将该逻辑数据库对应的数据库连接池确定为各数据库对应的共享数据库连接池。
其中,本申请实施例中用于存储数据的数据库为物理数据库。
进一步地,在为各数据库创建共享数据库连接池且为共享数据库连接池建立预设数量的数据库连接之后,可建立数据库与共享数据库连接池的映射关系,以使各数据库可以共用共享数据库连接池中的所有数据库连接。
其中,在建立各数据库与共享数据库连接池的映射关系时,可采用MAP数据结构(map<String.DataSource>)进行建立,如以K-V键值对的形式建立每个数据库与共享数据库连接池的映射关系。
其中,key为库信息(如库索引),value为共享数据库连接池的标识信息。在将各数据库对应的键值对进行缓存之后可建立各数据库与共享数据库连接池的映射关系。
其中,DataSource表示共享数据库连接池,String表示数据类型。
在任一数据库(如order_1)与共享数据库连接池具有映射关系的情况下,可基于连接池路由规则dataSourceMap,get(“order_1”)表示该数据库可从共享数据库连接池获取并使用数据库连接。
下面结合图3对初始化共享数据库连接池的过程进行进一步说明。图3是本申请实施例提供的创建共享数据库连接池的场景示意图,如图3所示,在未创建共享数据库连接池的情况下,当启动数据库管理系统之后可加载分库分表组件以基于分库分表组件获取分库分表配置信息,从而基于分库分表配置信息确定用于存储数据的各个物理数据库,如用于存储订单数据的数据库order1、数据库order2,…,数据库order31共32个物理数据库。
基于此,通过分库分表组件可基于分库分表配置信息初始化共享数据库连接池,也即为各物理数据库(如数据库order1、数据库order2,…,数据库order31)创建一个逻辑数据库(如数据库order),并创建数据库order对应的数据库连接池,以将该数据库连接池作为各物理数据库对应共享数据库连接池。
其中,在创建共享数据库连接池之后,可初始化共享数据库连接池的数据库连接池,即为共享数据库连接池创建预设数量的数据库连接。
同时可建立各物理数据库与共享数据库连接池的映射关系,并将各物理数据库与共享数据库连接池的映射关系以MAP数据结构(map<String.DataSource>)进行存储,以使各物理数据库可以共用共享数据库连接池中的所有数据库连接。
其中,在创建共享数据库连接池时,还可一并确定共享数据库连接池的最大数据库连接数,以基于最大数据库连接数针对各物理数据库的访问进行调度。
其中,各物理数据库和上述逻辑数据库可具有独立的IP地址,以作为各物理数据库以及共享数据库连接池的访问基础,具体可基于实际应用场景需求确定,在此不做限制。
其中,各数据库与共享数据库连接池的映射关系可存储与本地缓存中,也可存储与区块链或者云存储之中,具体可基于实际应用场景需求确定,在此不做限制。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块。在本申请中,区块链中的每一个数据块均可存储各数据库与共享数据库连接池的映射关系。云存储是在云计算概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同存储各数据库与共享数据库连接池的映射关系。
其中,在接收针对待处理数据的数据操作语句之前,还可预先获取分库分表配置信息,基于分库分表配置信息确定分库规则与分表规则,进而基于确定出的分库规则、分表规则以及待处理数据的数据描述信息,确定待处理数据对应的目标数据表以及目标数据表对应的目标数据库。
在创建共享数据库连接池之后,可在不影响业务对象访问数据库的同时减少数据库连接的数量,避免连接资源的浪费。如图4所示,图4是本申请实施例提供的初始化数据库连接池的一场景示意图。如图4所示,若存在32个数据库,则基于分库分表组件初始化数据库连接池时会为每个数据库创建一个数据库连接池,即得到32个数据库连接池。在每个数据库连接池最多可包括20个数据库连接的情况下则一共最多可存在640个数据库连接。而在创建共享数据库连接池之后,共享数据库连接池中的数据库连接的数量远远小于640个,从而减少数据库连接的数量避免连接资源的浪费。如图5所示,图5是本申请实施例提供的初始化数据库连接池的另一场景示意图。如图5所示,基于本申请实施例提供的方法创建共享数据库连接池之后,共享数据库连接池中的数据库连接的上限为20,可极大降低数据库连接的数量减少连接资源的浪费。
同时在需要对数据库扩容(如增加数据库的数量)的情况下,无需再为新增的数据库创建新的数据库连接池,从而避免数据库连接的数量超过业务对象可接受的数据库连接数量上限,有效保障业务对象的业务数据效率。如图6所示,图6是本申请实施例提供的数据库扩容的一场景示意图。如图6所示,若原先存在2个数据库,则每个数据库对应一个数据库连接池,在每个数据库连接池最多可包括20个数据库连接的情况下则一共最多可存在40个数据库连接。在需要将数据库数量扩展至n(大于2)个时,此时存在n个数据库连接池,则一共最多可存在20n个数据库连接池。当n足够大时数据库连接池的数量会急剧增加。如图7所示,图7是本申请实施例提供的数据库扩容的另一场景示意图。在需要将数据库的数量由2个扩容至n个时,在新创建n-2个数据库之后,可建立新创建的各数据库与共享数据库连接池的映射关系即可使新创建的各数据库与原有的数据库共用共享数据库连接池中的数据库连接,从而无需再增加新的数据库连接池。
在一些可行的实施方式中,在对数据库中的任何数据进行处理时,需要基于数据库连接才能实现对数据库的访问。因此在对待处理数据进行处理之前,还需要从共享数据库连接池中确定出可用数据库连接,进而基于可用数据库连接访问待处理数据对应的目标数据库以及目标数据表以对待处理数据进行处理。
具体地,在从共享数据库连接池中确定可用数据库连接时,可确定共享数据库连接池中的各数据库连接中是否存在连接状态处于空闲状态的数据库连接。若共享数据库连接池中存在连接状态处于空闲状态的数据库连接,则可将任一连接状态处于空闲状态的数据库连接确定为可用数据库连接。
若共享数据库连接池中不存在连接状态处于空闲状态的数据库连接,则确定共享数据库连接池中的数据库连接的数量是否小于共享数据库连接池对应的数据库连接数量上限。
若共享数据库连接池中的数据库连接的数量小于共享数据库连接池对应的数据库连接数量上限,则为共享数据库连接池创建新的数据库连接并将新的数据库连接确定为可用数据库连接。
若共享数据库连接池中的数据库连接的数量达到共享数据库连接池对应的数据库连接数量上限,则可持续等待直至共享数据库连接池中出现连接状态处于空闲状态的数据库连接时将其确定为可用数据库连接。
其中,在基于可用数据库连接对待处理数据进行处理的过程中,将可用数据库连接的连接状态置为非空闲状态以表示该数据库连接当前不能被其他业务对象使用。在完成对待处理数据的处理之后将该数据库连接的连接状态重新置为空闲状态以对其他数据进行处理时再次使用该数据库连接。
在一些可行的实施方式中,由于共享数据库连接池实际为各数据库对应的逻辑数据库的数据库连接池,因此若直接基于数据操作语句对目标数据库中的目标数据表的数据进行处理时,则基于现有的数据库访问机制则会直接访问该逻辑数据库从而无法对待处理数据进行处理。
例如,数据操作语句(select*from t_order_11where saas_id=22)用于查询索引为22的电商平台在数据表t_order_11中的订单数据,由于共享数据库连接池实际为逻辑数据库(假设为order)的数据库连接池,因此在具体执行该数据操作语句时会执行从order中查询数据表t_order_11中的订单数据,从而导致数据查询失败。
基于此,在创建共享数据库连接池的情况下,针对待处理数据的数据操作语句实际为不可执行的操作语句。因此,在确定出目标数据库和目标数据表之后,可基于目标数据表的表信息和目标数据库的库信息生成可访问目标数据库中目标数据表以对待处理数据进行处理的可执行操作语句。
其中,目标数据表的表信息可以为目标数据表的表名,也可称为目标数据表的索引信息,在此不做限制。
同理,目标数据库的库信息可以为目标数据库的库名,也可称为目标数据库的库索引信息,在此不做限制。
具体地,可基于目标数据表的表信息和目标数据库的库信息进行拼接,得到待处理数据对应的地址字段,该地址字段用于指示待处理数据所对应的目标数据表和目标数据库,进而基于数据操作语句中的操作参数以及地址地段生成可操作语句。
例如,数据操作语句用于查询索引为32的电商平台的订单数据,且基于数据操作语句确定出的索引为32的电商平台的订单数据对应的目标数据表为t_order_32、且目标数据表对应的目标数据库为order_1,则将目标数据库的库信息order_1和目标数据表的表信息t_order_32进行拼接得到对应的地址字段order_1.t_order_32。
由于数据操作语句用于查询索引为32的电商平台的订单数据,因此基于该地址字段生成的可执行操作语句用于查询数据库order_1中数据表t_order_32中的订单数据。
其中,可将目标数据库的库信息拼接于目标数据表的表信息之前得到待处理数据对应的地址字段。
或者,可对数据操作语句进行解析得到包括目标数据表的表信息的初始操作语句,并在初始操作语句中的表信息之前添加目标数据库的库信息,从而得到可执行操作语句。
例如,数据操作语句(select*from t_order where saas_id=32)用于查询索引为32的电商平台的订单数据,在基于数据操作语句确定出的索引为32的电商平台的订单数据对应的目标数据表为t_order_32、且目标数据表对应的目标数据库为order_1之后,可对数据操作语句进行改写得到包括表信息的初始操作语句(select*from t_order_32wheresaas_id=32),即用于查询索引为32的电商平台在数据表t_order_32中的订单数据的初始操作语句。
进一步地,可在初始操作语句的表信息(t_order_32)之前添加目标数据库的库信息(order_1),得到用于查询索引为32的电商平台在数据库order_1中的数据表t_order_32中的订单数据的可执行操作语句(select*from order_1.t_order_32where saas_id=32)。
其中,saas是Software-as-a-Service的缩写名称,意思为软件即服务,即通过网络提供软件服务。saas平台供应商将应用软件统一部署在自己的服务器上,业务对象可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,并通过互联网获得saas平台供应商提供的服务。
在本申请实施例中,saas可以视为电商平台服务。
在本申请实施例中,基于目标数据表的表信息和目标数据库的库信息生成可执行操作语句的过程可基于分库分表组件实现,如可以为shardingjdbc组件,也可以为其他组件,具体可基于实际应用场景需求确定,在此不做限制。
以shardingjdbc组件为例,shardingjdbc组件在确定最终的可执行操作语句时所采用的算法包括单片算法、复合算法以及强制路由算法。
其中,在shardingjdbc支持的语言为SQL的情况下,基于单片算法生成可执行操作语句时不会拼接库信息。因此,在共享数据库连接池的机制下,对于(select*from t_order_32where saas_id=32)而言,为了达到共享数据库连接池的目的,可通过shardingjdbc组件的SPI扩展点对数据操作语句进行解析后获取到目标数据表的表信息和目标数据库的库信息,然后在表信息前拼接上库信息,比如在表信息(t_order_32)之前拼接库信息(order_1)得到order_1.t_order_32,进而基于拼接后的相关信息生成最终的可执行操作语句(select*from order_1.t_order_32where saas_id=32)。
其中,在shardingjdbc支持的语言为SQL的情况下,基于复合算法或强制路由算法生成可执行操作语句时同样不会拼接库信息。因此,在共享数据库连接池的机制下,对于(select*from t_order_32where saas_id=32)而言,为了达到共享数据库连接池的目的,可通过shardingjdbc组件的SPI扩展点对数据操作语句进行解析后获取到目标数据表的表信息和目标数据库的库信息,然后在表信息前拼接上库信息,比如在表信息(t_order_32)之前拼接库信息(order_1)得到order_1.t_order_32,进而基于拼接后的相关信息生成最终的可执行操作语句(select*from order_1.t_order_32where saas_id=32)。需要注意的是,在拼接库信息时,需要在执行代码中将表信息之前的分割符号(QuoteCharacter)替换为空(NONE),以避免在执行可执行操作语句时在此在表信息前拼接逻辑数据库的库信息而导致执行失败。
步骤S24、基于可用数据库连接执行可执行操作语句以对待处理数据进行处理。
在一些可行的实施方式中,在从共享数据库连接池确定出可用数据库连接、以及确定出可执行操作语句之后,可执行可操作语句以对待处理数据间处理。
其中,可用数据库连接用于提供访问目标数据库中目标数据表的连接资源。
例如,若可执行操作语句用于查询数据库1中数据表2的订单数据,则可在执行可执行操作语句过程中基于可用数据库连接访问数据库1中的数据表2并返回数据表2的订单数据。
例如,若可执行操作语句用于删除查询数据库1中数据表2的订单数据,则可在执行可执行操作语句过程中基于可用数据库连接访问数据库1中的数据表2并删除数据表2的订单数据。
例如,若可执行操作语句用于向查询数据库1中数据表2中添加部分订单数据,则可在执行可执行操作语句过程中基于可用数据库连接访问数据库1中的数据表2并向数据表2中添加待添加的订单数据。
下面结合图8对本申请实施例提供的数据处理方法进行进一步说明。图8是本申请实施例提供的数据处理方法的流程框架示意图。如图8所示,在接收到业务对象发送的用于查询索引为32的电商平台的订单数据的数据操作语句(select*from t_order wheresaas_id=32)之后,可对该数据操作语句进行库表计算以确定出需要查询的订单数据所对应的目标数据表以及目标数据表对应的目标数据库。
若目标数据表的表信息(表名)为t_order_32,目标数据库的库信息(库名)为order_1,则可基于确定出的表信息和库信息将数据操作语句该写为可执行操作语句(select*from order_1.t_order_32where saas_id=32),该可执行操作语句用于查询数据库order_1中的数据表t_order_32所存储的索引为32的电商平台的订单数据。
进一步在基于数据库与共享连接池的映射关系确定目标数据库order_1可使用共享数据库连接池中的数据库连接的情况下,从共享连接池中确定出连接状态处于空闲状态的可用数据库连接,并基于可用数据库连接执行可执行操作语句以从数据库order_1中的数据表t_order_32查询得到索引为32的电商平台的订单数据。
基于本申请实施例提供的数据处理方法,可实现分库分表存储模式下各数据库的数据库连接池的共享,从而提升数据库连接的利用率,降低数据库连接的数量。同时也可避免数据库扩容使数据库连接数量急剧增加而导致数据处理效率降低甚至不可用的情况,适用性高。
参见图9,图9是本申请实施例提供的数据处理装置的结构示意图。本申请实施例提供的数据处理装置包括:
语句获取模块91,用于获取针对待处理数据的数据操作语句;
信息确定模块92,用于基于上述数据操作语句,从各数据库的所有数据表中确定上述待处理数据对应的目标数据表、以及从各上述数据库中确定上述目标数据表对应的目标数据库;
上述信息确定模块92,用于从共享数据库连接池中确定出可用数据库连接,以及基于上述目标数据表的表信息和上述目标数据库的库信息生成可执行操作语句,上述共享数据库连接池包括至少一个数据库连接,各上述数据库共用上述共享数据库连接池中的数据库连接;
语句执行模块93,用于基于上述可用数据库连接执行上述可执行操作语句以对上述待处理数据进行处理。
在一些可行的实施方式中,获取上述数据操作语句之前,上述装置还包括创建模块94,上述创建模块94用于:
创建共享数据库连接池,并为上述共享数据库连接池建立预设数量的数据库连接;
建立各上述数据库与上述共享数据库连接池的映射关系,以使各上述数据库共用上述共享数据库连接池中的数据库连接。
在一些可行的实施方式中,上述信息确定模块92,用于:
基于上述数据操作语句确定上述待处理数据的数据描述信息;
基于上述数据描述信息从各数据库的所有数据分表中确定上述待处理数据对应的目标数据表;
基于上述目标数据表的表信息从各上述数据库中确定上述目标数据表对应的目标数据库。
在一些可行的实施方式中,上述信息确定模块92,用于:
将上述目标数据表的表信息和上述目标数据库的库信息进行拼接,得到上述待处理数据对应的地址字段;
基于上述地址字段对上述数据操作语句进行改写得到可执行操作语句。
在一些可行的实施方式中,上述信息确定模块92,用于:
确定共享数据库连接池中连接状态处于空闲状态的数据库连接;
将任一连接状态处于空闲状态的数据库连接确定为可用数据库连接。
在一些可行的实施方式中,上述信息确定模块92,还用于:
响应于上述共享数据库连接池中不存在连接状态处于空闲状态的数据库连接,且上述共享数据库连接池中的数据库连接的数量小于数据库连接数量上限,创建新的数据库连接并将上述新的数据库连接确定为可用数据库连接。
在一些可行的实施方式中,上述信息确定模块92,还用于:
在基于上述可用数据库连接对上述待处理数据进行处理过程中,将上述可用数据库连接的连接状态置为非空闲状态,并在完成对上述待处理数据的处理之后将上述可用数据库连接的连接状态置为空闲状态。
具体实现中,上述装置可通过其内置的各个功能模块执行如上述图2中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
参见图10,图10是本申请实施例提供的电子设备的结构示意图。如图10所示,本实施例中的电子设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述电子设备1000还可以包括:对象接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,对象接口1003可以包括显示屏(Display)、键盘(Keyboard),可选对象接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非易失性存储器(non-volatile memory,NVM),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、对象接口模块以及设备控制应用程序。
在图10所示的电子设备1000中,网络接口1004可提供网络通讯功能;而对象接口1003主要用于为对象提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取针对待处理数据的数据操作语句;
基于上述数据操作语句,从各数据库的所有数据表中确定上述待处理数据对应的目标数据表、以及从各上述数据库中确定上述目标数据表对应的目标数据库;
从共享数据库连接池中确定出可用数据库连接,以及基于上述目标数据表的表信息和上述目标数据库的库信息生成可执行操作语句,上述共享数据库连接池包括至少一个数据库连接,各上述数据库共用上述共享数据库连接池中的数据库连接;
基于上述可用数据库连接执行上述可执行操作语句以对上述待处理数据进行处理。
在一些可行的实施方式中,获取上述数据操作语句之前,上述处理器1001还用于:
创建共享数据库连接池,并为上述共享数据库连接池建立预设数量的数据库连接;
建立各上述数据库与上述共享数据库连接池的映射关系,以使各上述数据库共用上述共享数据库连接池中的数据库连接。
在一些可行的实施方式中,上述处理器1001用于:
基于上述数据操作语句确定上述待处理数据的数据描述信息;
基于上述数据描述信息从各数据库的所有数据分表中确定上述待处理数据对应的目标数据表;
基于上述目标数据表的表信息从各上述数据库中确定上述目标数据表对应的目标数据库。
在一些可行的实施方式中,上述处理器1001用于:
将上述目标数据表的表信息和上述目标数据库的库信息进行拼接,得到上述待处理数据对应的地址字段;
基于上述地址字段对上述数据操作语句进行改写得到可执行操作语句。
在一些可行的实施方式中,上述处理器1001用于:
确定共享数据库连接池中连接状态处于空闲状态的数据库连接;
将任一连接状态处于空闲状态的数据库连接确定为可用数据库连接。
在一些可行的实施方式中,上述处理器1001还用于:
响应于上述共享数据库连接池中不存在连接状态处于空闲状态的数据库连接,且上述共享数据库连接池中的数据库连接的数量小于数据库连接数量上限,创建新的数据库连接并将上述新的数据库连接确定为可用数据库连接。
在一些可行的实施方式中,上述处理器1001还用于:
在基于上述可用数据库连接对上述待处理数据进行处理过程中,将上述可用数据库连接的连接状态置为非空闲状态,并在完成对上述待处理数据的处理之后将上述可用数据库连接的连接状态置为空闲状态。
应当理解,在一些可行的实施方式中,上述处理器1001可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
具体实现中,上述电子设备1000可通过其内置的各个功能模块执行如上述图2中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,被处理器执行以实现图2中各个步骤所提供的方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或电子设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart mediacard,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。上述计算机可读存储介质还可以包括磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,上述计算机程序被处理器执行图2中各个步骤所提供的方法。
本申请的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或电子设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或电子设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (11)

1.一种数据处理方法,其特征在于,所述方法包括:
获取针对待处理数据的数据操作语句;
基于所述数据操作语句,从各数据库的所有数据表中确定所述待处理数据对应的目标数据表、以及从各所述数据库中确定所述目标数据表对应的目标数据库;
从共享数据库连接池中确定出可用数据库连接,以及基于所述目标数据表的表信息和所述目标数据库的库信息生成可执行操作语句,所述共享数据库连接池包括至少一个数据库连接,各所述数据库共用所述共享数据库连接池中的数据库连接;
基于所述可用数据库连接执行所述可执行操作语句以对所述待处理数据进行处理。
2.根据权利要求1所述的方法,其特征在于,获取所述数据操作语句之前,所述方法还包括:
创建共享数据库连接池,并为所述共享数据库连接池建立预设数量的数据库连接;
建立各所述数据库与所述共享数据库连接池的映射关系,以使各所述数据库共用所述共享数据库连接池中的数据库连接。
3.根据权利要求1所述的方法,其特征在于,所述基于所述数据操作语句,从各数据库的所有数据表中确定所述待处理数据对应的目标数据表、以及从各所述数据库中确定所述目标数据表对应的目标数据库,包括:
基于所述数据操作语句确定所述待处理数据的数据描述信息;
基于所述数据描述信息从各数据库的所有数据分表中确定所述待处理数据对应的目标数据表;
基于所述目标数据表的表信息从各所述数据库中确定所述目标数据表对应的目标数据库。
4.根据权利要求1所述的方法,其特征在于,所述基于所述目标数据表的表信息和所述目标数据库的库信息生成可执行操作语句,包括:
将所述目标数据表的表信息和所述目标数据库的库信息进行拼接,得到所述待处理数据对应的地址字段;
基于所述地址字段对所述数据操作语句进行改写得到可执行操作语句。
5.根据权利要求1所述的方法,其特征在于,所述从共享数据库连接池中确定出可用数据库连接,包括:
确定共享数据库连接池中连接状态处于空闲状态的数据库连接;
将任一连接状态处于空闲状态的数据库连接确定为可用数据库连接。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
响应于所述共享数据库连接池中不存在连接状态处于空闲状态的数据库连接,且所述共享数据库连接池中的数据库连接的数量小于数据库连接数量上限,创建新的数据库连接并将所述新的数据库连接确定为可用数据库连接。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在基于所述可用数据库连接对所述待处理数据进行处理过程中,将所述可用数据库连接的连接状态置为非空闲状态,并在完成对所述待处理数据的处理之后将所述可用数据库连接的连接状态置为空闲状态。
8.一种数据处理装置,其特征在于,所述数据处理装置包括:
语句获取模块,用于获取针对待处理数据的数据操作语句;
信息确定模块,用于基于所述数据操作语句,从各数据库的所有数据表中确定所述待处理数据对应的目标数据表、以及从各所述数据库中确定所述目标数据表对应的目标数据库;
所述信息确定模块,用于从共享数据库连接池中确定出可用数据库连接,以及基于所述目标数据表的表信息和所述目标数据库的库信息生成可执行操作语句,所述共享数据库连接池包括至少一个数据库连接,各所述数据库共用所述共享数据库连接池中的数据库连接;
语句执行模块,用于基于所述可用数据库连接执行所述可执行操作语句以对所述待处理数据进行处理。
9.一种电子设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接;
所述存储器用于存储计算机程序;
所述处理器被配置用于在调用所述计算机程序时,执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至7任一项所述的方法。
11.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法。
CN202211160239.6A 2022-09-22 2022-09-22 数据处理方法、装置、设备以及存储介质 Pending CN117785968A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211160239.6A CN117785968A (zh) 2022-09-22 2022-09-22 数据处理方法、装置、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211160239.6A CN117785968A (zh) 2022-09-22 2022-09-22 数据处理方法、装置、设备以及存储介质

Publications (1)

Publication Number Publication Date
CN117785968A true CN117785968A (zh) 2024-03-29

Family

ID=90378603

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211160239.6A Pending CN117785968A (zh) 2022-09-22 2022-09-22 数据处理方法、装置、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN117785968A (zh)

Similar Documents

Publication Publication Date Title
US7822710B1 (en) System and method for data collection
US9678969B2 (en) Metadata updating method and apparatus based on columnar storage in distributed file system, and host
US8555018B1 (en) Techniques for storing data
US9684702B2 (en) Database redistribution utilizing virtual partitions
CN110046170B (zh) 基于多文件管理的语句执行方法、装置、设备和介质
CN112364083A (zh) 基于配置文件的数据字典管理方法、系统及存储介质
WO2024113740A1 (zh) 数据查询方法、系统、设备及计算机可读存储介质
US20230153455A1 (en) Query-based database redaction
US11281647B2 (en) Fine-grained scalable time-versioning support for large-scale property graph databases
US10908924B2 (en) System and methods for loading objects from hash chains
CN110222046B (zh) 列表数据的处理方法、装置、服务器和存储介质
CN109033456B (zh) 一种条件查询方法、装置、电子设备和存储介质
CN112860802B (zh) 数据库操作语句的处理方法、装置及电子设备
CN112559913B (zh) 一种数据处理方法、装置、计算设备及可读存储介质
CN111753141B (zh) 一种数据管理方法及相关设备
CN112115150A (zh) 嵌入式内存数据库的数据管理方法、终端设备及介质
CN111666302A (zh) 用户排名的查询方法、装置、设备及存储介质
US10114864B1 (en) List element query support and processing
CN117785968A (zh) 数据处理方法、装置、设备以及存储介质
CN112699149A (zh) 目标数据获取方法、装置和存储介质及电子装置
CN112181391A (zh) 一种可动态扩展数据的方法及系统
CN112069185B (zh) 索引构建方法、装置、电子设备和介质
CN111708806B (zh) 一种数据访问的方法、装置、服务器、系统及存储介质
CN110413644B (zh) 一种数据缓存方法、电子装置及计算机可读存储介质
CN110704436B (zh) 基于Hbase的索引生成方法及装置

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