CN110019113A - 一种数据库的业务处理方法及数据库服务器 - Google Patents

一种数据库的业务处理方法及数据库服务器 Download PDF

Info

Publication number
CN110019113A
CN110019113A CN201710773708.4A CN201710773708A CN110019113A CN 110019113 A CN110019113 A CN 110019113A CN 201710773708 A CN201710773708 A CN 201710773708A CN 110019113 A CN110019113 A CN 110019113A
Authority
CN
China
Prior art keywords
database
user
data processing
distributed data
processing module
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
CN201710773708.4A
Other languages
English (en)
Other versions
CN110019113B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710773708.4A priority Critical patent/CN110019113B/zh
Publication of CN110019113A publication Critical patent/CN110019113A/zh
Application granted granted Critical
Publication of CN110019113B publication Critical patent/CN110019113B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

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)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及数据领域,具体涉及一种数据库的业务处理方法及数据库服务器。该方法应用于数据库系统,数据库系统包括业务层和第一数据库,还包括分布式数据处理模块,该方法包括分布式数据处理模块接收应用层发出的第一SQL请求,根据解析第一SQL语句中的第一表名并查找第一表名所属用户的用户名;根据预设配置规则、第一表名以及对应的用户名生成第二SQL请求,第二SQL请求中携带有第二SQL语句;分布式数据处理模块将第二SQL请求发送至第一数据库内的第一用户。本申请实施例能实现数据库中的用户之间的连接共享,使得多用户的管理变得更为尤为容易,并且由于无需大量的连接池与数据库之间的连接,还能够提升数据库连接收敛效果。

Description

