CN112699150A - 一种数据库操作框架、方法及系统 - Google Patents
一种数据库操作框架、方法及系统 Download PDFInfo
- Publication number
- CN112699150A CN112699150A CN202110002124.3A CN202110002124A CN112699150A CN 112699150 A CN112699150 A CN 112699150A CN 202110002124 A CN202110002124 A CN 202110002124A CN 112699150 A CN112699150 A CN 112699150A
- Authority
- CN
- China
- Prior art keywords
- database
- read
- write
- service thread
- connection
- 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 63
- 230000004044 response Effects 0.000 claims description 38
- 238000012544 monitoring process Methods 0.000 claims description 23
- 230000002159 abnormal effect Effects 0.000 claims description 21
- 230000002860 competitive effect Effects 0.000 claims description 13
- 238000004140 cleaning Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 7
- 238000013461 design Methods 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000001360 synchronised effect Effects 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/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据库操作框架、方法及系统,该框架包括:数据库连接池,被配置为响应于读服务线程和/或写服务线程发送的连接请求将数据库连接的使用权交给读服务线程和/或写服务线程;读服务线程池,被配置为用于通过轮询至少一个应用程序创建的读写消息队列以获取读操作消息,根据读操作消息从数据库连接池中获取数据库连接以执行数据库读操作;写服务线程池,被配置为用于通过轮询至少一个应用程序创建的读写操作消息队列以获取写操作消息,根据写操作消息从数据库连接池中获取数据库连接以执行数据库写操作。利用上述方法,能够缓解数据库连接瞬间冲高的压力,另外采用读写异步设计模式,有效地提升数据库操作性能。
Description
技术领域
本发明属于数据库领域,具体涉及一种数据库操作框架、方法及系统。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
通常应用程序通过调用数据库提供的客户端API来进行数据库的连接、读写、事务提交/回滚、断开等操作,应用程序与数据库操作紧耦合。另外在分布式多应用节点的批处理系统环境中,批处理应用程序一般采用短连接的方式,任务发起时多应用节点同时高并发的进行数据库连接,使得数据库节点的连接压力瞬间冲高,将导致某些连接请求被拒绝。此外,应用程序对数据库的读写操作一般采用同步方式,也就是读取完一条数据记录后,需要等到这条记录的所有业务逻辑处理完后才能读取下一条进行处理,但通常数据库读操作性能远高于业务逻辑处理性能(简称写性能),由于写性能瓶颈会导致应用整体性能无法提升。
发明内容
针对上述现有技术中存在的问题,提出了一种数据库操作框架、数据库操作方法和系统,利用这种方法、装置及计算机可读存储介质,能够解决上述问题。
本发明提供了以下方案。
第一方面,提供一种数据库操作框架,包括:数据库连接池,其包括多个预设的数据库连接,被配置为响应于读服务线程和/或写服务线程发送的连接请求将数据库连接的使用权交给读服务线程和/或写服务线程;读服务线程池,其包括多个读服务线程,被配置为用于通过轮询至少一个应用程序创建的读写消息队列以获取读操作消息,根据读操作消息从数据库连接池中获取数据库连接以执行数据库读操作;写服务线程池,其包括多个写服务线程,被配置为用于通过轮询至少一个应用程序创建的读写操作消息队列以获取写操作消息,根据写操作消息从数据库连接池中获取数据库连接以执行数据库写操作。
在一实施例中,数据库操作框架还包括:连接池监控线程,被配置为用于对数据库连接池的多个数据库连接进行监控;其中,当监控到数据库连接池中的数据库连接的数量比配置信息少时,使数据库连接池创建新的数据库连接;当监控到数据库连接池中存在空闲状态维持超过预设时间的数据库连接时,使数据库连接池释放数据库连接。
在一实施例中,框架还包括:框架清理工具,用于当数据库操作框架异常或应用程序异常退出时,对数据库操作框架的主服务使用到的消息队列和/或连接资源进行清理和/或事务回滚和/或连接释放操作;以及,框架查看工具,用于在数据库操作框架运行期间即时查看消息队列、数据库连接池的状态信息。
在一实施例中,数据库连接池被配置为还用于执行:响应于第一预设条件而创建新的数据库连接;以及,响应于第二预设条件而释放读服务线程和/或写服务线程处占用的数据库连接。
在一实施例中,数据库连接池被配置为还用于:A、接收读/写服务线程发送的连接请求;B、判断数据库连接池是否包括空闲数据库连接,其中,若数据库连接池包含空闲数据库连接,则向读/写服务线程分配空闲数据库连接;C、若数据库连接池不包含空闲数据库连接,则进一步判断数据库连接池是否已经达到了最大连接限制,其中,若数据库连接池未达到最大连接限制,则创建新的数据库连接,并向读/写服务线程分配新创建的数据库连接;D、若数据库连接池达到最大连接限制,则在等待之后进一步判断连接请求是否超时,若连接请求超时,则向读写服务线程返回应答异常信息;若连接请求未超时,则重复执行步骤B~D。
在一实施例中,在将数据库连接的使用权交给读/写服务线程之后,数据库连接池被配置为还用于:E、接收读/写服务线程发送的释放连接请求;F、判断数据库连接池是否锁空闲,其中,若数据库连接池锁空闲则释放数据库连接;G、若数据库连接池并非锁空闲,则在等待之后进一步判断释放连接请求是否超时,其中,若释放连接请求超时则向读/写服务线程返回应答异常信息,若释放连接请求未超时,则重复执行步骤F~G。
在一实施例中,读服务线程池被配置为还用于:当从至少一个应用程序创建的状态消息队列中获取应用程序广播的读通知时,读服务线程池中的各个读服务线程轮询读写消息队列,以竞争方式获取应用程序发送的读操作消息,读操作消息包括目标读数据库名称和读SQL语句;读服务线程根据读操作消息从数据库连接池中获取数据库连接,基于数据库连接对目标读数据库执行读SQL语句,并从目标读数据库获取读数据,将获得的读数据返回读写消息队列,以使应用程序获得读数据;读服务线程在获取读数据完成之后生成读完成消息,并将读完成消息发送至读写消息队列,之后读服务线程主动释放数据库连接。
在一实施例中,读服务线程池被配置为用于:利用读服务线程对目标读数据库执行读SQL语句并获取列属性,列属性包括数据类型、长度定义信息;将列属性作为应答消息发送至读写消息队列,以使应用程序基于列属性创建内存空间,其中内存空间的空间大小根据列属性指示的最大数据长度确定。
在一实施例中,读服务线程池被配置为用于:利用读服务线程循环执行数据库读操作,并将多笔读取的读数据打包为读数据包之后一并发送至应用程序的读写消息队列;其中,读服务线程先向读写消息队列发送读数据包的属性信息,属性信息包括读数据包的长度信息和消息类型,以使应用程序基于数据包的属性信息从读写消息队列获取读数据包。
在一实施例中,写服务线程池被配置为用于:当从至少一个应用程序创建的状态消息队列中获取应用程序广播的写通知时,写服务线程池中的各个写服务线程轮询读写消息队列,以竞争方式获取至少一个应用程序发送的写操作消息,写操作消息包括目标写数据库名称和写SQL语句;写服务线程根据写操作消息从数据库连接池中获取数据库连接,基于数据库连接对数据库执行写SQL语句,以将写数据写至目标写数据库。
在一实施例中,写服务线程池被配置为用于:利用写服务线程通过读写消息队列接收应用程序发送的预写请求消息,预写请求消息包含应用程序的写数据包的长度以及消息类型;利用写服务线程根据预写请求消息包含的数据包长度和消息类型从读写消息队列获取写数据包;其中,应用程序预先将多笔写操作消息打包为写数据包,并依次将写数据包的属性信息和写数据包发送至读写消息队列。
在一实施例中,写服务线程池中的多个写服务线程是并发执行的。
在一实施例中,读/写服务线程池和应用程序之间使用接口或者共享内存或者管道方式实现通信。
第二方面,提供一种基于数据库操作框架的数据库操作方法,数据库操作框架为权利要求1-13中任一项的数据库操作框架,方法包括:利用数据库连接池响应于读服务线程和/或写服务线程发送的连接请求将数据库连接的使用权交给读服务线程和/或写服务线程;利用读服务线程池通过轮询至少一个应用程序创建的读写消息队列以获取读操作消息,根据读操作消息从数据库连接池中获取数据库连接以执行数据库读操作;利用写服务线程池通过轮询至少一个应用程序创建的读写操作消息队列以获取写操作消息,根据写操作消息从数据库连接池中获取数据库连接以执行数据库写操作。
在一实施例中,数据库操作方法还包括:利用连接池监控线程对数据库连接池的多个数据库连接进行监控;其中,当监控到数据库连接池中的数据库连接的数量比配置信息少时,使数据库连接池创建新的数据库连接;当监控到数据库连接池中存在空闲状态维持超过预设时间的数据库连接时,使数据库连接池释放数据库连接。
在一实施例中,方法还包括:利用方法清理工具在数据库操作方法异常或应用程序异常退出时,对数据库操作方法的主服务使用到的消息队列和/或连接资源进行清理和/或事务回滚和/或连接释放操作;以及,利用方法查看工具在数据库操作方法运行期间即时查看消息队列、数据库连接池的状态信息。
在一实施例中,方法还包括:利用数据库连接池执行:响应于第一预设条件而创建新的数据库连接;以及,响应于第二预设条件而释放读服务线程和/或写服务线程处占用的数据库连接。
在一实施例中,方法还包括:利用数据库连接池执行:A、接收读/写服务线程发送的连接请求;B、判断数据库连接池是否包括空闲数据库连接,其中,若数据库连接池包含空闲数据库连接,则向读/写服务线程分配空闲数据库连接;C、若数据库连接池不包含空闲数据库连接,则进一步判断数据库连接池是否已经达到了最大连接限制,其中,若数据库连接池未达到最大连接限制,则创建新的数据库连接,并向读/写服务线程分配新创建的数据库连接;D、若数据库连接池达到最大连接限制,则在等待之后进一步判断连接请求是否超时,若连接请求超时,则向读写服务线程返回应答异常信息;若连接请求未超时,则重复执行步骤B~D。
在一实施例中,方法还包括:在将数据库连接的使用权交给读/写服务线程之后,利用数据库连接池执行:E、接收读/写服务线程发送的释放连接请求;F、判断数据库连接池是否锁空闲,其中,若数据库连接池锁空闲则释放数据库连接;G、若数据库连接池并非锁空闲,则在等待之后进一步判断释放连接请求是否超时,其中,若释放连接请求超时则向读/写服务线程返回应答异常信息,若释放连接请求未超时,则重复执行步骤F~G。
在一实施例中,方法还包括:利用数据库连接池执行:当从至少一个应用程序创建的状态消息队列中获取应用程序广播的读通知时,读服务线程池中的各个读服务线程轮询读写消息队列,以竞争方式获取应用程序发送的读操作消息,读操作消息包括目标读数据库名称和读SQL语句;读服务线程根据读操作消息从数据库连接池中获取数据库连接,基于数据库连接对目标读数据库执行读SQL语句,并从目标读数据库获取读数据,将获得的读数据返回读写消息队列,以使应用程序获得读数据;读服务线程在获取读数据完成之后生成读完成消息,并将读完成消息发送至读写消息队列,之后读服务线程主动释放数据库连接。
在一实施例中,方法还包括:利用读服务线程池执行:利用读服务线程对目标读数据库执行读SQL语句并获取列属性,列属性包括数据类型、长度定义信息;将列属性作为应答消息发送至读写消息队列,以使应用程序基于列属性创建内存空间,其中内存空间的空间大小根据列属性指示的最大数据长度确定。
在一实施例中,方法还包括:利用读服务线程池执行:利用读服务线程循环执行数据库读操作,并将多笔读取的读数据打包为读数据包之后一并发送至应用程序的读写消息队列;其中,读服务线程先向读写消息队列发送读数据包的属性信息,属性信息包括读数据包的长度信息和消息类型,以使应用程序基于数据包的属性信息从读写消息队列获取读数据包。
在一实施例中,方法还包括:利用写服务线程池执行:当从至少一个应用程序创建的状态消息队列中获取应用程序广播的写通知时,写服务线程池中的各个写服务线程轮询读写消息队列,以竞争方式获取至少一个应用程序发送的写操作消息,写操作消息包括目标写数据库名称和写SQL语句;写服务线程根据写操作消息从数据库连接池中获取数据库连接,基于数据库连接对数据库执行写SQL语句,以将写数据写至目标写数据库。
在一实施例中,方法还包括:利用写服务线程池执行:利用写服务线程通过读写消息队列接收应用程序发送的预写请求消息,预写请求消息包含应用程序的写数据包的长度以及消息类型;利用写服务线程根据预写请求消息包含的数据包长度和消息类型从读写消息队列获取写数据包;其中,应用程序预先将多笔写操作消息打包为写数据包,并依次将写数据包的属性信息和写数据包发送至读写消息队列。
在一实施例中,写服务线程池中的多个写服务线程是并发执行的。
在一实施例中,读/写服务线程池和应用程序之间使用接口或者共享内存或者管道方式实现通信。
第三方面,提供一种高性能数据库操作系统,包括:如第一方面的数据库操作框架、至少一个应用程序、用于实现应用程序和数据库操作框架之间的通信连接的框架接口,以及与数据库操作框架连接的数据库集群。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本实施例中,通过设计基于连接池、线程池技术的数据库操作框架,应用程序通过调用数据库操作框架的接口即可完成数据库操作,实现应用程序与数据库解耦,数据库操作交由框架的读写服务完成。通过使用数据库连接池技术缓解数据库连接瞬间冲高的压力,另外采用读写异步设计模式,有效地提升数据库操作性能。
应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施方式。
附图说明
通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的优点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
图1为根据本发明一实施例的数据库操作框架的结构示意图;
图2为根据本发明一实施例的数据库连接池的连接请求和释放的示意图;
图3为根据本发明一实施例的基于数据库操作框架的读流程示意图;
图4为根据本发明一实施例的基于数据库操作框架的写流程示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在本申请实施例的描述中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
为清楚阐述本申请实施例,首先将介绍一些后续实施例中可能会出现的概念。
概念描述:
SQL、是指结构化查询语言(Structured Query Language),其是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
本发明实施例提供一种数据库操作框架10,
数据库连接池11,其包括多个预设的数据库连接,其中各个数据库连接用于和数据库集群30中的各个数据库db1、db2、…、dbN对应连接,该数据库连接池11连接至读服务线程池12和写服务线程池13,被配置为响应于读服务线程和/或写服务线程发送的连接请求将数据库连接的使用权交给读服务线程和/或写服务线程,也即实现连接分配功能。
在一实施例中,数据库连接池11还用于实现连接创建和连接释放功能,连接创建是指响应于第一预设条件(比如数据库连接池中的数据库连接不够用时)而创建新的数据库连接。连接释放是指响应于第二预设条件(比如读写服务线程使用完连接后,主动发起了释放连接的请求)而释放读服务线程和/或写服务线程处占用的数据库连接。
读服务线程池12,其通过框架接口20和多个外部的应用程序1、2、3相连接,读服务线程池12包括多个读服务线程,被配置为用于通过轮询至少一个应用程序创建的读写消息队列以获取读操作消息,根据读操作消息从数据库连接池中获取数据库连接以执行数据库读操作。读服务线程将数据库数据读取完成后需要向应用程序的读写消息队列发送读完成消息,读服务将数据库数据读取完成后会主动释放连接。
写服务线程池13,其通过框架接口20和多个外部的应用程序1、2、3相连接,写服务线程池13包括多个写服务线程,被配置为用于通过轮询至少一个应用程序创建的读写操作消息队列以获取写操作消息(比如数据库表更新/删除/插入等操作消息),根据写操作消息从数据库连接池中获取数据库连接以执行数据库写操作。应用程序无数据可写后需要以广播的方式向读写消息队列发送写完成消息;写服务线程读取到写完成消息后,需对该应用程序发起的写操作进行事务提交,并返回事务提交是否成功结果。
在一实施例中,参见图1,数据库操作框架还可以包括:连接池监控线程14,被配置为用于对数据库连接池11的多个数据库连接进行监控。其中,当连接池监控线程14监控到数据库连接池中的数据库连接的数量比配置信息少时,连接池监控线程14可以向数据库连接池发送监控应答信息,使数据库连接池基于接收的监控应答信息创建新的数据库连接;当连接池监控线程14监控到数据库连接池11中存在空闲状态维持超过预设时间的数据库连接时,连接池监控线程14可以向数据库连接池发送另一监控应答信息,使数据库连接池基于另一监控应答信息释放该数据库连接。
在一实施例中,该框架还可以包括:框架清理工具,用于当数据库操作框架异常或应用程序异常退出时,对数据库操作框架的主服务使用到的消息队列、连接资源进行清理、事务回滚、连接释放等操作。以及,该框架还可以包括:框架查看工具,用于在数据库操作框架运行期间即时查看消息队列以及数据库连接池的状态信息。
在一实施例中,参考图2,数据库连接池11被配置为还用于执行以下步骤:
A:接收读/写服务线程发送的连接请求;
B:判断数据库连接池是否包括空闲数据库连接。其中,B-1:若数据库连接池包含空闲数据库连接,则向读/写服务线程分配空闲数据库连接;B-2:若数据库连接池不包含空闲数据库连接,则进一步执行C。
C:判断数据库连接池是否已经达到了最大连接限制。其中,C-1:若数据库连接池未达到最大连接限制,则执行C-11:创建新的数据库连接,并执行C-12:向读/写服务线程分配新创建的数据库连接;相反地,C-2:若数据库连接池达到最大连接限制,则再执行C-3:等待之后进一步执行D。
D:判断连接请求是否超时。其中,D-1:若连接请求超时,则向读写服务线程返回应答异常信息;D-2:若连接请求未超时,则重复执行以上步骤B~D。
在一实施例中,参考图2,在将数据库连接的使用权交给读/写服务线程之后,数据库连接池被配置为还用于:
E:接收读/写服务线程发送的释放连接请求;
F:判断数据库连接池是否锁空闲。其中,F-1:若数据库连接池锁空闲则执行释放数据库连接;F-2:若数据库连接池并非锁空闲,则在执行G等待之后进一步执行G。
G:判断释放连接请求是否超时。其中,G-1:若释放连接请求超时则向读/写服务线程返回应答异常信息;G-2:若释放连接请求未超时,则重复执行步骤F~G。
可以理解,数据库操作框架的读写服务与数据库的连接通过连接池方式,由于应用程序与数据库存在多种交互方式,在同一连接池中设计多种操作属性的连接,可分别用于数据库读、单笔写、多笔写操作。
一个实施例中,读服务线程池12被配置为还用于:当从至少一个应用程序创建的状态消息队列中获取应用程序广播的读通知时,读服务线程池中的各个读服务线程轮询读写消息队列,以竞争方式获取应用程序发送的读操作消息,读操作消息包括目标读数据库名称和读SQL语句;读服务线程根据读操作消息从数据库连接池中获取数据库连接,基于数据库连接对目标读数据库执行读SQL语句,并从目标读数据库获取读数据,将获得的读数据返回读写消息队列,以使应用程序获得读数据;读服务线程在获取读数据完成之后生成读完成消息,并将读完成消息发送至读写消息队列,之后读服务线程主动释放数据库连接。
图3示出了数据库读操作流程,参考图3,其中,应用层可以是指图1中的应用程序1、2、3。服务层可以理解为图1中的数据库操作框架10。通信层用于实现应用层和服务层之间的数据交换,可以理解为图1中的框架接口20。数据层包括数据库,可以理解为图1中的数据库集群30。其中,(1)框架首先初始化数据库连接池,应用程序首先初始化创建读写消息队列,接下来(2)向状态消息队列广播读通知,接下来(2-1)服务层的读服务线程池中的多个读服务线程获取该读通知,获得读写消息队列并开始轮询监听读写消息队列,应用程序准备读SQL,接下来(3)向读写消息队列发送读操作消息,读操作消息可以包括数据库名称和SQL语句,接下来(3-1)读服务线程池中的多个读服务线程以竞争方式从读写消息队列获取读操作消息,接下来(3-2)获取读SQL。接下来(3-3)读服务线程根据获取的读操作消息从数据库连接池获取数据库连接。在(3-4)执行SQL成功之后,执行(3-5)向消息队列发送列属性,该列属性包括数据类型、长度定义信息;接下来,(3-6)应用程序从读写消息队列获取该对应的列属性,从而可以基于列属性创建内存空间,其中内存空间的空间大小根据列属性指示的最大数据长度创建一次即可,后续再使用只需初始化值,提升客户端读取数据性能。读服务线程执行SQL成功之后可以循环执行获取数据操作,并将多笔读取的读数据重新组装为读数据包之后一并发送至读写消息队列;其中,首先执行(4-1)读服务线程向读写消息队列发送读数据包的属性信息,属性信息包括读数据包的长度信息和消息类型,在后执行(5-1)读服务线程向读写消息队列发送读数据包。以使应用程序首先执行(4-2)获取数据包的属性信息,在后基于数据包的属性信息执行(5-2)从读写消息队列循环获取数据包,解包后执行业务处理。应用程序在退出(含失败)时,可以通过状态消息队列向所有读、写服务线程发送即将删除的msgid信息,然后再删除消息队列,最后退出。
参考图3,读服务线程池被配置为还用于:利用读服务线程对目标读数据库执行读SQL语句并获取列属性,列属性包括数据类型、长度定义信息;将列属性作为应答消息发送至读写消息队列,以使应用程序基于列属性创建内存空间,其中内存空间的空间大小根据列属性指示的最大数据长度确定。
可以理解,读服务通过应用程序发送的读请求消息(主要包含数据库名、读SQL语句等信息),从连接池获取数据库连接后执行SQL,获取列的属性信息(包括数据类型、长度定义等信息),将属性信息组成一笔应答消息发送至应用程序端,应用程序端接收到此消息后创建内存空间,用于存储查询结果集中各列的值,空间大小只需按列最大长度创建一次,后续再使用只需初始化值,提升客户端读取数据性能。
参考图3,读服务线程池被配置为用于:利用读服务线程循环执行数据库读操作,并将多笔读取的读数据打包为读数据包之后一并发送至应用程序的读写消息队列;其中,读服务线程先向读写消息队列发送读数据包的属性信息,属性信息包括读数据包的长度信息和消息类型,以使应用程序基于数据包的属性信息从读写消息队列获取读数据包。
可以理解,读服务从数据库表读取数据时,可以采用多笔打包方式发送至应用程序的消息队列。做法是读服务每次发送数据包前,会先发送一条数据包属性信息,其包含下一数据包的长度以及消息类型,应用程序调用接口方式根据预返回消息包含的数据包长度和消息类型从消息队列获取数据(一个数据包含多笔查询结果记录),以此提升应用程序读取数据性能。
在一实施例中,其中写服务线程池被配置为用于:当从至少一个应用程序创建的状态消息队列中获取应用程序广播的写通知时,写服务线程池中的各个写服务线程轮询读写消息队列,以竞争方式获取至少一个应用程序发送的写操作消息,写操作消息包括目标写数据库名称和写SQL语句;写服务线程根据写操作消息从数据库连接池中获取数据库连接,基于数据库连接对数据库执行写SQL语句,以将写数据写至目标写数据库。
图4示出了数据库写操作流程,参考图4,其中,应用层可以是指图1中的应用程序1、2、3。服务层可以理解为图1中的数据库操作框架10。通信层用于实现应用层和服务层之间的数据交换,可以理解为图1中的框架接口20。数据层包括数据库,可以理解为图1中的数据库集群30。其中,与上述读操作流程区别较大的是:应用程序预先将多笔写操作消息打包为写数据包,而后应用程序执行(3)先向读写消息队列发送预写请求消息,预写请求消息包含应用程序的写数据包的长度以及消息类型;应用程序然后执行(3-2)向读写消息队列发送写数据包本身,由此写服务线程能在(3-1)获取到该预写请求消息之后,基于该预写请求消息执行(3-3)根据预写请求消息包含的数据包长度和消息类型从读写消息队列获取写数据包;其中,并依次将写数据包的属性信息和写数据包发送至读写消息队列。写服务线程执行SQL成功后执行(3-7)向消息队列写执行成功的应答消息。应用程序在不再执行数据库写操作后,需要执行(4)通过读写消息队列向所有写服务线程发送写完成通知。写服务线程从状态消息队列收到写完成通知后,仅将改应用程序需要处理的数据进行提交,提交后向应用程序的读写消息队列发成功应答消息。应用程序需要等到所有写服务线程都应答成功后才能退出。应用程序在退出(含失败)时,通过状态消息队列向所有读、写服务线程发送即将删除的msgid信息,然后再删除消息队列,最后退出。
参考图4,其中写服务线程池被配置为用于:利用写服务线程通过读写消息队列接收应用程序发送的预写请求消息,预写请求消息包含应用程序的写数据包的长度以及消息类型;利用写服务线程根据预写请求消息包含的数据包长度和消息类型从读写消息队列获取写数据包;其中,应用程序预先将多笔写操作消息打包为写数据包,并依次将写数据包的属性信息和写数据包发送至读写消息队列。
可以理解,发起数据库写操作时,应用程序也不是每次发送写操作消息(主要包含数据库名、更新/删除/插入SQL语句等信息),而是组包进行发送,具体做法是应用程序每次发送写请求数据消息前,调用接口会发送一条预写请求消息,包含下一数据包的长度以及消息类型,写服务根据预写请求消息包含的数据包长度和消息类型从消息队列获取写数据后批量进行数据库操作,以此提升应用程序写数据性能。
在一实施例中,中写服务线程池中的多个写服务线程是并发执行的。
可以理解,为提升数据写性能,数据库操作框架中的写服务是并发的,对于应用程序数据消息队列中的写请求,各写服务通过竞争方式先获取预写请求信息,然后再根据预写操作消息中写操作消息(主要包含数据库名、更新/删除/插入SQL语句等信息)的消息类型和长度的获取数据包进行数据写操作。写服务在处理每一笔写请求时需要根据写方式(多笔、单笔)获取数据库连接,一个包处理完成后释放所有连接,而不会长期持有连接。
在一实施例中,读/写服务线程池和应用程序之间使用接口或者共享内存或者管道方式实现通信。
基于相同的技术构思,本发明实施例还提供一种基于数据库操作框架的数据库操作方法,数据库操作框架为图1所示的数据库操作框架。
该方法包括:利用数据库连接池响应于读服务线程和/或写服务线程发送的连接请求将数据库连接的使用权交给读服务线程和/或写服务线程;利用读服务线程池通过轮询至少一个应用程序创建的读写消息队列以获取读操作消息,根据读操作消息从数据库连接池中获取数据库连接以执行数据库读操作;利用写服务线程池通过轮询至少一个应用程序创建的读写操作消息队列以获取写操作消息,根据写操作消息从数据库连接池中获取数据库连接以执行数据库写操作。
在一实施例中,数据库操作方法还包括:利用连接池监控线程对数据库连接池的多个数据库连接进行监控;其中,当监控到数据库连接池中的数据库连接的数量比配置信息少时,使数据库连接池创建新的数据库连接;当监控到数据库连接池中存在空闲状态维持超过预设时间的数据库连接时,使数据库连接池释放数据库连接。
在一实施例中,方法还包括:利用方法清理工具在数据库操作方法异常或应用程序异常退出时,对数据库操作方法的主服务使用到的消息队列和/或连接资源进行清理和/或事务回滚和/或连接释放操作;以及,利用方法查看工具在数据库操作方法运行期间即时查看消息队列、数据库连接池的状态信息。
在一实施例中,方法还包括:利用数据库连接池执行:响应于第一预设条件而创建新的数据库连接;以及,响应于第二预设条件而释放读服务线程和/或写服务线程处占用的数据库连接。
在一实施例中,方法还包括:利用数据库连接池执行:A、接收读/写服务线程发送的连接请求;B、判断数据库连接池是否包括空闲数据库连接,其中,若数据库连接池包含空闲数据库连接,则向读/写服务线程分配空闲数据库连接;C、若数据库连接池不包含空闲数据库连接,则进一步判断数据库连接池是否已经达到了最大连接限制,其中,若数据库连接池未达到最大连接限制,则创建新的数据库连接,并向读/写服务线程分配新创建的数据库连接;D、若数据库连接池达到最大连接限制,则在等待之后进一步判断连接请求是否超时,若连接请求超时,则向读写服务线程返回应答异常信息;若连接请求未超时,则重复执行步骤B~D。
在一实施例中,方法还包括:在将数据库连接的使用权交给读/写服务线程之后,利用数据库连接池执行:E、接收读/写服务线程发送的释放连接请求;F、判断数据库连接池是否锁空闲,其中,若数据库连接池锁空闲则释放数据库连接;G、若数据库连接池并非锁空闲,则在等待之后进一步判断释放连接请求是否超时,其中,若释放连接请求超时则向读/写服务线程返回应答异常信息,若释放连接请求未超时,则重复执行步骤F~G。
在一实施例中,方法还包括:利用数据库连接池执行:当从至少一个应用程序创建的状态消息队列中获取应用程序广播的读通知时,读服务线程池中的各个读服务线程轮询读写消息队列,以竞争方式获取应用程序发送的读操作消息,读操作消息包括目标读数据库名称和读SQL语句;读服务线程根据读操作消息从数据库连接池中获取数据库连接,基于数据库连接对目标读数据库执行读SQL语句,并从目标读数据库获取读数据,将获得的读数据返回读写消息队列,以使应用程序获得读数据;读服务线程在获取读数据完成之后生成读完成消息,并将读完成消息发送至读写消息队列,之后读服务线程主动释放数据库连接。
在一实施例中,方法还包括:利用读服务线程池执行:利用读服务线程对目标读数据库执行读SQL语句并获取列属性,列属性包括数据类型、长度定义信息;将列属性作为应答消息发送至读写消息队列,以使应用程序基于列属性创建内存空间,其中内存空间的空间大小根据列属性指示的最大数据长度确定。
在一实施例中,方法还包括:利用读服务线程池执行:利用读服务线程循环执行数据库读操作,并将多笔读取的读数据打包为读数据包之后一并发送至应用程序的读写消息队列;其中,读服务线程先向读写消息队列发送读数据包的属性信息,属性信息包括读数据包的长度信息和消息类型,以使应用程序基于数据包的属性信息从读写消息队列获取读数据包。
在一实施例中,方法还包括:利用写服务线程池执行:当从至少一个应用程序创建的状态消息队列中获取应用程序广播的写通知时,写服务线程池中的各个写服务线程轮询读写消息队列,以竞争方式获取至少一个应用程序发送的写操作消息,写操作消息包括目标写数据库名称和写SQL语句;写服务线程根据写操作消息从数据库连接池中获取数据库连接,基于数据库连接对数据库执行写SQL语句,以将写数据写至目标写数据库。
在一实施例中,方法还包括:利用写服务线程池执行:利用写服务线程通过读写消息队列接收应用程序发送的预写请求消息,预写请求消息包含应用程序的写数据包的长度以及消息类型;利用写服务线程根据预写请求消息包含的数据包长度和消息类型从读写消息队列获取写数据包;其中,应用程序预先将多笔写操作消息打包为写数据包,并依次将写数据包的属性信息和写数据包发送至读写消息队列。
在一实施例中,写服务线程池中的多个写服务线程是并发执行的。
在一实施例中,读/写服务线程池和应用程序之间使用接口或者共享内存或者管道方式实现通信。
本申请还提供一种高性能数据库操作系统,如图1所示,其包括:如数据库操作框架10、至少一个应用程序、用于实现应用程序和数据库操作框架之间的通信连接的框架接口20,以及与数据库操作框架连接的数据库集群30。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本实施例中,通过设计基于连接池、线程池技术的数据库操作框架,应用程序通过调用数据库操作框架的接口即可完成数据库操作,实现应用程序与数据库解耦,数据库操作交由框架的读写服务完成。通过使用数据库连接池技术缓解数据库连接瞬间冲高的压力,另外采用读写异步设计模式,有效地提升数据库操作性能。
尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (27)
1.一种数据库操作框架,其特征在于,包括:
数据库连接池,其包括多个预设的数据库连接,被配置为响应于读服务线程和/或写服务线程发送的连接请求将所述数据库连接的使用权交给读服务线程和/或写服务线程;
读服务线程池,其包括多个所述读服务线程,被配置为用于通过轮询至少一个应用程序创建的读写消息队列以获取读操作消息,根据所述读操作消息从所述数据库连接池中获取数据库连接以执行数据库读操作;
写服务线程池,其包括多个所述写服务线程,被配置为用于通过轮询所述至少一个应用程序创建的读写操作消息队列以获取写操作消息,根据所述写操作消息从所述数据库连接池中获取数据库连接以执行数据库写操作。
2.根据权利要求1所述的框架,其特征在于,所述数据库操作框架还包括:
连接池监控线程,被配置为用于对所述数据库连接池的多个数据库连接进行监控;
其中,当监控到所述数据库连接池中的数据库连接的数量比配置信息少时,使所述数据库连接池创建新的数据库连接;当监控到所述数据库连接池中存在空闲状态维持超过预设时间的数据库连接时,使所述数据库连接池释放数据库连接。
3.根据权利要求1所述的框架,其特征在于,所述框架还包括:
框架清理工具,用于当所述数据库操作框架异常或所述应用程序异常退出时,对所述数据库操作框架的主服务使用到的消息队列和/或连接资源进行清理和/或事务回滚和/或连接释放操作;以及,
框架查看工具,用于在所述数据库操作框架运行期间即时查看消息队列、数据库连接池的状态信息。
4.根据权利要求1所述的框架,其特征在于,所述数据库连接池被配置为还用于执行:
响应于第一预设条件而创建新的数据库连接;以及,响应于第二预设条件而释放所述读服务线程和/或写服务线程处占用的数据库连接。
5.根据权利要求1所述的框架,其特征在于,所述数据库连接池被配置为还用于:
A、接收所述读/写服务线程发送的连接请求;
B、判断所述数据库连接池是否包括空闲数据库连接,其中,若所述数据库连接池包含所述空闲数据库连接,则向所述读/写服务线程分配所述空闲数据库连接;
C、若所述数据库连接池不包含所述空闲数据库连接,则进一步判断所述数据库连接池是否已经达到了最大连接限制,其中,若所述数据库连接池未达到所述最大连接限制,则创建新的数据库连接,并向所述读/写服务线程分配新创建的所述数据库连接;
D、若所述数据库连接池达到最大连接限制,则在等待之后进一步判断所述连接请求是否超时,若所述连接请求超时,则向所述读写服务线程返回应答异常信息;若所述连接请求未超时,则重复执行步骤B~D。
6.根据权利要求5所述的框架,其特征在于,在将所述数据库连接的使用权交给读/写服务线程之后,所述数据库连接池被配置为还用于:
E、接收所述读/写服务线程发送的释放连接请求;
F、判断所述数据库连接池是否锁空闲,其中,若所述数据库连接池锁空闲则释放数据库连接;
G、若所述数据库连接池并非锁空闲,则在等待之后进一步判断所述释放连接请求是否超时,其中,若所述释放连接请求超时则向所述读/写服务线程返回应答异常信息,若所述释放连接请求未超时,则重复执行步骤F~G。
7.根据权利要求1所述的框架,其特征在于,所述读服务线程池被配置为还用于:
当从所述至少一个应用程序创建的状态消息队列中获取所述应用程序广播的读通知时,所述读服务线程池中的各个读服务线程轮询所述读写消息队列,以竞争方式获取所述应用程序发送的所述读操作消息,所述读操作消息包括目标读数据库名称和读SQL语句;
所述读服务线程根据所述读操作消息从所述数据库连接池中获取数据库连接,基于所述数据库连接对所述目标读数据库执行所述读SQL语句,并从所述目标读数据库获取读数据,将获得的所述读数据返回所述读写消息队列,以使所述应用程序获得所述读数据;
所述读服务线程在所述获取读数据完成之后生成读完成消息,并将所述读完成消息发送至所述读写消息队列,之后所述读服务线程主动释放所述数据库连接。
8.根据权利要求7所述的框架,其特征在于,所述读服务线程池被配置为用于:
利用所述读服务线程对所述目标读数据库执行所述读SQL语句并获取列属性,所述列属性包括数据类型、长度定义信息;
将所述列属性作为应答消息发送至所述读写消息队列,以使所述应用程序基于所述列属性创建内存空间,其中所述内存空间的空间大小根据所述列属性指示的最大数据长度确定。
9.根据权利要求7所述的框架,其特征在于,所述读服务线程池被配置为用于:
利用所述读服务线程循环执行所述数据库读操作,并将多笔读取的所述读数据打包为读数据包之后一并发送至所述应用程序的读写消息队列;
其中,所述读服务线程先向所述读写消息队列发送所述读数据包的属性信息,所述属性信息包括所述读数据包的长度信息和消息类型,以使所述应用程序基于所述数据包的属性信息从所述读写消息队列获取所述读数据包。
10.根据权利要求1所述的框架,其特征在于,所述写服务线程池被配置为用于:
当从所述至少一个应用程序创建的状态消息队列中获取所述应用程序广播的写通知时,所述写服务线程池中的各个写服务线程轮询所述读写消息队列,以竞争方式获取所述至少一个应用程序发送的写操作消息,所述写操作消息包括目标写数据库名称和写SQL语句;
所述写服务线程根据所述写操作消息从所述数据库连接池中获取数据库连接,基于所述数据库连接对所述数据库执行所述写SQL语句,以将写数据写至所述目标写数据库。
11.根据权利要求1所述的框架,其特征在于,所述写服务线程池被配置为用于:
利用所述写服务线程通过所述读写消息队列接收所述应用程序发送的预写请求消息,所述预写请求消息包含所述应用程序的写数据包的长度以及消息类型;
利用所述写服务线程根据所述预写请求消息包含的数据包长度和消息类型从所述读写消息队列获取写数据包;
其中,所述应用程序预先将多笔写操作消息打包为写数据包,并依次将所述写数据包的属性信息和所述写数据包发送至所述读写消息队列。
12.根据权利要求1所述的框架,其特征在于,所述写服务线程池中的多个所述写服务线程是并发执行的。
13.根据权利要求1所述的框架,其特征在于,所述读/写服务线程池和所述应用程序之间使用接口或者共享内存或者管道方式实现通信。
14.一种基于数据库操作框架的数据库操作方法,其特征在于,所述数据库操作框架为权利要求1-13中任一项所述的数据库操作框架,所述方法包括:
利用数据库连接池响应于读服务线程和/或写服务线程发送的连接请求将所述数据库连接的使用权交给读服务线程和/或写服务线程;
利用读服务线程池通过轮询至少一个应用程序创建的读写消息队列以获取读操作消息,根据所述读操作消息从所述数据库连接池中获取数据库连接以执行数据库读操作;
利用写服务线程池通过轮询所述至少一个应用程序创建的读写操作消息队列以获取写操作消息,根据所述写操作消息从所述数据库连接池中获取数据库连接以执行数据库写操作。
15.根据权利要求14所述的方法,其特征在于,所述数据库操作方法还包括:
利用连接池监控线程对所述数据库连接池的多个数据库连接进行监控;
其中,当监控到所述数据库连接池中的数据库连接的数量比配置信息少时,使所述数据库连接池创建新的数据库连接;当监控到所述数据库连接池中存在空闲状态维持超过预设时间的数据库连接时,使所述数据库连接池释放数据库连接。
16.根据权利要求14所述的方法,其特征在于,所述方法还包括:
利用方法清理工具在所述数据库操作方法异常或所述应用程序异常退出时,对所述数据库操作方法的主服务使用到的消息队列和/或连接资源进行清理和/或事务回滚和/或连接释放操作;以及,
利用方法查看工具在所述数据库操作方法运行期间即时查看消息队列、数据库连接池的状态信息。
17.根据权利要求14所述的方法,其特征在于,所述方法还包括利用所述数据库连接池执行:响应于第一预设条件而创建新的数据库连接;以及,响应于第二预设条件而释放所述读服务线程和/或写服务线程处占用的数据库连接。
18.根据权利要求14所述的方法,其特征在于,所述方法还包括利用所述数据库连接池执行:
A、接收所述读/写服务线程发送的连接请求;
B、判断所述数据库连接池是否包括空闲数据库连接,其中,若所述数据库连接池包含所述空闲数据库连接,则向所述读/写服务线程分配所述空闲数据库连接;
C、若所述数据库连接池不包含所述空闲数据库连接,则进一步判断所述数据库连接池是否已经达到了最大连接限制,其中,若所述数据库连接池未达到所述最大连接限制,则创建新的数据库连接,并向所述读/写服务线程分配新创建的所述数据库连接;
D、若所述数据库连接池达到最大连接限制,则在等待之后进一步判断所述连接请求是否超时,若所述连接请求超时,则向所述读写服务线程返回应答异常信息;若所述连接请求未超时,则重复执行步骤B~D。
19.根据权利要求18所述的方法,其特征在于,在将所述数据库连接的使用权交给读/写服务线程之后,利用所述数据库连接池执行:
E、接收所述读/写服务线程发送的释放连接请求;
F、判断所述数据库连接池是否锁空闲,其中,若所述数据库连接池锁空闲则释放数据库连接;
G、若所述数据库连接池并非锁空闲,则在等待之后进一步判断所述释放连接请求是否超时,其中,若所述释放连接请求超时则向所述读/写服务线程返回应答异常信息,若所述释放连接请求未超时,则重复执行步骤F~G。
20.根据权利要求14所述的方法,其特征在于,所述方法还包括利用所述数据库连接池执行:
当从所述至少一个应用程序创建的状态消息队列中获取所述应用程序广播的读通知时,所述读服务线程池中的各个读服务线程轮询所述读写消息队列,以竞争方式获取所述应用程序发送的所述读操作消息,所述读操作消息包括目标读数据库名称和读SQL语句;
所述读服务线程根据所述读操作消息从所述数据库连接池中获取数据库连接,基于所述数据库连接对所述目标读数据库执行所述读SQL语句,并从所述目标读数据库获取读数据,将获得的所述读数据返回所述读写消息队列,以使所述应用程序获得所述读数据;
所述读服务线程在所述获取读数据完成之后生成读完成消息,并将所述读完成消息发送至所述读写消息队列,之后所述读服务线程主动释放所述数据库连接。
21.根据权利要求20所述的方法,其特征在于,所述方法还包括利用所述读服务线程池执行:
利用所述读服务线程对所述目标读数据库执行所述读SQL语句并获取列属性,所述列属性包括数据类型、长度定义信息;
将所述列属性作为应答消息发送至所述读写消息队列,以使所述应用程序基于所述列属性创建内存空间,其中所述内存空间的空间大小根据所述列属性指示的最大数据长度确定。
22.根据权利要求20所述的方法,其特征在于,所述方法还包括利用所述读服务线程池执行:
利用所述读服务线程循环执行所述数据库读操作,并将多笔读取的所述读数据打包为读数据包之后一并发送至所述应用程序的读写消息队列;
其中,所述读服务线程先向所述读写消息队列发送所述读数据包的属性信息,所述属性信息包括所述读数据包的长度信息和消息类型,以使所述应用程序基于所述数据包的属性信息从所述读写消息队列获取所述读数据包。
23.根据权利要求14所述的方法,其特征在于,所述方法还包括利用所述写服务线程池执行:
当从所述至少一个应用程序创建的状态消息队列中获取所述应用程序广播的写通知时,所述写服务线程池中的各个写服务线程轮询所述读写消息队列,以竞争方式获取所述至少一个应用程序发送的写操作消息,所述写操作消息包括目标写数据库名称和写SQL语句;
所述写服务线程根据所述写操作消息从所述数据库连接池中获取数据库连接,基于所述数据库连接对所述数据库执行所述写SQL语句,以将写数据写至所述目标写数据库。
24.根据权利要求14所述的方法,其特征在于,所述方法还包括利用所述写服务线程池执行:
利用所述写服务线程通过所述读写消息队列接收所述应用程序发送的预写请求消息,所述预写请求消息包含所述应用程序的写数据包的长度以及消息类型;
利用所述写服务线程根据所述预写请求消息包含的数据包长度和消息类型从所述读写消息队列获取写数据包;
其中,所述应用程序预先将多笔写操作消息打包为写数据包,并依次将所述写数据包的属性信息和所述写数据包发送至所述读写消息队列。
25.根据权利要求14所述的方法,其特征在于,所述写服务线程池中的多个所述写服务线程是并发执行的。
26.根据权利要求14所述的方法,其特征在于,所述读/写服务线程池和所述应用程序之间使用接口或者共享内存或者管道方式实现通信。
27.一种高性能数据库操作系统,其特征在于,包括:
如权利要求1-13中任一项所述的数据库操作框架,至少一个应用程序以,用于实现所述应用程序和所述数据库操作框架之间的通信连接的框架接口以及与所述数据库操作框架连接的数据库集群。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110002124.3A CN112699150A (zh) | 2021-01-04 | 2021-01-04 | 一种数据库操作框架、方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110002124.3A CN112699150A (zh) | 2021-01-04 | 2021-01-04 | 一种数据库操作框架、方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112699150A true CN112699150A (zh) | 2021-04-23 |
Family
ID=75514422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110002124.3A Pending CN112699150A (zh) | 2021-01-04 | 2021-01-04 | 一种数据库操作框架、方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112699150A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113220458A (zh) * | 2021-05-26 | 2021-08-06 | 西安热工研究院有限公司 | 一种数据库连接池实现负载均衡的实时调度方法和装置 |
CN113312388A (zh) * | 2021-05-28 | 2021-08-27 | 中国船舶重工集团公司第七0七研究所 | 一种多线程且安全的数据库存储框架的构建方法 |
CN114500628A (zh) * | 2021-12-30 | 2022-05-13 | 天翼云科技有限公司 | 一种连接选择方法及装置 |
CN117195204A (zh) * | 2023-11-01 | 2023-12-08 | 建信金融科技有限责任公司 | 异常数据检测方法、装置、电子设备及计算机可读介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1448867A (zh) * | 2002-03-30 | 2003-10-15 | 深圳市中兴通讯股份有限公司 | 一种统一访问数据库系统的方法 |
CN103729373A (zh) * | 2012-10-15 | 2014-04-16 | 北京新媒传信科技有限公司 | 一种数据库代理方法和装置 |
CN106649857A (zh) * | 2016-12-30 | 2017-05-10 | 北京恒华伟业科技股份有限公司 | 一种基于读写分离的数据库操作方法及装置 |
CN109684397A (zh) * | 2018-12-24 | 2019-04-26 | 广东亿迅科技有限公司 | 基于influx dB数据库连接池和管理方法 |
CN109918399A (zh) * | 2018-08-13 | 2019-06-21 | 新华三大数据技术有限公司 | 数据写入方法及装置 |
-
2021
- 2021-01-04 CN CN202110002124.3A patent/CN112699150A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1448867A (zh) * | 2002-03-30 | 2003-10-15 | 深圳市中兴通讯股份有限公司 | 一种统一访问数据库系统的方法 |
CN103729373A (zh) * | 2012-10-15 | 2014-04-16 | 北京新媒传信科技有限公司 | 一种数据库代理方法和装置 |
CN106649857A (zh) * | 2016-12-30 | 2017-05-10 | 北京恒华伟业科技股份有限公司 | 一种基于读写分离的数据库操作方法及装置 |
CN109918399A (zh) * | 2018-08-13 | 2019-06-21 | 新华三大数据技术有限公司 | 数据写入方法及装置 |
CN109684397A (zh) * | 2018-12-24 | 2019-04-26 | 广东亿迅科技有限公司 | 基于influx dB数据库连接池和管理方法 |
Non-Patent Citations (1)
Title |
---|
郑天民: "《向技术管理者转型 软件开发人员跨越行业、技术、管理的转型思维与实践》", 31 October 2017, 九州出版社, pages: 132 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113220458A (zh) * | 2021-05-26 | 2021-08-06 | 西安热工研究院有限公司 | 一种数据库连接池实现负载均衡的实时调度方法和装置 |
CN113220458B (zh) * | 2021-05-26 | 2022-11-01 | 西安热工研究院有限公司 | 一种数据库连接池实现负载均衡的实时调度方法和装置 |
CN113312388A (zh) * | 2021-05-28 | 2021-08-27 | 中国船舶重工集团公司第七0七研究所 | 一种多线程且安全的数据库存储框架的构建方法 |
CN114500628A (zh) * | 2021-12-30 | 2022-05-13 | 天翼云科技有限公司 | 一种连接选择方法及装置 |
CN117195204A (zh) * | 2023-11-01 | 2023-12-08 | 建信金融科技有限责任公司 | 异常数据检测方法、装置、电子设备及计算机可读介质 |
CN117195204B (zh) * | 2023-11-01 | 2024-02-13 | 建信金融科技有限责任公司 | 异常数据检测方法、装置、电子设备及计算机可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112699150A (zh) | 一种数据库操作框架、方法及系统 | |
CN107729139B (zh) | 一种并发获取资源的方法和装置 | |
US10019297B2 (en) | Systems and methods for implementing bulk handling in asynchronous processing | |
CN107402956B (zh) | 大任务的数据处理方法、设备和计算机可读存储介质 | |
CN107113341B (zh) | 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统 | |
CN110188110B (zh) | 一种构建分布式锁的方法及装置 | |
CN107203560B (zh) | 数据库、多数据库操作事务一致性保证方法及系统 | |
JPH1165863A (ja) | 共有資源管理方法 | |
CN103970520A (zh) | MapReduce架构中的资源管理方法、装置和架构系统 | |
CN110968603B (zh) | 一种数据访问方法及装置 | |
CN110058940B (zh) | 一种多线程环境下的数据处理方法及装置 | |
US20140053157A1 (en) | Asynchronous execution flow | |
CN111784318B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113157411B (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
US20160294726A1 (en) | System and method for reducing communications overhead in a distributed transactions environment by modifying implementation of the transaction end function | |
CN113590433B (zh) | 数据管理方法、数据管理系统和计算机可读存储介质 | |
CN107590199B (zh) | 一种面向内存的多线程数据库设计方法 | |
CN111290842A (zh) | 一种任务执行方法和装置 | |
US20140215475A1 (en) | System and method for supporting work sharing muxing in a cluster | |
US9984096B2 (en) | System and method for reducing communications overhead in a distributed transactions environment by modifying implementation of the transaction start function | |
CN111949687B (zh) | 基于共享内存和多进程的分布式数据库架构及其实现方法 | |
CN114168594A (zh) | 一种水平分区表的二级索引创建方法、装置、设备及存储介质 | |
CN116547660A (zh) | 使用全局时间戳的分布式数据库事务的方法和装置 | |
CN102760155A (zh) | 一种基于数据库的事务控制方法及装置 | |
CN110807031A (zh) | 一种基于spark的数据连接方法、装置 |
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 |