CN113296822A - 一种基于动态库的数据库系统在线升级方法和系统 - Google Patents

一种基于动态库的数据库系统在线升级方法和系统 Download PDF

Info

Publication number
CN113296822A
CN113296822A CN202110585971.7A CN202110585971A CN113296822A CN 113296822 A CN113296822 A CN 113296822A CN 202110585971 A CN202110585971 A CN 202110585971A CN 113296822 A CN113296822 A CN 113296822A
Authority
CN
China
Prior art keywords
dynamic library
database
database system
service
function
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
CN202110585971.7A
Other languages
English (en)
Other versions
CN113296822B (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.)
Beijing Si Tech Information Technology Co Ltd
Original Assignee
Beijing Si Tech Information Technology 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 Beijing Si Tech Information Technology Co Ltd filed Critical Beijing Si Tech Information Technology Co Ltd
Priority to CN202110585971.7A priority Critical patent/CN113296822B/zh
Publication of CN113296822A publication Critical patent/CN113296822A/zh
Application granted granted Critical
Publication of CN113296822B publication Critical patent/CN113296822B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于动态库的数据库系统在线升级方法和系统,属于数据库技术领域,所述方法包括:将数据库系统的升级内容封装为动态库;加载所述动态库到内存中;将所述数据库系统的待升级内容替换为所述动态库。通过将升级内容封装为动态库,并加载到内存中,替换动态库的调用关系,使数据库系统调用新版本的动态库,从而实现升级的作用,避免了繁琐的升级步骤,避免了数据库服务中断,实现无感或低感升级,利于提高用户体验。

Description