一种数据库的业务处理方法及数据库服务器
技术领域
本申请涉及数据领域,具体涉及一种数据库的业务处理方法及数据库服务器。
背景技术
在大型应用中,数据库已经成为了不可缺少的部分,数据库的所有操作都需要通过数据库连接来完成。如果每次操作数据库,都向数据库创建连接,在操作结束后,再向数据库释放该链接。这样,每次操作数据库,都需要建立一次连接,连接建立的过程开销大,大大影响业务应用的性能。因此,在业务应用中一般会缓存该连接,操作完数据库后,并不释放,而是缓存起来,供下次使用。
在实际应用中,数据库连接资源一般较为紧缺,即数据库所能提供的连接是有限的,如果缓存过多连接,会引起数据库性能下降等问题。为了解决此问题,数据库连接池的概念应运而生。如图1所示,图1是采用连接池的数据库架构示意图,在业务应用程序中,会针对每一个数据库用户,创建一个连接池。当需要操作数据库时,会从对应用户的连接池中获取连接,通过该连接执行对应用户的SQL语句;当操作完数据库后,会将该连接再放回连接池中,供后续使用。这样可以保证不在执行的业务不会持有数据库连接,达到降低数据库连接数量的目的。即让应用业务开发人员在写结构化查询语音(structured querylanguage,SQL)语句时,不关心数据库用户名称,提升开发效率,应用会针对每个数据库用户创建一个连接池,用于缓存与该用户的连接。
然而,每个用户对应一个连接池的设计方式在数据库用户数量大量增加后,由于数据库所能提供的连接时有限的,而大量的用户对应的连接池在同时访问时,会使得数据库的负荷过高,并且连接收敛的效果会变差。
发明内容
本申请实施例提供了一种数据库的业务处理方法及数据库服务器,一种数据库的业务处理方法及数据库服务器来解决由于数据库所能提供的连接时有限的,而大量的用户对应的连接池在同时访问时,会使得数据库的负荷过高,并且连接收敛的效果会变差的问题。
本申请实施例的第一方面提供一种数据库的业务处理方法,该方法应用于数据库系统,该数据库系统包括业务层和第一数据库,并且该数据库系统还包括设置在业务层和第一数据库之间的分布式数据处理模块,该方法具体可包括,首先由分布式数据处理模块接收应用层发出的第一结构化查询语言SQL请求,该SQL请求实际为一个SQL语句,此处为第一SQL语句;接着,分布式数据处理模块会根据该第一SQL语句种的第一表名查找该第一数据库中所述第一表名所属用户的用户名,该分布式数据处理模块中存储有所述第一数据库中表名与用户名的对应关系,接着,分布式数据处理模块根据预设配置规则、所述第一表名以及对应的用户名生成第二SQL请求,该第二SQL请求实际也是SQL语句,此处为第二SQL语句,第二SQL语句的表名为具有所述第一表名对应用户名的表名,最后,分布式数据处理模块将第二SQL请求发送至所述第一数据库内的第一用户,所述第一数据库内除所述第一用户之外的用户均授权至所述第一用户,在数据库中会将该第二SQL语句发送至第二SQL语句中的表名对应的用户进行相应的处理。
可以看出,采用本申请实施例的方式,在业务层到数据库仅通过分布式数据处理模块连接即可,不同用户均可通过该第一连接池向分布式数据处理模块发送SQL请求,由分布式数据处理模块根据其内的表名与用户名的对应关系,将SQL语句进行改造,即在表名前加上用户名,从而在数据库中,第一用户读取到该具有用户名的表名时,能够直接发送到该表名对应的用户进行处理;从而实现数据库中的用户之间的连接共享,使得多用户的管理变得更为尤为容易,并且由于无需大量的连接池与数据库之间的连接,还能够提升数据库连接收敛效果。
在一些实施例中,应用层内设有第一连接池,该第一连接池用于业务逻辑层与第一数据库进行连接,即应用层的SQL请求均通过所述第一连接池发送至所述分布式数据处理模块。
在一些实施例中,分布式数据处理模块中设有第二连接池,第二连接池对应到第一数据库,此时,分布式数据处理模块将第二SQL请求发送至所述数据库内的第一用户的具体过程可以是,第二连接池将第二SQL请求发送至所述数据库内的第一用户。即对于第一数据库,在分布式数据处理模块中设置一个第二连接池,不同的用户均可以通过该第二连接池直接与该第一数据库进行访问操作。
在一些实施例中,分布式数据处理模块在将第二SQL语句发送至第一数据库后,会接收到由第一数据库返回结果,并将所述结果发送至所述业务层,完成业务层的SQL请求过程。
在一些实施例中,分布式数据处理模块中还设有第三连接池,所述数据库系统还包括第二数据库,该第三连接池对应该第二数据库,分布式数据处理模块接收应用层发出的第一SQL请求之后,该方法还包括,分布式数据处理模块根据解析第一SQL语句中的第二表名并查找所述第二数据库中所述表名所属用户的用户名,其中,该分布式数据处理模块中还存储有所述第二数据库中表名与用户名的对应关系;接着,分布式数据处理模块根据预设配置规则、第二表名以及对应的用户名生成第三SQL请求,该第三SQL请求实际为一个SQL语句,如第三SQL语句,该第三SQL语句的表名为具有第二表名对应用户名的表名。可以看出,在此实现方式中,将原本的第一SQL语句按照不同的用户分解成不同的SQL语句,并且不同的用户可以是不同数据库上的用户,分布式数据处理模块按照一个连接池对应一个数据库的方式,在具有多个数据库时,设置多个连接池用以连接,从而实现分布式数据处理模块对于SQL语句按照用户及进行转换处理。
在一些实施例中,分布式数据处理模块除了将第二SQL语句发送至第一数据库内的第一用户外,还会将第三SQL请求发送至第二数据库内的第二用户,第二数据库内除所述第二用户之外的用户均授权至所述第二用户。即对于第二数据库,在分布式数据处理模块中设置一个第三连接池,不同的用户均可以通过该第三连接池直接与该第二数据库进行访问操作。
在一些实施例中,分布式数据处理模块接收第一数据库和第二数据库返回的结果;接着,分布式数据处理模块将第一数据库和所述第二数据库返回的结果进行关联处理,该管理处理即根据之前将第一SQL语句分解为第二SQL语句和第三SQL语句的方式,将结果进行关联;最后,分布式数据处理模块将关联处理后的所述结果发送至所述业务层。可以看出,在具有多个数据库时,可采用分布式数据处理模块进行统一管理,而业务层也无需关心数据库的数量,仅需要将SQL请求通过业务层的第一连接层发送到分布式数据处理模块即可,由分布式数据处理模块对于SQL请求进行具体分析并发送至数据库完成SQL请求。
本申请第二方面提供了一种数据库服务器,该数据库服务器包括了用于执行第二方面或第二方面的任一种实现方式中提供的数据库的业务处理方法的至少一个单元。
本申请又一方面提供了一种计算机可读存储介质,该存储介质中存储了程序代码,该程序代码被终端运行时,使得计算机执行上述各方面所述的方法。该存储介质包括但不限于快闪存储器(flash memory),硬盘(hard disk drive,简称HDD)或固态硬盘(solidstate drive,简称SSD)。
本申请的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
附图说明
图1是采用连接池的数据库架构示意图;
图2是本申请实施例的数据库系统的架构示意图;
图3是本申请实施例的数据库的业务处理方法的一个实施例图;
图4是本申请实施例的数据库的业务处理方法的一个实施例图;
图5是本申请实施例的数据库服务器的一个实施例图;
图6是本申请实施例的数据库服务器的一个实施例图。
具体实施方式
本申请提供一种数据库的业务处理方法及数据库服务器来解决由于数据库所能提供的连接时有限的,而大量的用户对应的连接池在同时访问时,会使得数据库的负荷过高,并且连接收敛的效果会变差的问题。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例进行描述。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
分布式数据服务(distributed data service,简称DDS),提供统一的关系型数据访问服务,屏蔽应用对底层数据的存储、分布、位置差异,实现数据的海量存储和高并发访问。DDS定义了一个高效的服务,用于在分布式应用程序的参与者之间分发数据。这项服务是不特定的公共对象请求代理体系结构(common object request broker architecture,简称CORBA)。该规范提供了一个平台独立模型(platform independent model,简称PIM)以及特定于平台的模型(platform special model,PSM),映射到一个CORBA的交互式数据语言(interactive data language,简称IDL)实现的是PIM。
本申请实施例中数据库相关内容,数据库(Database,简称DB),用于按照数据结构来组织、存储和管理数据的仓库。数据库连接,即当操作数据库中的数据时,需要与数据库先建立连接,在连接建立成功后,通过该连接才可以对数据库进行操作数据。数据库连接池,即数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再跟数据库重新建立一个新连接。这项技术可提升数据库性能。
其中,数据库连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑最小连接数,由于连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;最大连接数,即连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。最小连接数与最大连接数差距,若最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。
然而,如图1所示的方式中,为了让应用业务开发人员在写SQL语句时,不关心数据库用户名称,提升开发效率,应用会针对每个数据库用户创建一个连接池,用于缓存与该用户的连接。虽然使得应用业务开发人管减少工作量,但是由于数据库用户之间的连接并不共享,并且数据库所能提供的连接时有限的,在大量的用户对应的连接池在同时访问时,会使得数据库的负荷过高,并且连接收敛的效果会变差。
有鉴于上述问题,本申请实施例提供一种数据库的业务处理方法,该方法应用于数据库系统。具体请参阅图2,图2是本申请实施例的数据库系统的架构示意图,该数据库系统包括应用层和第一数据库,所述数据库系统还包括设置在业务层和第一数据库之间的分布式数据处理模块,应用层直接向分布式数据处理模块发送SQL请求,分布式数据处理模块分析该SQL请求,并对该SQL请求中的SQL语句重新拼写,使得拼写后的SQL语句中携带有数据库用户的信息。接着第一数据库的第一用户接收到该重新拼写的SQL语句,并按照该SQL语句中的数据库用户将该SQL语句发送至该数据库用户,从而使得该数据库用户处理该SQL语句,由于第一用户是第一数据库中的一个比较特殊的公共用户,其他的数据库用户都会授权给第一用户,使得第一用户能够访问这些用户。急着,会向第一用户返回结果,接着第一数据库2将该结果返回至分布式处理模块,由分布式处理模块将该结果返回至应用层,完成SQL请求过程。
具体的,请参阅图3,图3是本申请实施例的数据库的业务处理方法的一个实施例图,如图3所示,该方法可包括:
301、应用层向分布式数据处理模块发送第一SQL请求。
其中,该第一SQL请求中携带有第一SQL语句,该SQL请求是数据库业务中的一个比较常规的业务,通过SQL能够对数据库进行几乎所有的的操作,例如对于数据库中的数据进行存取、更新以及管理关系数据库系统。应用层在需要用到数据库中的数据时,会向数据库发送SQL请求,该SQL请求实际为一个SQL语句,此处为第一SQL语句。
可选的,如图2所示,应用层内设有第一连接池,该第一连接池用于业务逻辑层与第一数据库进行连接,即应用层向数据库发送的SQL请求均通过批改第一连接池发送至分布式数据处理模块。
302、分布式数据处理模块接收应用层发出的第一SQL请求。
其中,由于应用层与分布式数据处理模块之间直接通过SQL请求进行交互,因此对于分布式数据处理模块来说,会同时接收到多个SQL请求,分布式处理模块可以按照自身的处理能力进行并发处理或者采用处理列表的方式进行顺序处理,本申请实施例中,两种方式均可,并不做特别限定。
303、分布式数据处理模块根据解析所述第一SQL语句中的第一表名并查找所述第一数据库中所述第一表名所属用户的用户名。
其中,分布式数据处理模块中存储有第一数据库中表名与用户名的对应关系;对于分布式数据处理模块来说,由于其中存储了第一数据库中表名与用户名的对应关系,因此,只要找到表名,便可以找到第一数据库中的对应用户,接着便可以按照对应用户对第一SQL语句进行改造。
需要说明的是,在数据库中具有多个数据库用户,不同的数据库用户均具有对应的表,而若是每个用户均分别连接到分布式数据处理模块的第二连接池,则会带来与应用层的连接池直接连接到第一数据库相似的问题,因此,本申请实施例中,采用在数据库中设置一个第一用户,该第一用户可以是公共用户,数据库中的其他数据库用户均授权给公共用户,从而使得该公共用户能够对这些用户进行访问,从而数据库与分布式数据处理模块的第二连接池之间仅需要建立一条连接即可处理该数据库上的所有用户的数据。
可以理解的是,在第一数据库中用户较多,或者需要对用户进行分类等情况时,还第一数据库中还可以设置多个公共用户,当然,也可以直接设置多个公共用户,将第一数据库的数据库用户划分授权到多个公共用户。
可选的,分布式数据处理模块中设有第二连接池,第二连接池对应到第一数据库,此时,分布式数据处理模块将第二SQL请求发送至所述数据库内的第一用户的具体过程可以是,第二连接池将第二SQL请求发送至所述数据库内的第一用户。即对于第一数据库,在分布式数据处理模块中设置一个第二连接池,不同的第一数据库的数据库用户均可以通过该第二连接池直接与该第一数据库进行访问操作。
下面举例进行说明,例1:
第一数据库中的数据库用户“user_1”向第一用户已授权,可以通过第一操作“user_1”的数据。具体的,如图2所示,应用层通过第一连接池向分布式数据处理模块发送了一条SQL语句,例如“select*from t1where t1.f1=1”,分布式数据处理模块中接收到该SQL语句。在该语句中,是要查找表“t1”内的表项“t1.f1”,在本申请实施例中,分布式数据处理模块在接收到该语句后,会先确定其中的表“t1”,而后按照已经存储的数据库的表与用户名的对应关系查找该表“t1”对应的用户,如,该表“t1”对应的用户“user_1”。
可选的,分布式数据处理模块中还设有第三连接池,该数据库系统还包括第二数据库,该第三连接池对应该第二数据库,分布式数据处理模块接收应用层发出的第一SQL请求之后,该方法还包括,分布式数据处理模块根据解析第一SQL语句中的第二表名并查找所述第二数据库中所述表名所属用户的用户名,其中,该分布式数据处理模块中还存储有所述第二数据库中表名与用户名的对应关系;可以看出,在此实现方式中,将原本的第一SQL语句按照不同的用户分解成不同的SQL语句,并且不同的用户可以是不同数据库上的用户,分布式数据处理模块按照一个连接池对应一个数据库的方式,在具有多个数据库时,设置多个连接池用以连接,从而实现分布式数据处理模块对于SQL语句按照用户及进行转换处理。
例2:
请参阅图4,图4是本申请实施例的数据库的业务处理方法的一个实施例图。其中,在第一数据库中,数据库用户“user_db1”向第一用户已授权,可以通过第一用户操作“user_db1”的数据;在第二数据库中,用户“user_db2”向第二用户已授权,可以通过第二用户操作“user_db2”的数据。具体的,应用层通过第一连接池向分布式数据处理模块发送了一条SQL语句,例如“select*from t1,t2where t1.f1=1”,分布式数据处理模块接收到该SQL语句。在该语句中,是要查找表“t1”内的表项“t1.f1”,表“t2”,在本申请实施例中,分布式数据处理模块在接收到该语句后,会先确定其中的表“t1”和表“t2”,而后按照已经存储的第一数据库的表与用户名的对应关系,以及第二数据库的表与用户名的对应关系分别查找该表“t1”对应的用户和表“t2”对应的用户,如,该表“t1”对应的用户“user_db1”以及该表“t2”对应的用户“user_db2”。
304、分布式数据处理模块根据预设配置规则、第一表名以及对应的用户名生成第二SQL请求。
其中,该第二SQL请求中携带有第二SQL语句,所述第二SQL语句中的表名为具有所述第一表名对应用户名的表名。即在具有第一数据库的情况下,在找到表对应的用户名后,便可以对原本的SQL语句进行改造,将具有用户名的表名加入到重新生成的SQL语句中,使得后续发送到第一数据库时,能被第一用户正确导向至对应的通过表名确定的用户。
举例来说,以步骤302中例1为例,分布式数据处理模块中设置第二连接池,通过第二连接池与第一数据库连接为例,在步骤302的说明中,第一数据库中的数据库用户“user_1”向第一用户已授权,可以通过第一操作“user_1”的数据。分布式数据处理模块接收到的SQL语句为“select*from t1where t1.f1=1”,根据表“t1”查找到的用户为“user_1”,接着便会根据这些信息进行SQL语句的重新编写,首先将根据表“t1”确定“user_1.t1”,接着生成SQL语句“select*from user_1.t1t1where t1.f1=1”。
又举例来说,如图4所示,以步骤302中例2为例,分布式数据处理模块通过第二连接池和第三连接池连接了第一数据库和第二数据库时,在步骤302的说明中,在第一数据库中,数据库用户“user_db1”向第一用户已授权,可以通过第一用户操作“user_db1”的数据;在第二数据库中,用户“user_db2”向第二用户已授权,可以通过第二用户操作“user_db2”的数据。分布式数据处理模块接收到的SQL语句为“select*from t1,t2where t1.f1=1”,根据表“t1”查找到的用户为“user_db1”,根据表“t2”查找到的用户为“user_db2”。接着便会根据这些信息进行SQL语句的重新编写,首先是发送给第一数据库的SQL语句,将根据表“t1”确定“user_db1”,接着生成SQL语句“select*from user_db1.t1t1where t1.f1=1”。在生成发送至第一数据库的SQL语句的同时,还会生成发送至第二数据的SQL语句,将根据表“t2”确定“user_db2”,接着生成SQL语句“select*from user_db2.t2t2”。可以看出,相当于对原SQL语句“select*from t1,t2where t1.f1=1”进行了拆分,将表“t1”相关的部分发送至对应的用户,将表“t2”相关的部分发送至对应的用户。
305、分布式数据处理模块将所述第二SQL请求发送至所述第一数据库内的第一用户。
其中,在例1中,第一数据库内除所述第一用户之外的用户均授权至所述第一用户,在生成第二SQL语句“select*from user_db1.t1t1where t1.f1=1”,并由分布式数据处理模中的第二连接池将该SQL语句发送至第一数据库。接着,在第一数据库中,第一用户在接收到该SQL语句后,会根据其中的“user_1.t1”确定到该SQL语句是发送到“user_1”的,因此,会将该语句发送至第一数据库的数据库用户“user_1”。“user_1”在接收到该SQL语句后,会进行处理,并生成结果,该结果会首先返回给第一用户,再由第一用户通过分布式数据处理模块返回给应用层,完成SQL请求的流程。
在例2中,第一数据库内除所述第一用户之外的用户均授权至所述第一用户,第二数据库内除所述第二用户之外的用户均授权至所述第二用户。在生成第二SQL语句“select*from user_db1.t1t1where t1.f1=1”,并由分布式数据处理模中的第二连接池将该第二SQL语句发送至第一数据库,以及第三SQL语句“select*from user_db2.t2t2”,并由分布式数据处理模块中的第三连接池将该第三SQL语句发送至第二数据库。接着,在第一数据库中,第一用户在接收到该SQL语句后,会根据其中的“user_1.t1”确定到该第二SQL语句是发送到“user_db1”的,因此,会将该语句发送至第一数据库的数据库用户“user_db1”,“user_db1”在接收到该SQL语句后,会进行处理,并生成结果,该结果会首先返回给第一用户,再返回给分布式数据处理模块;在第二数据库中,会根据其中的“user_db2.t2”确定到该第三SQL语句是发送到“user_db2”的,因此,会将该语句发送至第二数据库的数据库用户“user_db2”,“user_db2”在接收到该SQL语句后,会进行处理,并生成结果,该结果会首先返回给第二用户,再返回给分布式数据处理模块。
需要说明的是,分布式数据处理模块接收第一数据库返回的结果和第二数据库返回的结果后;分布式数据处理模块将第一数据库和所述第二数据库返回的结果进行关联处理,该管理处理即根据之前将第一SQL语句分解为第二SQL语句和第三SQL语句的方式,将结果进行关联;最后,分布式数据处理模块将关联处理后的所述结果发送至所述业务层。可以看出,在具有多个数据库时,可采用分布式数据处理模块进行统一管理,而业务层也无需关心数据库的数量,仅需要将SQL请求通过业务层的第一连接层发送到分布式数据处理模块即可,由分布式数据处理模块对于SQL请求进行具体分析并发送至数据库完成SQL请求。
可以看出,采用本申请实施例的方式,在业务层到数据库仅通过分布式数据处理模块连接即可,不同用户均可通过该第一连接池向分布式数据处理模块发送SQL请求,由分布式数据处理模块根据其内的表名与用户名的对应关系,将SQL语句进行改造,即在表名前加上用户名,从而在数据库中,第一用户读取到该具有用户名的表名时,能够直接发送到该表名对应的用户进行处理;从而实现数据库中的用户之间的连接共享,使得多用户的管理变得更为尤为容易,并且由于无需大量的连接池与数据库之间的连接,还能够提升数据库连接收敛效果。
上面对本申请实施例的数据库的业务处理方法进行了说明,下面对本申请实施例的数据库服务器进行说明,请参阅图5,图5是本申请实施例的数据库服务器的一个实施例图,其中面盖数据库服务器可包括:
分布式数据处理模块501,用于接收应用层发出的第一结构化查询语言SQL请求,所述SQL请求中携带有第一SQL语句;
所述分布式数据处理模块501还用于根据解析所述第一SQL语句中的第一表名并查找所述第一数据库模块502中所述第一表名所属用户的用户名,所述分布式数据处理模块501中存储有所述第一数据库模块502中表名与用户名的对应关系;
所述分布式数据处理模块501根据预设配置规则、所述第一表名以及对应的用户名生成第二SQL请求,所述第二SQL请求中携带有第二SQL语句,所述第二SQL语句中的表名为具有所述第一表名对应用户名的表名;
所述分布式数据处理模块501将所述第二SQL请求发送至所述第一数据库模块502内的第一用户,所述第一数据库模块502内除所述第一用户之外的用户均授权至所述第一用户;
第一数据库模块502,用于根据所述第二SQL请求中的用户名将所述第二SQL请求发送至所述用户名对应的用户。
可选的,所述应用层内设有第一连接池,所述应用层的SQL请求均通过所述第一连接池发送至所述分布式数据处理模块501。
其中,对于分布式数据处理模块501的相关说明可参见图3所示实施例,此处不再赘述。
可选的,所述分布式数据处理模块中设有第二连接池,所述第二连接池对应所述第一数据库,所述分布式数据处理模块501具体用于:
将所述第二SQL请求发送至所述数据库内的第一用户。
其中,对于分布式数据处理模块501的相关说明可参见图3所示实施例,此处不再赘述。
可选的,所述分布式数据处理模块501还用于:
接收所述第一数据库返回的结果;并将所述结果发送至所述业务层。
其中,对于分布式数据处理模块501的相关说明可参见图3所示实施例,此处不再赘述。
可选的,所述分布式数据处理模块501中还设有第三连接池,所述数据库服务器还包括第二数据库模块503,所述第三连接池对应所述第二数据库模块503,所述分布式数据处理模块还用于:
根据解析所述第一SQL语句中的第二表名并查找所述第二数据库模块503中所述表名所属用户的用户名,所述分布式数据处理模块501中还存储有所述第二数据库模块503中表名与用户名的对应关系;
根据预设配置规则、所述第二表名以及对应的用户名生成第三SQL请求,所述第三SQL请求中携带有第三SQL语句,所述第三SQL语句的表名为具有所述第二表名对应用户名的表名。
其中,对于分布式数据处理模块501的相关说明可参见图3所示实施例,此处不再赘述。
可选的,所述分布式数据处理模块501还用于:
将所述第三SQL请求发送至所述第二数据库模块503内的第二用户,所述第二数据库模块503内除所述第二用户之外的用户均授权至所述第二用户。
可选的,所述分布式数据处理模块501还用于:
接收所述第一数据库模块502和所述第二数据库模块503返回的结果;
将所述第一数据库模块502和所述第二数据库模块503返回的结果进行关联处理;
将关联处理后的所述结果发送至所述业务层。
上面对本申请实施例的数据库服务器进行了介绍,下面对本申请实施例中数据库服务器进行描述,请参阅图6,图6是本申请实施例的数据库服务器的一个实施例图,其中,数据库服务器6可包括相连接的至少一个处理器602、至少一个收发器601以及存储器603,本申请实施例涉及的数据库服务器可以具有比图6所示出的更多或更少的部件,可以组合两个或更多个部件,或者可以具有不同的部件配置或设置,各个部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件或硬件和软件的组合实现。
具体的,对于图5所示的实施例来说,该处理器602能实现图5所示实施例中的数据库服务器的分布式数据处理模块501的功能,该收发器601能实现图5所示实施例中的数据库服务器的收发功能,存储器603能实现图5所示实施例中的数据库服务器的第一数据库模块502和第二数据库模块503的功能。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (16)

