CN116150250B - 一种基于PostgreSQL的双端口解析方法及装置 - Google Patents
一种基于PostgreSQL的双端口解析方法及装置 Download PDFInfo
- Publication number
- CN116150250B CN116150250B CN202310422938.1A CN202310422938A CN116150250B CN 116150250 B CN116150250 B CN 116150250B CN 202310422938 A CN202310422938 A CN 202310422938A CN 116150250 B CN116150250 B CN 116150250B
- Authority
- CN
- China
- Prior art keywords
- port
- database
- client
- parser
- grammar
- 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.)
- Active
Links
- 238000004458 analytical method Methods 0.000 title abstract description 19
- 238000000034 method Methods 0.000 claims abstract description 82
- 238000012545 processing Methods 0.000 claims abstract description 32
- 230000009977 dual effect Effects 0.000 claims abstract description 21
- 230000008569 process Effects 0.000 claims abstract description 21
- 238000012544 monitoring process Methods 0.000 claims description 60
- 230000006870 function Effects 0.000 claims description 11
- 238000012795 verification Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 4
- 238000013508 migration Methods 0.000 abstract description 6
- 230000005012 migration Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000000926 separation method Methods 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/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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于PostgreSQL的双端口解析方法及装置,属于端口解析技术领域,用于解决PostgreSQL架构目前无法对其他数据库特性进行扩展,无法高效快速进行数据迁移操作的技术问题。方法包括:在第一端口配置文件所在的第一数据库数据目录中,创建第二端口配置文件;在第一语法解析器所在的第一数据库解析器模块中,创建第二数据库对应的第二语法解析器。根据客户端连接请求中的端口号,确定对应的端口;创建对应的子进程处理客户端连接请求;启动端口对应的语法解析器,通过语法解析器处理来自客户端的SQL请求,并将对应语法结果返回给客户端。实现了基于PostgreSQL双端口监听及双解析器架构。
Description
技术领域
本发明涉及端口解析技术领域,尤其涉及一种基于PostgreSQL的双端口解析方法及装置。
背景技术
关系型数据库PostgreSQL的端口通信以及解析处理都是基于原有默认端口及解析器,仅针对PostgreSQL自身的结构化查询语言(Structured Query Language,SQL)语句以及过程化SQL语言(Procedural Language/ Postgres SQL,PLPGSQL)语句进行语法解析。PostgreSQL响应客户端的请求后,通过数据库管理程序Postmaster进程调用派生函数(fork函数),创建对应的子进程,然后进行相关的SQL语句以及PLPGSQL的处理。
关系型数据库中,每个数据库启动都是以进程方式(或者说叫数据库实例)启动,随着数据库应用的深入,在使用PostgreSQL时,会出现需要将数据迁移到其他数据库的情况,这就需要在PostgreSQL数据库实例上扩展需要迁移的目的数据库的特征,比如在PostgreSQL数据库中扩展Oracle数据库的数据库特性。而由于当前PostgreSQL的通信及处理属于单端口及单解析器的处理架构,因此原有PostgreSQL架构目前无法对其他数据库特性进行扩展。若不解决此问题,则需要通过更加复杂的方式进行数据库迁移,增加迁移的整体技术难度和迁移成本。
发明内容
本发明实施例提供了一种基于PostgreSQL的双端口解析方法及装置,用于解决如下技术问题:PostgreSQL架构目前无法对其他数据库特性进行扩展,无法高效快速进行数据迁移操作。
本发明实施例采用下述技术方案:
一方面,本发明实施例提供了一种基于PostgreSQL的双端口解析方法,所述方法包括:在第一端口配置文件所在的第一数据库数据目录中,创建第二端口配置文件;其中,所述第二端口配置文件为第二数据库的端口配置文件;在第一语法解析器所在的第一数据库解析器模块中,创建所述第二数据库对应的第二语法解析器。
在一种可行的实施方式中,在第一端口配置文件所在的第一数据库初始化数据目录中,创建第二端口配置文件之后,所述方法还包括:在第一数据库的初始化模式下,创建第一端口监听模式以及第二端口监听模式;其中,所述第一端口监听模式为:启动数据库服务后进行本地单端口监听,且只监听第一端口;所述第二端口监听模式为:启动数据库服务后进行双端口监听,同时监听第一端口以及第二端口。
在一种可行的实施方式中,在第一语法解析器所在的第一数据库解析器模块中,创建所述第二数据库对应的第二语法解析器之后,所述方法还包括:在启动第一数据库后,初始化所述第一数据库数据目录,并根据需求设置对应的端口监听模式;根据设置的端口监听模式,启动对应的端口监听进程。
在一种可行的实施方式中,根据设置的端口监听模式,启动对应的端口监听进程,具体包括:根据设置的端口监听模式,对所述第一端口配置文件和/或所述第二端口配置文件中的端口配置参数进行初始化;建立套接字socket通信,对第一端口和/或第二端口进行实时监听。
在一种可行的实施方式中,第一端口为所述第一数据库的默认端口,所述第一数据库为PostgreSQL数据库。
在一种可行的实施方式中,所述方法包括:根据客户端连接请求中请求的端口号,确定对应的第一端口或第二端口;创建所述第一端口或第二端口对应的子进程,并通过所述子进程处理所述客户端连接请求;启动所述第一端口或第二端口对应的第一语法解析器或第二语法解析器,通过所述第一语法解析器或第二语法解析器处理来自所述客户端的SQL请求,并将对应语法结果返回给所述客户端。
在一种可行的实施方式中,在根据客户端连接请求中请求的端口号,确定对应的第一端口或第二端口之前,所述方法还包括:在第一端口和/或第二端口中,通过服务器循环ServerLoop函数,循环等待客户端连接请求;在第一端口或第二端口接收到客户端连接请求后,对发送请求的客户端进行合法性验证,若验证成功,则调用连接创建ConnCreate方法与所述客户端创建连接,并通过当前接收端口继续接收所述客户端的后续SQL请求;同时,生成端口Port结构,动态映射不同模式信息及不同端口信息。
在一种可行的实施方式中,在第一端口和/或第二端口中,通过ServerLoop函数,循环等待客户端连接请求之前,所述方法还包括:在数据库初始化模式下,根据已设置的端口监听模式,初始化对应的端口配置信息;其中,第一端口监听模式对应初始化第一端口配置信息;第二端口监听模式对应初始化第一端口配置信息以及第二端口配置信息。
在一种可行的实施方式中,根据客户端连接请求中请求的端口号,确定对应的第一端口或第二端口,具体包括:根据所述端口号,将服务器端与所述客户端的连接映射到对应的第一端口或第二端口;其中,第一端口和第二端口分别对应一个固定的端口号。
在一种可行的实施方式中,创建所述第一端口或第二端口对应的子进程,并通过所述子进程处理所述客户端连接请求,具体包括:基于所述第一端口或第二端口,通过BackendStartup后端启动方法调用fork函数,创建对应的子进程;通过所述子进程,对所述客户端连接请求分配资源;其中,所述资源至少包括进程空间以及内存空间。
在一种可行的实施方式中,启动所述第一端口或第二端口对应的第一语法解析器或第二语法解析器,具体包括:根据所述端口号,获取对应的解析器访问地址;根据所述解析器访问地址,启动对应的第一语法解析器或第二语法解析器。
在一种可行的实施方式中,通过所述第一语法解析器或第二语法解析器处理来自所述客户端的SQL请求,并将对应语法结果返回给所述客户端,具体包括:通过所述第一语法解析器或第二语法解析器,对来自所述客户端的SQL请求内容进行语法处理,得到对应语法结果,并返回给所述客户端;其中,所述语法处理至少包括以下一个或多个环节:语法解析、语法重写、语法优化、语法执行。
在一种可行的实施方式中,所述客户端连接请求中至少包括:客户端IP、客户端端口、请求的服务器端IP、请求的服务器端端口号、请求的数据库用户名、请求的数据库密码以及请求的数据库名称。
本发明实施例还提供了一种基于PostgreSQL的双端口解析装置,所述装置包括:双端口配置模块,用于在第一端口配置文件所在的第一数据库数据目录中,创建第二端口配置文件;其中,所述第二端口配置文件为第二数据库的端口配置文件;解析器配置模块,用于在第一语法解析器所在的第一数据库解析器模块中,创建所述第二数据库对应的第二语法解析器;双端口监听模块,用于根据所述客户端连接请求中请求的端口号,确定对应的第一端口或第二端口;创建所述第一端口或第二端口对应的子进程,并通过所述子进程处理所述客户端连接请求;解析器模块,用于启动所述第一端口或第二端口对应的第一语法解析器或第二语法解析器,通过所述第一语法解析器或第二语法解析器处理来自所述客户端的SQL请求,并将对应语法结果返回给所述客户端。
与现有技术相比,本发明实施例提供的一种基于PostgreSQL的双端口解析方法及装置,具有如下有益效果:
本发明主要解决了基于PostgreSQL双端口监听及双解析器的问题,通过端口分离技术以及双解析器在客户端及服务器端的切换技术及实现,满足了在同一实例下双端口通信及语法解析和处理。基于本发明可以实现在PostgreSQL数据库中扩展多种兼容数据库特性的需求。比如说公司目前做的是兼容oracle的场景,则在原有一个数据库一个端口的模式下,扩展双端口机制,来针对应用场景的无缝切换,当然在语法解析器上也对应扩展支持oracle的语法解析器,来配合端口一起使用,实现了在服务器端未安装oracle数据库的情况下,通过PostgreSQL数据库接收并处理oracle语法的sql语句。
由于本发明能够同时监听多端口以及进行对应的语法解析和处理,增强了原有PostgreSQL的架构特性,使其可以在同一实例下满足不同数据库扩展特性的需求,具有重要的实用价值。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例提供的一种基于PostgreSQL的双端口解析方法实现流程图;
图2为本发明实施例提供的一种基于PostgreSQL的双端口解析方法执行流程图;
图3为本发明实施例提供的一种基于PostgreSQL的双端口解析整体架构示意图;
图4为本发明实施例提供的一种基于PostgreSQL的双端口解析装置结构示意图;
附图标记说明:
400、基于PostgreSQL的双端口解析装置;410、双端口配置模块;420、解析器配置模块;430、双端口监听模块;440、解析器模块。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
图1为本发明实施例提供的一种基于PostgreSQL的双端口解析方法实现流程图,如图1所示,方法具体包括:
S101、在第一端口配置文件所在的第一数据库数据目录中,创建第二端口配置文件;其中,第二端口配置文件为第二数据库的端口配置文件。第一端口为第一数据库的默认端口,第一数据库为PostgreSQL数据库。
S102、在第一语法解析器所在的第一数据库解析器模块中,创建第二数据库对应的第二语法解析器。
具体地,在数据库中设置两个端口号,一个是PostgreSQL的原生端口号,另一个是扩展的兼容其他数据库的端口号。在提出需要在PostgreSQL数据库中扩展第二数据库特性的需求后,本发明首先针对第二数据库开发对应的端口配置文件,将第二数据库的端口配置信息存储进去。然后把这个端口配置文件放在PostgreSQL数据库的端口配置文件目录中。
在一个实施例中,若需要扩展的第二数据库为Oracle数据库,则将PostgreSQL数据库的端口配置信息存储在postgresql.conf文件的port参数中,将Oracle数据库的端口信息存储在本发明创建的配置文件ivorysql.conf的配置参数ivorysql.port中。其中,PostgreSQL数据库的端口号为5432,Oracle数据库的端口号为1521。若接收的连接请求中携带的端口号为1521则代表访问oracle服务;携带的端口号为5432则代表访问PostgreSQL服务。
进一步地,双语法解析器是在原有PostgreSQL数据库的解析器模块中,新增了一个语法解析器,来进行第二数据库语法的处理。在程序中通过切换每个模块的访问地址来进行处理对应请求。本架构可以实现多个数据库兼容方式,可以实现对Oracle、SQL Server等数据库的兼容,未来兼容其他数据库时,可以在此架构上进行对应端口及语法解析模块的开发即可,整体架构可复用。
在一个实施例中,若需要扩展的第二数据库为Oracle数据库,则在原有PostgreSQL数据库的plgpsql模块中,新增一个plisql模块,来进行oralce语法的处理。
进一步地,在第一数据库的初始化模式下,创建第一端口监听模式以及第二端口监听模式。其中,第一端口监听模式为:启动数据库服务后进行本地单端口监听,且只监听第一端口;第二端口监听模式为:启动数据库服务后进行双端口监听,同时监听第一端口以及第二端口。
作为一种可行的实施方式,由于本发明在PostgreSQL数据库中开发了双端口结构,因此,配套创建了两种端口监听模式。假设扩展的数据库为Oracle数据库,则在PostgreSQL模式下,启动数据库服务后进行本地单端口监听,只监听PostgreSQL的原生端口;在Oracle模式下,则是在启动数据库服务后进行双端口监听。并进入ServerLoop循环等待客户端的连接请求。
进一步地,在启动PostgreSQL数据库后,初始化PostgreSQL数据库的数据目录,并根据需求设置对应的端口监听模式。然后根据设置的端口监听模式,启动对应的端口监听进程。
例如,若设置了第二端口监听模式,则同时启动第一端口和第二端口的监听进程。
进一步地,根据设置的端口监听模式,对第一端口配置文件和/或第二端口配置文件中的端口配置参数进行初始化;并建立socket通信,对第一端口和/或第二端口进行实时监听。
作为一种可行的实施方式,在将PostgreSQL数据库改进为双端口及双解析器模式,并设置好端口监听模式后,启动双端口监听服务,服务端可执行如下的客户端请求处理流程:
图2为本发明实施例提供的一种基于PostgreSQL的双端口解析方法执行流程图,如图2所示,方法包括:
S201、服务器端根据客户端连接请求中请求的端口号,确定对应的第一端口或第二端口。
具体地,服务器端首先在数据库初始化模式下,根据已设置的端口监听模式,初始化对应的端口配置信息。其中,第一端口监听模式对应初始化第一端口配置信息;第二端口监听模式对应初始化第一端口配置信息以及第二端口配置信息。
进一步地,在第一端口和/或第二端口中,通过ServerLoop函数,循环等待客户端连接请求。在第一端口或第二端口接收到客户端连接请求后,对发送请求的客户端进行合法性验证,若验证成功,则调用ConnCreate方法与该客户端创建连接,并通过当前接收端口继续接收该客户端的后续SQL请求。同时,生成Port结构,动态映射不同模式信息及不同端口信息。
作为一种可行的实施方式,客户端连接请求中至少包括:客户端IP、客户端端口、请求的服务器端IP、请求的服务器端端口号、请求的数据库用户名、请求的数据库密码以及请求的数据库名称。
进一步地,根据端口号,将服务器端与客户端的连接映射到对应的第一端口或第二端口。其中,第一端口和第二端口分别对应一个固定的端口号。
在一个实施例中,若当前模式为第二端口监听模式,那么第一端口和第二端口都通过ServerLoop函数,循环等待客户端连接请求。若第二端口接收到了客户端连接请求,则Postmaster主进程在对客户端进行合法性验证并创建连接后,将该连接映射到第二端口,并由第二端口继续接收该客户端发来的后续SQL请求。
S202、创建第一端口或第二端口对应的子进程,并通过子进程处理客户端连接请求。
具体地,基于第一端口或第二端口,通过BackendStartup方法调用fork函数,创建对应的子进程;通过该子进程,对客户端连接请求分配资源;其中,资源至少包括进程空间以及内存空间。
S203、启动第一端口或第二端口对应的第一语法解析器或第二语法解析器,通过第一语法解析器或第二语法解析器处理来自客户端的SQL请求,并将对应语法结果返回给客户端。
具体地,根据端口号,获取对应的解析器访问地址。根据解析器访问地址,启动对应的第一语法解析器或第二语法解析器。然后通过第一语法解析器或第二语法解析器,对来自客户端的SQL请求内容进行语法处理,得到对应语法结果,并返回给客户端。其中,语法处理至少包括以下一个或多个环节:语法解析、语法重写、语法优化、语法执行。
作为一种可行的实施方式,图3为本发明实施例提供的一种基于PostgreSQL的双端口解析整体架构示意图,如图3所示,客户端应用或者交互式终端向服务端发出连接请求。服务端中PostgreSQL数据库的主进程Postmaster在对双端口监听过程中,监听到其中一个端口接收了该连接请求之后,启动该端口,该端口fork出对应的子进程,用于处理客户端请求,并且分配进程空间、内存空间等对应资源信息,获取并分配当前的语法解析器模式,开始处理来自客户端的SQL请求内容,通过语法解析、重写、优化、执行等环节,最终将对应语法结果返回给请求的客户端应用或交互式终端。
作为一种可行的实施方式,在扩展完双监听及双语法解析器后,服务端初始化数据目录initialize_data_directory,并设置端口监听模式。然后启动守护进程主程序以及双端口监听。两个端口通过ServerLoop方法循环等待数据库连接。在端口接收到客户端的数据库连接请求后,主程序对发送该连接请求的客户端进行验证,验证通过后创建对应的连接,并返回port结构。然后相应的端口fork出对应的子进程,对该连接请求进行资源分配等处理操作。最后获取当前连接的解析器模式,并分配对应的语法解析器,处理来自该客户端的SQL语句。
图4为本发明实施例提供的一种基于PostgreSQL的双端口解析装置结构示意图,如图4所示,装置包括:
双端口配置模块410,用于在第一端口配置文件所在的第一数据库数据目录中,创建第二端口配置文件;其中,所述第二端口配置文件为第二数据库的端口配置文件;
解析器配置模块420,用于在第一语法解析器所在的第一数据库解析器模块中,创建所述第二数据库对应的第二语法解析器;
双端口监听模块430,用于根据所述客户端连接请求中请求的端口号,确定对应的第一端口或第二端口;创建所述第一端口或第二端口对应的子进程,并通过所述子进程处理所述客户端连接请求;
解析器模块440,用于启动所述第一端口或第二端口对应的第一语法解析器或第二语法解析器,通过所述第一语法解析器或第二语法解析器处理来自所述客户端的SQL请求,并将对应语法结果返回给所述客户端。
本发明提供的一种基于PostgreSQL的双端口解析方法及装置,在原有PostgreSQL架构上扩展了双端口监听以及双语法解析器,在通过客户端应用或者交互式终端发送连接请求,服务端通过验证请求后,根据不同监听端口,fork子进程后将请求信息发送给对应的语法解析器进行处理,将处理结果返回给客户端应用或交互式终端。在本方案中,即使服务端只安装了PostgreSQL数据库,未安装其他数据库,也能处理客户端连接或访问扩展的数据库的语句。等于额外在服务端提供了一个端口来接收其他数据库语法的SQL语句,客户端通过自带的客户端工具就可以访问和使用本架构,为后续的数据迁移、数据库更替等操作打下了一个稳定、高效的基础。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明的实施例可以有各种更改和变化。凡在本发明实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种基于PostgreSQL的双端口解析方法,其特征在于,所述方法包括:
在第一端口配置文件所在的第一数据库数据目录中,创建第二端口配置文件;其中,所述第二端口配置文件为第二数据库的端口配置文件;
在第一语法解析器所在的第一数据库解析器模块中,创建所述第二数据库对应的第二语法解析器;
在数据库初始化模式下,根据已设置的端口监听模式,初始化对应的端口配置信息;其中,第一端口监听模式对应初始化第一端口配置信息;第二端口监听模式对应初始化第一端口配置信息以及第二端口配置信息;
在第一端口和/或第二端口中,通过ServerLoop函数,循环等待客户端连接请求;
在第一端口或第二端口接收到客户端连接请求后,对发送请求的客户端进行合法性验证,若验证成功,则调用ConnCreate方法与所述客户端创建连接,并通过当前接收端口继续接收所述客户端的后续SQL请求;
同时,生成Port结构,动态映射不同模式信息及不同端口信息;
根据客户端连接请求中请求的端口号,确定对应的第一端口或第二端口;
创建所述第一端口或第二端口对应的子进程,并通过所述子进程处理所述客户端连接请求;
启动所述第一端口或第二端口对应的第一语法解析器或第二语法解析器,通过所述第一语法解析器或第二语法解析器处理来自所述客户端的SQL请求,并将对应语法结果返回给所述客户端。
2.根据权利要求1所述的一种基于PostgreSQL的双端口解析方法,其特征在于,在第一端口配置文件所在的第一数据库初始化数据目录中,创建第二端口配置文件之后,所述方法还包括:
在第一数据库的初始化模式下,创建第一端口监听模式以及第二端口监听模式;
其中,所述第一端口监听模式为:启动数据库服务后进行本地单端口监听,且只监听第一端口;
所述第二端口监听模式为:启动数据库服务后进行双端口监听,同时监听第一端口以及第二端口。
3.根据权利要求1所述的一种基于PostgreSQL的双端口解析方法,其特征在于,在第一语法解析器所在的第一数据库解析器模块中,创建所述第二数据库对应的第二语法解析器之后,所述方法还包括:
在启动第一数据库后,初始化所述第一数据库数据目录,并根据需求设置对应的端口监听模式;
根据设置的端口监听模式,启动对应的端口监听进程。
4.根据权利要求3所述的一种基于PostgreSQL的双端口解析方法,其特征在于,根据设置的端口监听模式,启动对应的端口监听进程,具体包括:
根据设置的端口监听模式,对所述第一端口配置文件和/或所述第二端口配置文件中的端口配置参数进行初始化;
建立socket通信,对第一端口和/或第二端口进行实时监听。
5.根据权利要求1所述的一种基于PostgreSQL的双端口解析方法,其特征在于,第一端口为所述第一数据库的默认端口,所述第一数据库为PostgreSQL数据库。
6.根据权利要求1所述的一种基于PostgreSQL的双端口解析方法,其特征在于,根据客户端连接请求中请求的端口号,确定对应的第一端口或第二端口,具体包括:
根据所述端口号,将服务器端与所述客户端的连接映射到对应的第一端口或第二端口;其中,第一端口和第二端口分别对应一个固定的端口号。
7.根据权利要求1所述的一种基于PostgreSQL的双端口解析方法,其特征在于,创建所述第一端口或第二端口对应的子进程,并通过所述子进程处理所述客户端连接请求,具体包括:
基于所述第一端口或第二端口,通过BackendStartup方法调用fork函数,创建对应的子进程;
通过所述子进程,对所述客户端连接请求分配资源;其中,所述资源至少包括进程空间以及内存空间。
8.根据权利要求1所述的一种基于PostgreSQL的双端口解析方法,其特征在于,启动所述第一端口或第二端口对应的第一语法解析器或第二语法解析器,具体包括:
根据所述端口号,获取对应的解析器访问地址;
根据所述解析器访问地址,启动对应的第一语法解析器或第二语法解析器。
9.根据权利要求1所述的一种基于PostgreSQL的双端口解析方法,其特征在于,通过所述第一语法解析器或第二语法解析器处理来自所述客户端的SQL请求,并将对应语法结果返回给所述客户端,具体包括:
通过所述第一语法解析器或第二语法解析器,对来自所述客户端的SQL请求内容进行语法处理,得到对应语法结果,并返回给所述客户端;其中,所述语法处理至少包括以下一个或多个环节:语法解析、语法重写、语法优化、语法执行。
10.根据权利要求1所述的一种基于PostgreSQL的双端口解析方法,其特征在于,所述客户端连接请求中至少包括:客户端IP、客户端端口、请求的服务器端IP、请求的服务器端端口号、请求的数据库用户名、请求的数据库密码以及请求的数据库名称。
11.一种基于PostgreSQL的双端口解析装置,其特征在于,所述装置包括:
双端口配置模块,用于在第一端口配置文件所在的第一数据库数据目录中,创建第二端口配置文件;其中,所述第二端口配置文件为第二数据库的端口配置文件;
解析器配置模块,用于在第一语法解析器所在的第一数据库解析器模块中,创建所述第二数据库对应的第二语法解析器;
在数据库初始化模式下,根据已设置的端口监听模式,初始化对应的端口配置信息;其中,第一端口监听模式对应初始化第一端口配置信息;第二端口监听模式对应初始化第一端口配置信息以及第二端口配置信息;
在第一端口和/或第二端口中,通过ServerLoop函数,循环等待客户端连接请求;
在第一端口或第二端口接收到客户端连接请求后,对发送请求的客户端进行合法性验证,若验证成功,则调用ConnCreate方法与所述客户端创建连接,并通过当前接收端口继续接收所述客户端的后续SQL请求;
同时,生成Port结构,动态映射不同模式信息及不同端口信息;
双端口监听模块,用于根据客户端连接请求中请求的端口号,确定对应的第一端口或第二端口;创建所述第一端口或第二端口对应的子进程,并通过所述子进程处理所述客户端连接请求;
解析器模块,用于启动所述第一端口或第二端口对应的第一语法解析器或第二语法解析器,通过所述第一语法解析器或第二语法解析器处理来自所述客户端的SQL请求,并将对应语法结果返回给所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310422938.1A CN116150250B (zh) | 2023-04-20 | 2023-04-20 | 一种基于PostgreSQL的双端口解析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310422938.1A CN116150250B (zh) | 2023-04-20 | 2023-04-20 | 一种基于PostgreSQL的双端口解析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116150250A CN116150250A (zh) | 2023-05-23 |
CN116150250B true CN116150250B (zh) | 2023-07-11 |
Family
ID=86354685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310422938.1A Active CN116150250B (zh) | 2023-04-20 | 2023-04-20 | 一种基于PostgreSQL的双端口解析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116150250B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156330A (zh) * | 2016-07-06 | 2016-11-23 | 北京金山安全管理系统技术有限公司 | 一种数据库适配方法及数据库适配器 |
CN114138822A (zh) * | 2021-12-01 | 2022-03-04 | 浪潮云信息技术股份公司 | 数据库语法兼容系统及实现方法 |
CN115174452A (zh) * | 2022-07-01 | 2022-10-11 | 天津神舟通用数据技术有限公司 | 基于Oracle数据库协议代理的应用移植方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9589029B2 (en) * | 2010-12-28 | 2017-03-07 | Citrix Systems, Inc. | Systems and methods for database proxy request switching |
US9760626B2 (en) * | 2014-09-05 | 2017-09-12 | International Business Machines Corporation | Optimizing parsing outcomes of documents |
CN104503965B (zh) * | 2014-10-16 | 2017-08-29 | 杭州斯凯网络科技有限公司 | PostgreSQL高弹性的高可用及负载均衡实现方法 |
CN106325951B (zh) * | 2016-08-30 | 2018-03-06 | 广西电网有限责任公司 | 一种支持多数据库、多中间件类型的应用系统自动化部署方法 |
US11706162B2 (en) * | 2019-10-21 | 2023-07-18 | Sap Se | Dynamic, distributed, and scalable single endpoint solution for a service in cloud platform |
CN111813856A (zh) * | 2020-07-01 | 2020-10-23 | 浪潮云信息技术股份公司 | 一种PostgreSQL高可用性的实现方法 |
CN112965995B (zh) * | 2021-04-19 | 2023-03-31 | 瀚高基础软件股份有限公司 | 基于postgreSQL客户端PSQL的数据交互方法及交互装置 |
-
2023
- 2023-04-20 CN CN202310422938.1A patent/CN116150250B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156330A (zh) * | 2016-07-06 | 2016-11-23 | 北京金山安全管理系统技术有限公司 | 一种数据库适配方法及数据库适配器 |
CN114138822A (zh) * | 2021-12-01 | 2022-03-04 | 浪潮云信息技术股份公司 | 数据库语法兼容系统及实现方法 |
CN115174452A (zh) * | 2022-07-01 | 2022-10-11 | 天津神舟通用数据技术有限公司 | 基于Oracle数据库协议代理的应用移植方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116150250A (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8713177B2 (en) | Remote management of networked systems using secure modular platform | |
US11243921B2 (en) | Database expansion system, equipment, and method of expanding database | |
CN110209719B (zh) | 一种基于微服务架构的多种数据库统一访问系统及方法 | |
CN107241315B (zh) | 银行网关接口的接入方法、装置及计算机可读存储介质 | |
CN111200523B (zh) | 中台系统配置方法、装置、设备及存储介质 | |
CN110347718B (zh) | 一种redis分片方法、装置、计算机设备和存储介质 | |
CN111404628B (zh) | 一种时间同步方法和装置 | |
CN109600381B (zh) | 一种接口适配方法、装置及系统 | |
CN112702441B (zh) | 基于容器的访问数据处理方法、装置、系统及存储介质 | |
CN116150250B (zh) | 一种基于PostgreSQL的双端口解析方法及装置 | |
CN111488286B (zh) | 一种Android模块独立开发的方法及装置 | |
CN112988738B (zh) | 用于区块链的数据分片方法和装置 | |
CN109672732B (zh) | 一种接口适配方法、装置及系统 | |
CN117221114A (zh) | 业务网关部署方法、装置、设备及存储介质 | |
CN114610446B (zh) | 一种自动注入探针的方法、装置及系统 | |
CN115687490A (zh) | 一种数据导出方法、装置、计算机设备和存储介质 | |
CN110806967A (zh) | 一种单元测试方法和装置 | |
CN113612811A (zh) | 一种在多通道中客户端挂载的方法、系统、设备及介质 | |
US20200186421A1 (en) | Client server model for multiple document editor | |
CN111078477A (zh) | 接口测试的方法、装置、存储介质和电子设备 | |
US8924403B2 (en) | Method and system for central data querying | |
CN114615176B (zh) | 一种报文测试方法、装置及电子设备 | |
CN118413573B (zh) | 资源管理方法、装置、计算机设备、存储介质及产品 | |
CN118092982B (zh) | 一种云原生应用的多集群运维方法、设备及介质 | |
CN111913737B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A dual port parsing method and device based on PostgreSQL Granted publication date: 20230711 Pledgee: Jinan area branch of Shandong free trade zone of Qilu Bank Co.,Ltd. Pledgor: HIGHGO BASE SOFTWARE Co.,Ltd. Registration number: Y2024980041745 |