一种基于动态库的数据库系统在线升级方法和系统
技术领域
本发明涉及数据库技术领域,具体涉及一种基于动态库的数据库系统在线升级方法和系统。
背景技术
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合,已广泛应用到各个技术领域,例如平台即服务(PaaS)。PaaS服务系统需要7X24小时不间断运行,服务不能中断,更不允许重启。但是,当数据库系统发现重大漏洞,或者增强功能时,又不得不停止PaaS服务进程,进行离线升级。
随着主备复制技术的增强,很多数据库系统会采用一主多备的模式,这样可以先停止备库,升级备库,然后再将服务从主库切换到备库,接下来再升级主库。通过主备库交替对外提供服务,间接实现了在线升级,但是交替服务易导致当前连接全部断开,当前事务全部失败回滚,并且要求应用系统支持事先制定的高可用机制,才能保证正常切换,操作步骤繁琐,用户感知同样不好,导致数据库升级困难。
发明内容
针对现有技术中存在的上述技术问题,本发明提供一种基于动态库的数据库系统在线升级方法和系统,通过将升级内容封装到动态库中,加载动态库后再进行替换,便于无感升级。
本发明公开了一种基于动态库的数据库系统在线升级方法,所述方法包括:将数据库系统的升级内容封装为动态库;加载所述动态库到内存中;将所述数据库系统的待升级内容替换为所述动态库。
优选的,所述升级内容包括可执行代码,所述可执行代码的在线升级方法包括:
将可执行代码封装为动态库;
将所述动态库加载到进程空间;
将所述数据库系统的指针或函数指针指向所述可执行代码。
优选的,所述可执行代码包括以下任一函数或它们的组合:定时检测函数、连接创建函数和数据库操作函数;
其中,定时检测函数用于定时监听系统的服务,所述连接创建函数用于创建和释放连接的执行进程,执行进程用于调用所述数据库操作函数,所述数据库操作函数用于接收并执行数据库的操作指令。
优选的,所述方法还包括结束动态库的方法:
监听当前动态库提供服务的调用情况;
判断所述服务是否停止调用;
若是,结束所述服务、并释放当前动态库的进程空间。
优选的,数据库操作的方法包括:
判断动态库提供的服务是否结束;
若否,将新连接请求转发给连接创建函数;
通过连接创建函数创建新连接的执行线程;
通过所述执行线程接收新连接请求的数据库操作请求、执行相应的数据库操作,并返回操作结果。
优选的,所述方法还包括通过监听动态库升级数据库系统的方法:
监听动态库;
判断所述动态库是否有新版本;
若是,将所述数据库系统的指针或指针函数指向所述新版本动态库的可执行代码。
优选的,监听指定目录下的动态库。
本发明还提供一种用于实现上述数据库系统在线升级方法的系统,包括封装模块、主控模块和动态库,
所述封装模块用于将数据库系统的升级内容封装为动态库;
所述主控模块用于加载所述动态库,并将所述数据库系统的待升级内容替换为所述动态库。
优选的,所述动态库包括检测模块、连接创建模块和数据库操作模块,
所述检测模块用于监听当前动态库提供服务的调用情况;判断所述服务是否停止调用;若是,结束所述服务、并释放当前动态库的进程空间;
所述连接创建模块用于根据连接请求创建新连接的执行进程,执行进程通过数据库操作模块接收数据库操作请求、执行相应的数据库操作,并返回操作结果。
优选的,所述主控模块包括动态库监听子模块、内存管理子模块、服务监听子模块和连接管理子模块;
所述动态库监听子模块用于监听指定目录下的新版本动态库;
所述内存管理子模块用于将所述新版本动态库加载到进程空间中;
所述服务监听子模块用于监听动态库提供的服务;
所述连接管理子模块用于根据所述服务的状态,将监听到的连接请求转发给连接创建模块。
与现有技术相比,本发明的有益效果为:通过将升级内容封装为动态库,并加载到内存中,替换动态库的调用关系,使数据库系统调用新版本的动态库,从而实现升级的作用,避免了繁琐的升级步骤,避免了数据库服务中断,实现无感或低感升级,利于提高用户体验。
附图说明
图1是本发明的基于动态库的数据库在线升级方法流程图;
图2是具体实施例的流程图;
图3是本发明的系统逻辑框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明做进一步的详细描述:
一种基于动态库的数据库系统在线升级方法,如图1所示,所述方法包括:
步骤101:将数据库系统的升级内容封装为动态库。
步骤102:加载所述动态库到内存中。动态库在Linux上称为共享对象库,在Windows上称为动态链接库,可以被其它应用程序调用,有助于共享数据和资源,同时多个应用程序可以同时访问动态库的内容。
步骤103:将所述数据库系统的待升级内容替换为所述动态库。即将动态库的升级内容替换待升级内容,其中待升级内容为需要升级的内容。
通过将升级内容封装为动态库,并加载到内存中,替换动态库的调用关系,使数据库系统调用新版本的动态库,从而实现升级的作用,避免了繁琐的升级步骤,避免了数据库服务中断,实现无感或低感升级,利于提高用户体验。
如图2所示,在一个具体实施例中,所述升级内容包括可执行代码,即动态库通过可执行代码提供服务,所述可执行代码的在线升级方法包括:
步骤201:将可执行代码封装为动态库。
步骤202:将所述动态库加载到进程空间。进程空间是指在内存中或虚拟内存中的进程地址空间。将动态库加载到进程空间中,利于提高读写速度,提高服务的执行效率。
步骤203:将所述数据库系统的指针或函数指针指向所述可执行代码。
例如,可执行代码包括以下任一函数或它们的组合:定时检测函数、连接创建函数和数据库操作函数;其中,定时检测函数用于定时监听系统的服务,所述连接创建函数用于创建和释放连接的执行进程,执行进程用于调用所述数据库操作函数,所述数据库操作函数用于接收并执行数据库的操作指令。可以将定时检测函数的函数指针赋值给F_CronJob、连接创建函数的函数指针赋值给F_Client、数据库操作函数的函数指针赋值给F_SQLProc,通过调用相应的函数指针调用动态库的函数。
其中,所述方法还包括结束动态库的方法:
步骤110:监听当前动态库提供服务的调用情况。可以通过定时检测函数检测运行状态。
步骤111:判断所述服务是否停止调用;
若是,执行步骤112:结束所述服务、并释放当前动态库的进程空间。
若否,执行步骤113:定时监听所述服务的调用情况。
通过动态库中的检测函数检测当前动态库的调用情况,当动态库停止调用时,判断为已替换到其他版本的动态库,或已不需要当前动态库提供的服务,通过主动结束服务、并释放进程空间,节约计算资源或内存资源,防止升级后,不同版本的动态库占用大量的计算资源或内存资源。
应当指出的是,动态库提供的服务意外停止或服务重启时,可以加载最近版本的动态库,并将数据库系统的指针函数指向所加载动态库的函数。
其中,数据库操作的方法包括:
步骤121:判断动态库提供的服务是否结束。在一个具体实施例中,可以通过函数指针的值判断服务是否结束,在一段时间内,函数指针指向非当前动态库时,判断为服务已结束。
若否,执行步骤122:将新连接请求转发给连接创建函数。可以通过指针函数进行调用。
步骤123:通过连接创建函数创建新连接的执行线程。
步骤124:通过所述执行线程接收新连接请求的数据库操作请求、执行相应的数据库操作,并返回操作结果。执行线程可以通过调用数据库操作函数进行数据库操作,数据库操作请求可以包括对数据库的增、删、改、查。
本发明的方法还包括通过监听动态库升级数据库的方法:
步骤131:监听动态库。
步骤132:判断所述动态库是否有新版本。
若是,步骤133:加载新版本的动态库,将所述数据库系统的指针或指针函数指向新版本动态库的可执行代码。
通常监听指定目录下的动态库,升级时,将动态库保存到该目录下,可以实现自动升级。
如图3所示,本发明还提供一种用于实现上述数据库系统在线升级方法的系统,包括封装模块1、主控模块2和动态库3,
封装模块1用于将数据库系统的升级内容封装为动态库3;
主控模块2用于加载动态库3,并将所述数据库系统的待升级内容替换为动态库3。
其中,动态库3可以包括检测模块31、连接创建模块32和数据库操作模块33,
检测模块31用于监听当前动态库提供服务的调用情况;判断所述服务是否停止调用;若是,结束所述服务、并释放当前动态库的进程空间;
连接创建模块32用于根据连接请求创建新连接的执行进程,执行进程通过数据库操作模块33接收新连接请求的数据库操作请求、执行相应的数据库操作,并返回操作结果。
其中,所述主控模块包括动态库监听子模块21、内存管理子模块22、服务监听子模块23和连接管理子模块24;
动态库监听子模块21用于监听指定目录下的新版本动态库;
内存管理子模块22用于将所述新版本动态库加载到进程空间中;
服务监听子模块23用于监听动态库提供的服务;
连接管理子模块24用于根据所述服务的状态,将监听到的连接请求转发给连接创建模块32。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于动态库的数据库系统在线升级方法,其特征在于,所述方法包括:
将数据库系统的升级内容封装为动态库;
加载所述动态库到内存中;
将所述数据库系统的待升级内容替换为所述动态库。
2.根据权利要求1所述的数据库系统在线升级方法,其特征在于,所述升级内容包括可执行代码,所述可执行代码的在线升级方法包括:
将可执行代码封装为动态库;
将所述动态库加载到进程空间;
将所述数据库系统的指针或函数指针指向所述可执行代码。
3.根据权利要求2所述的数据库系统在线升级方法,其特征在于,所述可执行代码包括以下任一函数或它们的组合:定时检测函数、连接创建函数和数据库操作函数;
其中,定时检测函数用于定时监听系统的服务,所述连接创建函数用于创建和释放连接的执行进程,执行进程用于调用所述数据库操作函数,所述数据库操作函数用于接收并执行数据库的操作指令。
4.根据权利要求3所述的数据库系统在线升级方法,其特征在于,还包括结束动态库的方法:
监听当前动态库提供服务的调用情况;
判断所述服务是否停止调用;
若是,结束所述服务、并释放当前动态库的进程空间。
5.根据权利要求3所述的数据库系统在线升级方法,其特征在于,数据库操作的方法包括:
判断动态库提供的服务是否结束;
若否,将新连接请求转发给连接创建函数;
通过连接创建函数创建新连接的执行线程;
通过所述执行线程接收新连接请求的数据库操作请求、执行相应的数据库操作,并返回操作结果。
6.根据权利要求2所述的数据库系统在线升级方法,其特征在于,还包括通过监听动态库升级数据库系统的方法:
监听动态库;
判断所述动态库是否有新版本;
若是,将所述数据库系统的指针或指针函数指向所述新版本动态库的可执行代码。
7.根据权利要求6所述的数据库系统在线升级方法,其特征在于,监听指定目录下的动态库。
8.一种用于实现如权利要求1-7任一项所述数据库系统在线升级方法的系统,其特征在于,包括封装模块、主控模块和动态库,
所述封装模块用于将数据库系统的升级内容封装为动态库;
所述主控模块用于加载所述动态库,并将所述数据库系统的待升级内容替换为所述动态库。
9.根据权利要求8所述的系统,其特征在于,所述动态库包括检测模块、连接创建模块和数据库操作模块,
所述检测模块用于监听当前动态库提供服务的调用情况;判断所述服务是否停止调用;若是,结束所述服务、并释放当前动态库的进程空间;
所述连接创建模块用于根据连接请求创建新连接的执行进程,执行进程通过数据库操作模块接收数据库操作请求、执行相应的数据库操作,并返回操作结果。
10.根据权利要求9所述的系统,其特征在于,所述主控模块包括动态库监听子模块、内存管理子模块、服务监听子模块和连接管理子模块;
所述动态库监听子模块用于监听指定目录下的新版本动态库;
所述内存管理子模块用于将所述新版本动态库加载到进程空间中;
所述服务监听子模块用于监听动态库提供的服务;
所述连接管理子模块用于根据所述服务的状态,将监听到的连接请求转发给连接创建模块。
CN202110585971.7A 2021-05-27 2021-05-27 一种基于动态库的数据库系统在线升级方法和系统 Active CN113296822B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110585971.7A CN113296822B (zh) 2021-05-27 2021-05-27 一种基于动态库的数据库系统在线升级方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110585971.7A CN113296822B (zh) 2021-05-27 2021-05-27 一种基于动态库的数据库系统在线升级方法和系统