1.一种数据库的业务处理方法,应用于数据库系统,所述数据库系统包括业务层和第一数据库,其特征在于,所述数据库系统还包括设置在业务层和第一数据库之间的分布式数据处理模块,所述方法包括:
所述分布式数据处理模块接收应用层发出的第一结构化查询语言SQL请求,所述第一SQL请求中携带有第一SQL语句;
所述分布式数据处理模块根据解析所述第一SQL语句中的第一表名并查找所述第一数据库中所述第一表名所属用户的用户名,所述分布式数据处理模块中存储有所述第一数据库中表名与用户名的对应关系;
所述分布式数据处理模块根据预设配置规则、所述第一表名以及对应的用户名生成第二SQL请求,所述第二SQL请求中携带有第二SQL语句,所述第二SQL语句中的表名为具有所述第一表名对应用户名的表名;
所述分布式数据处理模块将所述第二SQL请求发送至所述第一数据库内的第一用户,所述第一数据库内除所述第一用户之外的用户均授权至所述第一用户。
2.根据权利要求1所述的数据库的业务处理方法,其特征在于,所述应用层内设有第一连接池,所述应用层的SQL请求均通过所述第一连接池发送至所述分布式数据处理模块。
3.根据权利要求1所述的数据库的业务处理方法,其特征在于,所述分布式数据处理模块中设有第二连接池,所述第二连接池对应所述第一数据库,所述分布式数据处理模块将所述第二SQL请求发送至所述数据库内的第一用户具体为:
所述第二连接池将所述第二SQL请求发送至所述数据库内的第一用户。
4.根据权利要求1至3中任一项所述的数据库的业务处理方法,其特征在于,所述方法还包括:
所述分布式数据处理模块接收所述第一数据库返回的结果;并将所述结果发送至所述业务层。
5.根据权利要求3所述的数据库的业务处理方法,其特征在于,所述分布式数据处理模块中还设有第三连接池,所述数据库系统还包括第二数据库,所述第三连接池对应所述第二数据库,所述分布式数据处理模块接收应用层发出的第一SQL请求之后,所述方法还包括:
所述分布式数据处理模块根据解析所述第一SQL语句中的第二表名并查找所述第二数据库中所述表名所属用户的用户名,所述分布式数据处理模块中还存储有所述第二数据库中表名与用户名的对应关系;
所述分布式数据处理模块根据预设配置规则、所述第二表名以及对应的用户名生成第三SQL请求,所述第三SQL请求中携带有第三SQL语句,所述第三SQL语句的表名为具有所述第二表名对应用户名的表名。
6.根据权利要求5所述的数据库的业务处理方法,其特征在于,所述方法还包括:
所述分布式数据处理模块将所述第三SQL请求发送至所述第二数据库内的第二用户,所述第二数据库内除所述第二用户之外的用户均授权至所述第二用户。
7.根据权利要求5或6所述的数据库的业务处理方法,其特征在于,所述方法还包括:
所述分布式数据处理模块接收所述第一数据库和所述第二数据库返回的结果;
所述分布式数据处理模块将所述第一数据库和所述第二数据库返回的结果进行关联处理;
所述分布式数据处理模块将关联处理后的所述结果发送至所述业务层。
8.一种数据库服务器,其特征在于,包括:
分布式数据处理模块,用于接收应用层发出的第一结构化查询语言SQL请求,所述SQL请求中携带有第一SQL语句;
所述分布式数据处理模块还用于根据解析所述第一SQL语句中的第一表名并查找所述第一数据库模块中所述第一表名所属用户的用户名,所述分布式数据处理模块中存储有所述第一数据库模块中表名与用户名的对应关系;
所述分布式数据处理模块根据预设配置规则、所述第一表名以及对应的用户名生成第二SQL请求,所述第二SQL请求中携带有第二SQL语句,所述第二SQL语句中的表名为具有所述第一表名对应用户名的表名;
所述分布式数据处理模块将所述第二SQL请求发送至所述第一数据库模块内的第一用户,所述第一数据库模块内除所述第一用户之外的用户均授权至所述第一用户;
第一数据库模块,用于根据所述第二SQL请求中的用户名将所述第二SQL请求发送至所述用户名对应的用户。
9.根据权利要求8所述的数据库服务器,其特征在于,所述应用层内设有第一连接池,所述应用层的SQL请求均通过所述第一连接池发送至所述分布式数据处理模块。
10.根据权利要求8所述的数据库服务器,其特征在于,所述分布式数据处理模块中设有第二连接池,所述第二连接池对应所述第一数据库,所述分布式数据处理模块具体用于:
将所述第二SQL请求发送至所述数据库内的第一用户。
11.根据权利要求8至10中任一项所述的数据库服务器,其特征在于,所述分布式数据处理模块还用于:
接收所述第一数据库返回的结果;并将所述结果发送至所述业务层。
12.根据权利要求10所述的数据库服务器,其特征在于,所述分布式数据处理模块中还设有第三连接池,所述数据库服务器还包括第二数据库模块,所述第三连接池对应所述第二数据库模块,所述分布式数据处理模块还用于:
根据解析所述第一SQL语句中的第二表名并查找所述第二数据库模块中所述表名所属用户的用户名,所述分布式数据处理模块中还存储有所述第二数据库中表名与用户名的对应关系;
根据预设配置规则、所述第二表名以及对应的用户名生成第三SQL请求,所述第三SQL请求中携带有第三SQL语句,所述第三SQL语句的表名为具有所述第二表名对应用户名的表名。
13.根据权利要求12所述的数据库服务器,其特征在于,所述分布式数据处理模块还用于:
将所述第三SQL请求发送至所述第二数据库模块内的第二用户,所述第二数据库模块内除所述第二用户之外的用户均授权至所述第二用户。
14.根据权利要求12或13所述的数据库服务器,其特征在于,所述分布式数据处理模块还用于:
接收所述第一数据库模块和所述第二数据库模块返回的结果;
将所述第一数据库模块和所述第二数据库模块返回的结果进行关联处理;
将关联处理后的所述结果发送至所述业务层。
15.一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-7中任一项所述的数据库的业务处理方法。
16.一种包含指令的计算机程序产品,其特征在于,当其在计算机上运行时,使得计算机执行如权利要求1-7中任一项所述的数据库的业务处理方法。
CN201710773708.4A 2017-08-31 2017-08-31 一种数据库的业务处理方法及数据库服务器 Active CN110019113B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710773708.4A CN110019113B (zh) 2017-08-31 2017-08-31 一种数据库的业务处理方法及数据库服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710773708.4A CN110019113B (zh) 2017-08-31 2017-08-31 一种数据库的业务处理方法及数据库服务器

