一种数据库的业务处理方法及数据库服务器技术

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

A Business Processing Method of Database and Database Server

【技术实现步骤摘要】
一种数据库的业务处理方法及数据库服务器
本申请涉及数据领域,具体涉及一种数据库的业务处理方法及数据库服务器。
技术介绍
在大型应用中,数据库已经成为了不可缺少的部分,数据库的所有操作都需要通过数据库连接来完成。如果每次操作数据库,都向数据库创建连接,在操作结束后,再向数据库释放该链接。这样,每次操作数据库,都需要建立一次连接,连接建立的过程开销大,大大影响业务应用的性能。因此,在业务应用中一般会缓存该连接,操作完数据库后,并不释放,而是缓存起来,供下次使用。在实际应用中,数据库连接资源一般较为紧缺,即数据库所能提供的连接是有限的,如果缓存过多连接,会引起数据库性能下降等问题。为了解决此问题,数据库连接池的概念应运而生。如图1所示,图1是采用连接池的数据库架构示意图,在业务应用程序中,会针对每一个数据库用户,创建一个连接池。当需要操作数据库时,会从对应用户的连接池中获取连接,通过该连接执行对应用户的SQL语句;当操作完数据库后,会将该连接再放回连接池中,供后续使用。这样可以保证不在执行的业务不会持有数据库连接,达到降低数据库连接数量的目的。即让应用业务开发人员在写结构化查询语音(structuredquerylanguage,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请求。本申请第二方面提供了一种数据库服务器,该数据库服务器包括了用于执行第二方面或第二方面的任一种实现方式中提供的数据库的业务处理方法的至少一个单元。本申请又一方面提供了一种计算机可读存储介质,该存储介质中存储了程序代码,该程序代码被终端运行时,使得计算机执行上述各方面所述的方法。该存储介质包括但不限于快闪存储器(flashmemory),硬盘(harddiskdrive,简称HDD)或固态硬盘(solidstatedrive,简称SSD)。本申请的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。附图说明图1是采用连接池的数据库架构示意图;图2是本申请实施例的数据库系统本文档来自技高网...

【技术保护点】
1.一种数据库的业务处理方法,应用于数据库系统,所述数据库系统包括业务层和第一数据库,其特征在于,所述数据库系统还包括设置在业务层和第一数据库之间的分布式数据处理模块,所述方法包括:所述分布式数据处理模块接收应用层发出的第一结构化查询语言SQL请求,所述第一SQL请求中携带有第一SQL语句;所述分布式数据处理模块根据解析所述第一SQL语句中的第一表名并查找所述第一数据库中所述第一表名所属用户的用户名,所述分布式数据处理模块中存储有所述第一数据库中表名与用户名的对应关系;所述分布式数据处理模块根据预设配置规则、所述第一表名以及对应的用户名生成第二SQL请求,所述第二SQL请求中携带有第二SQL语句,所述第二SQL语句中的表名为具有所述第一表名对应用户名的表名;所述分布式数据处理模块将所述第二SQL请求发送至所述第一数据库内的第一用户,所述第一数据库内除所述第一用户之外的用户均授权至所述第一用户。

【技术特征摘要】
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.一种数据库服务器,其...

【专利技术属性】
技术研发人员:王炜张建勋赵俊
申请(专利权)人:华为软件技术有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1