Publications (2)

Publication Number Publication Date
CN113296822A true CN113296822A (zh) 2021-08-24
CN113296822B CN113296822B (zh) 2023-11-03

Family

ID=77325627

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110585971.7A Active CN113296822B (zh) 2021-05-27 2021-05-27 一种基于动态库的数据库系统在线升级方法和系统

Country Status (1)

Country Link
CN (1) CN113296822B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116661905A (zh) * 2023-07-27 2023-08-29 北京瑞华赢科技发展股份有限公司 一种基于动态库加载实现设备自动适配方法以及系统

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010014968A1 (en) * 1998-07-21 2001-08-16 Mannan A. Mohammed Automatic upgrade of software
CN1448867A (zh) * 2002-03-30 2003-10-15 深圳市中兴通讯股份有限公司 一种统一访问数据库系统的方法
CN1979418A (zh) * 2005-12-07 2007-06-13 英业达股份有限公司 动态升级程序的方法
US20070277167A1 (en) * 2006-05-23 2007-11-29 International Business Machines Corporation System and method for computer system maintenance
CN101582071A (zh) * 2008-05-16 2009-11-18 鸿富锦精密工业(深圳)有限公司 数据更新系统及方法
CN103744709A (zh) * 2014-01-23 2014-04-23 华为技术有限公司 补丁加载方法及装置
CN108762825A (zh) * 2018-04-20 2018-11-06 烽火通信科技股份有限公司 动态库重载的实现方法及系统
CN109597631A (zh) * 2017-09-28 2019-04-09 阿里巴巴集团控股有限公司 一种进程的升级方法、装置及电子设备
CN110286930A (zh) * 2019-06-27 2019-09-27 腾讯科技(深圳)有限公司 一种云平台升级方法、装置、终端及存储介质
CN110618996A (zh) * 2019-08-07 2019-12-27 北京东方国信科技股份有限公司 一种应用于分布式数据库的函数库热更新方法
CN111459489A (zh) * 2020-02-27 2020-07-28 湖南大学 一种动态库自动服务化封装方法、系统及应用
CN111666093A (zh) * 2020-06-29 2020-09-15 新华三信息安全技术有限公司 一种软件模块升级方法及装置
CN111736883A (zh) * 2020-05-11 2020-10-02 山东浪潮通软信息科技有限公司 基于数据延迟升级的计算机管理系统热升级方法及装置

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010014968A1 (en) * 1998-07-21 2001-08-16 Mannan A. Mohammed Automatic upgrade of software
CN1448867A (zh) * 2002-03-30 2003-10-15 深圳市中兴通讯股份有限公司 一种统一访问数据库系统的方法
CN1979418A (zh) * 2005-12-07 2007-06-13 英业达股份有限公司 动态升级程序的方法
US20070277167A1 (en) * 2006-05-23 2007-11-29 International Business Machines Corporation System and method for computer system maintenance
CN101582071A (zh) * 2008-05-16 2009-11-18 鸿富锦精密工业(深圳)有限公司 数据更新系统及方法
CN103744709A (zh) * 2014-01-23 2014-04-23 华为技术有限公司 补丁加载方法及装置
CN109597631A (zh) * 2017-09-28 2019-04-09 阿里巴巴集团控股有限公司 一种进程的升级方法、装置及电子设备
CN108762825A (zh) * 2018-04-20 2018-11-06 烽火通信科技股份有限公司 动态库重载的实现方法及系统
CN110286930A (zh) * 2019-06-27 2019-09-27 腾讯科技(深圳)有限公司 一种云平台升级方法、装置、终端及存储介质
CN110618996A (zh) * 2019-08-07 2019-12-27 北京东方国信科技股份有限公司 一种应用于分布式数据库的函数库热更新方法
CN111459489A (zh) * 2020-02-27 2020-07-28 湖南大学 一种动态库自动服务化封装方法、系统及应用
CN111736883A (zh) * 2020-05-11 2020-10-02 山东浪潮通软信息科技有限公司 基于数据延迟升级的计算机管理系统热升级方法及装置
CN111666093A (zh) * 2020-06-29 2020-09-15 新华三信息安全技术有限公司 一种软件模块升级方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王春红 等: "基于Delphi的DLL封装系统数据支撑模块技术的研究", 《现代计算机》, pages 51 - 80 *
郭秀岩: "可复用可动态加载式数据库中间件的设计", 《微计算机应用》, vol. 29, no. 9, pages 1 - 5 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116661905A (zh) * 2023-07-27 2023-08-29 北京瑞华赢科技发展股份有限公司 一种基于动态库加载实现设备自动适配方法以及系统
CN116661905B (zh) * 2023-07-27 2023-10-20 北京瑞华赢科技发展股份有限公司 一种基于动态库加载实现设备自动适配方法以及系统