Publications (2)

Publication Number Publication Date
CN110019113A true CN110019113A (zh) 2019-07-16
CN110019113B CN110019113B (zh) 2022-11-08

Family

ID=67186170

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710773708.4A Active CN110019113B (zh) 2017-08-31 2017-08-31 一种数据库的业务处理方法及数据库服务器

Country Status (1)

Country Link
CN (1) CN110019113B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930830A (zh) * 2020-06-22 2020-11-13 心有灵犀科技股份有限公司 一种基于共享数据库的分布式事务数据处理方法及系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040123048A1 (en) * 2002-07-22 2004-06-24 Ward Mullins Dynamic object-driven database manipulation and mapping system having a simple global interface and an optional multiple user need only caching system with disable and notify features
CN102609467A (zh) * 2012-01-16 2012-07-25 北京星网锐捷网络技术有限公司 数据库连接管理方法和装置
CN102622427A (zh) * 2012-02-27 2012-08-01 杭州闪亮科技有限公司 读写分离数据库的方法及系统
CN103067293A (zh) * 2012-12-31 2013-04-24 北京京东世纪贸易有限公司 负载均衡设备的连接管理和复用的方法和系统
CN103207908A (zh) * 2013-03-29 2013-07-17 成都康赛电子科大信息技术有限责任公司 多数据源动态隔离访问方法
CN103336782A (zh) * 2013-05-30 2013-10-02 莱诺斯科技(北京)有限公司 一种关系型分布式数据库系统
CN103746935A (zh) * 2013-12-27 2014-04-23 华中科技大学 一种基于应用层协议的带宽合并中间件系统
CN105824866A (zh) * 2015-12-14 2016-08-03 广东亿迅科技有限公司 一种基于nio实现分布式的关系数据库共享型连接池
CN106909563A (zh) * 2015-12-23 2017-06-30 上海热璞网络科技有限公司 一种分布式系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040123048A1 (en) * 2002-07-22 2004-06-24 Ward Mullins Dynamic object-driven database manipulation and mapping system having a simple global interface and an optional multiple user need only caching system with disable and notify features
CN102609467A (zh) * 2012-01-16 2012-07-25 北京星网锐捷网络技术有限公司 数据库连接管理方法和装置
CN102622427A (zh) * 2012-02-27 2012-08-01 杭州闪亮科技有限公司 读写分离数据库的方法及系统
CN103067293A (zh) * 2012-12-31 2013-04-24 北京京东世纪贸易有限公司 负载均衡设备的连接管理和复用的方法和系统
CN103207908A (zh) * 2013-03-29 2013-07-17 成都康赛电子科大信息技术有限责任公司 多数据源动态隔离访问方法
CN103336782A (zh) * 2013-05-30 2013-10-02 莱诺斯科技(北京)有限公司 一种关系型分布式数据库系统
CN103746935A (zh) * 2013-12-27 2014-04-23 华中科技大学 一种基于应用层协议的带宽合并中间件系统
CN105824866A (zh) * 2015-12-14 2016-08-03 广东亿迅科技有限公司 一种基于nio实现分布式的关系数据库共享型连接池
CN106909563A (zh) * 2015-12-23 2017-06-30 上海热璞网络科技有限公司 一种分布式系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930830A (zh) * 2020-06-22 2020-11-13 心有灵犀科技股份有限公司 一种基于共享数据库的分布式事务数据处理方法及系统

