CN111427695A - 一种分布式数据库中存储过程的并发调度装置 - Google Patents
一种分布式数据库中存储过程的并发调度装置 Download PDFInfo
- Publication number
- CN111427695A CN111427695A CN202010247685.5A CN202010247685A CN111427695A CN 111427695 A CN111427695 A CN 111427695A CN 202010247685 A CN202010247685 A CN 202010247685A CN 111427695 A CN111427695 A CN 111427695A
- Authority
- CN
- China
- Prior art keywords
- distributed database
- storage process
- operation module
- stored
- communication interface
- 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 89
- 230000008569 process Effects 0.000 title claims abstract description 54
- 238000004891 communication Methods 0.000 claims abstract description 34
- 238000011114 storage process operation Methods 0.000 claims abstract description 20
- 238000012986 modification Methods 0.000 claims abstract description 4
- 230000004048 modification Effects 0.000 claims abstract description 4
- 238000012217 deletion Methods 0.000 claims abstract description 3
- 230000037430 deletion Effects 0.000 claims abstract description 3
- 238000011112 process operation Methods 0.000 claims description 17
- 239000000126 substance Substances 0.000 claims 1
- 238000012546 transfer Methods 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 12
- 239000002253 acid Substances 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Abstract
本发明提供一种分布式数据库中存储过程的并发调度装置,属于数据库技术领域,包括原分布式数据库,通信接口,存储过程操作模块;存储过程操作模块进一步分为一个主进程和对应于每个用户窗口的子进程;主进程通过一个由共享内存实现的调度队列管理各个子进程。所述原分布式数据库是一个独立的分布式数据库,记录存储过程和其他数据。所述通信接口负责分布式数据库和存储过程操作模块间SQL语句和数据的信息交换。所述存储过程操作模块的主进程负责通过通信模块和分布式数据库进行SQL交流和数据传输。所述存储过程操作模块的子进程负责具体的存储过程操作,包括创建、执行、修改和删除。
Description
技术领域
本发明涉及数据库技术,尤其涉及一种分布式数据库中存储过程的并发调度装置。
背景技术
CockroachDB是一款开源的分布式数据库,具有NoSQL对海量数据的存储管理能力,又保持了传统数据库支持的ACID和SQL等,还支持跨地域、去中心、高并发、多副本强一致和高可用等特性。存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升
目前,CockroachDB只支持单条的SQL语句和有限的带参数的SQL语句,并不支持存储过程。如果想令CockroachDB支持存储过程,一种方法是将其他数据库(如PostgreSQL)的存储过程操作模块嵌入CockroachDB,由CockroachDB将存储过程的创建、执行等命令发送给PostgreSQL模块,由PostgreSQL模块解析命令,将解析得到的SQL语句送回CockroachDB执行。但是,在PostgreSQL中每一个用户session对应一个进程,而CockroachDB中并非如此,故以上方案不支持并发操作存储过程。将相关代码段简单加锁后可以支持并发,但本质上是依次执行,效率很低,实用性有限。
发明内容
为了解决以上技术问题,本发明提出了一种分布式数据库中存储过程的并发调度装置,用于解决分布式数据库内嵌存储过程模块以支持存储过程的方案中不支持并发、并发效率低下的问题。
本发明的技术方案是:
一种分布式数据库中存储过程的并发调度装置,包括原分布式数据库,通信接口,存储过程操作模块;
其中,存储过程操作模块可以进一步分为一个主进程和对应于每个用户窗口的子进程,它们之间是一对多的关系;主进程通过一个由共享内存实现的调度队列管理各个子进程。
所述原分布式数据库包括底层元数据库和分布式引擎,用于记录存储过程和储存其他数据,并执行存储过程操作模块解析得到的SQL语句。
所述原分布式数据库,可以是任意不原生支持存储过程的分布式数据库。
所述通信接口负责分布式数据库和存储过程操作模块间SQL语句和数据的信息交换。对于创建、执行等存储过程操作,通信接口将代表存储过程操作的SQL语句发送给存储过程操作模块,并将返回的操作结果发送回分布式数据库。在存储过程操作模块将存储过程操作解析为SQL语句后,通信接口将它们发送回分布式数据库执行,并将执行结果或拉取的数据发送给存储过程操作模块。
所述通信接口,是由合适方法实现的,原分布式数据库和存储过程操作模块间的通信接口。除通信外,还包括模块初始化、错误捕获及处理等功能。
所述存储过程操作模块的主进程负责通过通信接口和分布式数据库进行SQL交流和数据传输,同时为每一个用户窗口创建并维护一个子进程。所述存储过程操作模块的子进程负责具体的存储过程操作,包括创建、执行、修改和删除;当需要读写元数据表时,通过主进程向分布式数据库请求拉取数据或操作数据。
所述存储过程操作模块,可以是任何支持存储过程的数据库的存储过程操作模块,主进程-子进程模式在存储过程并发调度方面的应用。
本发明的有益效果是
允许存储过程操作模块对系统资源的复用,支持较大程度的存储过程并发操作,较简单加锁效率更高,更加适用于存在中大规模并发的实际应用场景中。
附图说明
图1是本发明的工作流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明包括原分布式数据库,通信接口,存储过程操作模块;其中,存储过程操作模块可以进一步分为一个主进程和对应于每个用户窗口的子进程,它们之间是一对多的关系;主进程通过一个由共享内存实现的调度队列管理各个子进程。所述原分布式数据库是一个独立的分布式数据库,记录存储过程和其他数据。所述通信接口负责分布式数据库和存储过程操作模块间SQL语句和数据的信息交换。所述存储过程操作模块的主进程负责通过通信接口和分布式数据库进行SQL交流和数据传输,同时为每一个用户窗口创建并维护一个子进程。所述存储过程操作模块的子进程负责具体的存储过程操作,包括创建、执行、修改和删除;当需要读写元数据表时,通过主进程向分布式数据库请求拉取数据或操作数据。
实施例:
原分布式数据库采用CockroachDB,存储过程操作模块采用PostgreSQL,由于前者由Go语言实现而后者由C语言实现,通信接口选择由Cgo实现,通信接口部分包括调用相应函数将PostgreSQL所需环境初始化的功能,CockroachDB与PostgreSQL存储过程模块间信息交流的功能和捕获错误及异常并向CockroachDB报告的功能。
当用户发起一条存储过程创建命令时,运行流程如下:
1.用户向CockroachDB键入存储过程创建命令,如
2.校验Create Procedure语法的合法性(不校验存储过程内部SQL语句的合法性),若通过校验,则调用相应C函数将存储过程创建语句发送给通信接口。
3.通信接口收到存储过程创建语句后,额外地,若是本次服务中第一次执行存储过程相关操作,则调用相应函数对PostgreSQL模块做必要的初始化,包括pid锁,共享内存等。然后注册错误及异常处理,确定捕获错误及异常的跳转点。最后将存储过程创建语句发送给PostgreSQL存储过程模块。
4.PostgreSQL存储过程模块接收到存储过程创建语句后,按照PostgreSQL的原本正常流程解析并处理该语句。期间需要向CockroachDB索取namespace信息等数据,此时PostgreSQL模块生成一条拉取信息的SQL语句,通过函数指针调用通信接口,将该SQL发送给CockroachDB。CockroachDB执行该查询语句,将数据经由通信接口发送回PostgreSQL模块。
5.PostgreSQL模块执行存储过程创建语句的最后生成一条插入语句,用于将存储过程相关数据插入到CockroachDB的系统表Procedures中。PostgreSQL模块过函数指针调用通信接口,将该SQL发送给CockroachDB。CockroachDB执行该插入语句,将执行结果(成功与否等)经由通信接口发送回PostgreSQL模块。
6.若执行成功,PostgreSQL模块将代表执行成功的字符串经通信接口发送回CockroachDB,本方法涉及的部分结束。若在PostgreSQL模块解析并处理创建语句的过程中产生错误或异常,则由通信接口捕获并跳转到特定位置,将error或panic信息发送给CockroachDB。
当用户发起一条存储过程执行命令时,本方法的运行流程是:
1.用户向CockroachDB键入存储过程执行命令,如Call test_proc();
2.校验Call Procedure语法的合法性(不校验存储过程内部SQL语句的合法性),若通过校验,则调用相应C函数将存储过程执行语句发送给通信接口。
3.通信接口收到存储过程执行语句后,额外地,若是本次服务中第一次执行存储过程相关操作,则调用相应函数对PostgreSQL模块做必要的初始化,包括pid锁,共享内存等。然后注册错误及异常处理,确定捕获错误及异常的跳转点。最后将存储过程执行语句发送给PostgreSQL存储过程模块。
4.PostgreSQL存储过程模块接收到存储过程执行语句后,按照PostgreSQL的原本正常流程解析并处理该语句,期间,以下行为均需访问CockroachDB:由存储过程名获取存储过程数据、执行存储过程中的多条SQL语句以及执行update等语句时向CockroachDB拉取数据。需访问CockroachDB时,PostgreSQL模块生成相应的SQL语句,通过函数指针调用通信接口,将该SQL发送给CockroachDB。CockroachDB执行该语句,将所请求的数据或执行结果经由通信接口发送回PostgreSQL模块。
5.若执行成功,PostgreSQL模块将代表执行成功的字符串经通信接口发送回CockroachDB,本方法涉及的部分结束。若在PostgreSQL模块解析并处理存储过程执行语句的过程中产生错误或异常,则由通信接口捕获并跳转到特定位置,将error或panic信息发送给CockroachDB。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种分布式数据库中存储过程的并发调度装置,其特征在于,
包括原分布式数据库,通信接口,存储过程操作模块;
其中,
所述原分布式数据库是一个独立的分布式数据库,记录存储过程;
所述通信接口负责分布式数据库和存储过程操作模块间SQL语句和数据的信息交换;
所述存储过程操作模块的主进程负责通过通信接口和分布式数据库进行SQL交流和数据传输。
2.根据权利要求1所述的装置,其特征在于,
存储过程操作模块进一步分为一个主进程和对应于每个用户窗口的子进程;主进程通过一个由共享内存实现的调度队列管理各个子进程。
3.根据权利要求2所述的装置,其特征在于,
存储过程操作模块为每一个用户窗口创建并维护一个子进程。
4.根据权利要求1所述的装置,其特征在于,
所述原分布式数据库还执行存储过程操作模块解析得到的SQL语句。
5.根据权利要求1所述的装置,其特征在于,
对于存储过程操作,通信接口将代表存储过程操作的SQL语句发送给存储过程操作模块,并将返回的操作结果发送回分布式数据库。
6.根据权利要求5所述的装置,其特征在于,
在存储过程操作模块将存储过程操作解析为SQL语句后,通信接口将它们发送回分布式数据库执行,并将执行结果或拉取的数据发送给存储过程操作模块。
7.根据权利要求3所述的装置,其特征在于,
所述存储过程操作模块的子进程负责存储过程操作,包括创建、执行、修改和删除。
8.根据权利要求7所述的装置,其特征在于,
当需要读写元数据表时,通过主进程向分布式数据库请求拉取数据或操作数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010247685.5A CN111427695A (zh) | 2020-04-01 | 2020-04-01 | 一种分布式数据库中存储过程的并发调度装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010247685.5A CN111427695A (zh) | 2020-04-01 | 2020-04-01 | 一种分布式数据库中存储过程的并发调度装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111427695A true CN111427695A (zh) | 2020-07-17 |
Family
ID=71550383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010247685.5A Pending CN111427695A (zh) | 2020-04-01 | 2020-04-01 | 一种分布式数据库中存储过程的并发调度装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111427695A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112269835A (zh) * | 2020-11-10 | 2021-01-26 | 浪潮云信息技术股份公司 | 一种分布式数据库异步读取并处理批量数据的方法 |
CN113094449A (zh) * | 2021-04-09 | 2021-07-09 | 天津大学 | 基于分布式键值库的大规模知识图谱存储方案 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536963A (zh) * | 2014-11-13 | 2015-04-22 | 中国建设银行股份有限公司 | 一种存储过程的调度方法和系统 |
CN107766378A (zh) * | 2016-08-22 | 2018-03-06 | 南京中兴新软件有限责任公司 | 请求信息的发送方法及装置、分布式数据库系统 |
US20180203908A1 (en) * | 2017-01-16 | 2018-07-19 | Kabushiki Kaisha Toshiba | Distributed database system and distributed data processing method |
CN108520003A (zh) * | 2018-03-12 | 2018-09-11 | 新华三大数据技术有限公司 | 一种存储过程调度系统和方法 |
CN109885585A (zh) * | 2019-02-18 | 2019-06-14 | 星环信息科技(上海)有限公司 | 支持存储过程、触发器与视图的分布式数据库系统和方法 |
-
2020
- 2020-04-01 CN CN202010247685.5A patent/CN111427695A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536963A (zh) * | 2014-11-13 | 2015-04-22 | 中国建设银行股份有限公司 | 一种存储过程的调度方法和系统 |
CN107766378A (zh) * | 2016-08-22 | 2018-03-06 | 南京中兴新软件有限责任公司 | 请求信息的发送方法及装置、分布式数据库系统 |
US20180203908A1 (en) * | 2017-01-16 | 2018-07-19 | Kabushiki Kaisha Toshiba | Distributed database system and distributed data processing method |
CN108520003A (zh) * | 2018-03-12 | 2018-09-11 | 新华三大数据技术有限公司 | 一种存储过程调度系统和方法 |
CN109885585A (zh) * | 2019-02-18 | 2019-06-14 | 星环信息科技(上海)有限公司 | 支持存储过程、触发器与视图的分布式数据库系统和方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112269835A (zh) * | 2020-11-10 | 2021-01-26 | 浪潮云信息技术股份公司 | 一种分布式数据库异步读取并处理批量数据的方法 |
CN113094449A (zh) * | 2021-04-09 | 2021-07-09 | 天津大学 | 基于分布式键值库的大规模知识图谱存储方案 |
CN113094449B (zh) * | 2021-04-09 | 2023-04-18 | 天津大学 | 基于分布式键值库的大规模知识图谱存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
US7680793B2 (en) | Commit-time ordered message queue supporting arbitrary read and dequeue patterns from multiple subscribers | |
US9037555B2 (en) | Asynchronous collection and correlation of trace and communications event data | |
CN101719149B (zh) | 数据同步方法及装置 | |
US20090037422A1 (en) | Combining capture and apply in a distributed information sharing system | |
US7580979B2 (en) | Message ordering in a messaging system | |
US7581225B2 (en) | Multithreading with concurrency domains | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
CN110362617B (zh) | 基于多并发技术从数据库快速导出批量数据方法和系统 | |
CN109033359A (zh) | 一种多进程安全访问sqlite的方法 | |
CN111427695A (zh) | 一种分布式数据库中存储过程的并发调度装置 | |
CN112231407B (zh) | PostgreSQL数据库的DDL同步方法、装置、设备和介质 | |
CN106326129A (zh) | 一种程序异常信息生成方法及装置 | |
CN114090529A (zh) | 一种日志管理方法、装置、系统和存储介质 | |
CN113962597A (zh) | 一种数据分析方法、装置、电子设备及存储介质 | |
Ilin et al. | Performance analysis of software with a variant NoSQL data schemes | |
US20120317073A1 (en) | Replication Support for Procedures with Arguments of Unsupported Types | |
CN111274215A (zh) | 一种基于分布式的日志统一管理方法 | |
CN116185298A (zh) | 一种日志分布式存储的方法 | |
CN115022402A (zh) | 一种基于一栈式集成技术的agent采集方法及系统 | |
CN112527497B (zh) | 一种序列化多线程数据处理系统 | |
CN110399296B (zh) | 测试客户端与服务端之间交互接口的方法、系统和介质 | |
US8359602B2 (en) | Method and system for task switching with inline execution | |
CN112667614A (zh) | 一种数据处理方法、装置及计算机设备 | |
CN110515993B (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 |
Application publication date: 20200717 |
|
RJ01 | Rejection of invention patent application after publication |