Also Published As

Publication number Publication date
CN113296822B (zh) 2023-11-03

Similar Documents

Publication Publication Date Title
US6681389B1 (en) Method for providing scaleable restart and backout of software upgrades for clustered computing
US20060218545A1 (en) Server system and online software update method
CN106909411B (zh) 一种文件更新方法及装置
CN105468717B (zh) 数据库操作方法和装置
CN106940699B (zh) 一种内存数据的同步处理方法、装置、服务器及系统
CN111209110B (zh) 一种实现负载均衡的任务调度管理方法、系统和存储介质
CN111124475A (zh) 存储管理的方法、电子设备和计算机可读存储介质
CN111538585B (zh) 一种基于node.js的服务器进程调度方法、系统和装置
CN110543359A (zh) 一种任务队列运行装置
CN113296822B (zh) 一种基于动态库的数据库系统在线升级方法和系统
US6336215B1 (en) Apparatus and method for on-line code only replacement of a running program using checkpoints
CN107085514B (zh) 共享库升级方法及装置
CN112486517B (zh) 应用程序的安装方法、系统、电子设备及存储介质
CN114968482A (zh) 无服务器处理方法、装置和网络设备
CN114791900A (zh) 基于Operator的Redis运维方法、装置、系统及存储介质
CN107092531B (zh) 计算框架、电子设备及信息处理方法
CN116661905B (zh) 一种基于动态库加载实现设备自动适配方法以及系统
CN116400945B (zh) 一种动态链接库升级方法、电子设备及存储介质
US11748074B2 (en) User exit daemon for use with special-purpose processor, mainframe including user exit daemon, and associated methods
CN117407125B (zh) Pod高可用实现方法、装置、设备及可读存储介质
CN117193828A (zh) 一种应用程序升级方法、装置、电子设备及存储介质
GB2445168A (en) Loading resource administer program into main or higher memory depending on the type of usage requests being sent to the program.
CN116339788A (zh) 大数据平台的系统更新方法、装置、设备和存储介质
CN117648186A (zh) 资源调度方法、系统及装置
CN117808541A (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