Also Published As

Publication number Publication date
CN110019113B (zh) 2022-11-08

Similar Documents

Publication Publication Date Title
EP2932370B1 (en) System and method for performing a transaction in a massively parallel processing database
CN104410672B (zh) 网络功能虚拟化应用升级的方法、转发业务的方法及装置
CN104160381B (zh) 多租户环境中租户特定数据集的管理方法及其系统
CN102103518B (zh) 一种在虚拟化环境中管理资源的系统及其实现方法
CN106453360B (zh) 基于iSCSI协议的分布式块存储数据访问方法及系统
CN108616578A (zh) 跨区块链平台的业务处理方法、设备及计算机可读存储介质
WO2021155642A1 (zh) 数据处理方法、装置、分布式数据流编程框架及相关组件
CN103970607A (zh) 使用等价集合来计算优化虚拟机分配的方法和装置
US20130117290A1 (en) Platform for software as a service and method for provisioning service for supporting multi-tenants using the platform
CN101373474A (zh) 海量数据实时处理架构及用于该架构的实时随需处理平台
CN102985922A (zh) 在计算空间中管理分布计算的方法和装置
CN105164677A (zh) 在并行数据库处执行存储过程
US10397317B2 (en) Boomerang join: a network efficient, late-materialized, distributed join technique
EP4028904B1 (en) Automatic derivation of shard key values and transparent multi-shard transaction and query support
CN110069431A (zh) 基于RDMA和HTM的弹性Key-Value键值对数据存储方法
CN110489446A (zh) 基于分布式数据库的查询方法及装置
CN105049530A (zh) 多种分布式缓存系统的自适配装置和方法
WO2024060956A1 (zh) 一种混合数据库管理方法、装置、混合数据库及电子设备
CN105930417A (zh) 一种基于云计算的大数据etl交互式处理平台
CN108696373B (zh) 虚拟资源分配方法、nfvo和系统
CN106547790A (zh) 一种关系型数据库服务系统
CN112104504B (zh) 一种大规模资源访问的事务管理框架、设计方法及云平台
CN110019113A (zh) 一种数据库的业务处理方法及数据库服务器
US8694559B2 (en) Using database content for multiple business data systems connected to one database
Zhou et al. SDN northbound REST API with efficient caches

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200201

Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant after: HUAWEI TECHNOLOGIES Co.,Ltd.

Address before: 210012 HUAWEI Nanjing base, 101 software Avenue, Yuhuatai District, Jiangsu, Nanjing

Applicant before: HUAWEI SOFTWARE TECHNOLOGIES Co.,Ltd.

GR01 Patent grant
GR01 Patent grant