一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据库系统及数据库系统的控制方法与流程

2022-06-30 00:42:30 来源:中国专利 TAG:


1.本发明涉及数据库技术领域,具体涉及一种数据库系统及数据库系统的控制方法。


背景技术:

2.随着信息技术的发展,企业越来越依赖于信息化管理,各业务应用的数据信息主要存储在数据库中,企业对业务访问的要求越来越高。为了避免因为业务繁忙导致数据损失,保障数据安全,数据库一般采用双活架构,由此可保证其中一台主机发生故障时,业务可以继续运行,但该架构要求使用两台相同的机器运行同一个数据库,还需要配置共享存储,比较耗费资源。也就是说,双活架构要求较高且资源使用率不高。


技术实现要素:

3.有鉴于此,本发明实施例提供了一种数据库系统及数据库系统的控制方法,以解决目前的双活架构数据库要求较高且资源使用率不高的问题。
4.根据第一方面,本发明实施例提供了一种数据库系统的控制方法,所述数据库系统包括第一容器、第二容器和共享内存,所述第二容器封装有业务表,所述数据库系统的控制方法包括:所述第一容器获取业务需求,根据所述业务需求生成二次操作指令和多个初次操作指令,并将每个初次操作指令下发至对应的第二容器;所述第二容器在接收到任一初次操作指令后,执行与该初次操作指令相对应的操作,得到初次操作结果后上传至所述共享内存;所述共享内存在接收到与所述多个初次操作指令相对应的多个初次操作结果后,对所述多个初次操作结果根据所述二次操作指令进行二次处理,得到与所述业务需求相对应的最终处理结果。
5.结合第一方面,在第一方面第一实施方式中,所述根据所述业务需求生成二次操作指令和多个初次操作指令,并将每个初次操作指令下发至对应的第二容器包括:确定所述业务需求所涉及的业务表;根据所述业务需求所涉及的业务表将所述业务需求分解为二次操作指令和多个初次操作指令。
6.结合第一方面,在第一方面第二实施方式中,所述第一容器中包括所述第二容器的元数据,在将每个初次操作指令下发至对应的第二容器之前,还包括:提取每个初次操作指令中的业务表信息;根据所述业务表信息和所述第二容器的元数据确定与每个初次操作指令相对应的第二容器。
7.结合第一方面,在第一方面第三实施方式中,在所述第一容器获取业务需求之前还包括:构建所述第一容器的第一容器镜像;构建所述第二容器的第二容器镜像;根据配置文件为所述第一容器和所述第二容器分配cpu和内存资源,并创建共享内存;加载所述数据库系统并打开。
8.结合第一方面第三实施方式,在第一方面第四实施方式中,数据库系统的控制方法还包括:针对任一第二容器,启动该第二容器的备份容器,所述备份容器与该第二容器共
享该第二容器中封装的业务表。
9.结合第一方面第四实施方式,在第一方面第五实施方式中,在启动该第二容器的备份容器之后,还包括:所述第一容器还用于获取该第二容器发送的状态信息,根据该第二容器发送的状态信息判断该第二容器是否发生故障,并将该第二容器中的业务切换至所述备份容器。
10.根据第二方面,本发明实施例还提供了一种数据库系统,所述数据库系统包括第一容器、第二容器和共享内存:所述第一容器,用于获取业务需求,根据所述业务需求生成二次操作指令和多个初次操作指令,并将每个初次操作指令下发至对应的第二容器;所述第二容器,所述第二容器封装有业务表,用于在接收到任一初次操作指令后,执行与该初次操作指令相对应的操作,得到初次操作结果后上传至所述共享内存;所述共享内存,用于在接收到与所述多个初次操作指令相对应的多个初次操作结果后,对所述多个初次操作结果根据所述二次操作指令进行二次处理,得到与所述业务需求相对应的最终处理结果。
11.结合第二方面,在第二方面第一实施方式中,所述第二容器中封装有一个业务表或多个相互关联的业务表。
12.结合第二方面,在第二方面第二实施方式中,所述第一容器中封装有控制文件、系统表。
13.结合第二方面第二实施方式,在第二方面第三实施方式中,所述控制文件中包括所述第二容器的元数据。
14.本发明实施例提供的数据库系统及数据库系统的控制方法,将数据库与容器相结合得到了一种全新的数据库系统,传统的数据库通常是将资源分配给整个数据库,而本发明实施例提供的数据库系统(也可称为容器数据库)是将资源分配给每个容器,每个容器可以根据业务情况调整自己的资源分配,与传统数据库相比,分配更加精确、灵活,对资源的使用也更加高效;同时由于容器具备快速启动的特性,因此在出现故障时可以快速镜像,保障数据安全。也就是说,本发明实施例在保持数据库特性的基础上引入了容器的特性,使得容器数据库具备更快速的交付、更高效的部署和扩容、更高的资源利用率以及更简单的管理。
附图说明
15.通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
16.图1为现有技术中数据库的结构示意图;
17.图2示出了数据库系统的结构示意图;
18.图3为本发明实施例数据库系统控制方法的流程示意图。
具体实施方式
19.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
20.图1为现有技术中数据库的结构示意图,如图1所示,以oracle数据库为例,体系结构主要分为:内存结构、进程结构、存储结构。内存结构主要由sga(system global area,系统全局区)和pga(process global area,程序全局区)构成;进程结构主要由用户进程和oracle进程(例如数据库写进程、日志写进程等)组成;存储结构主要由逻辑存储和物理存储构成。
21.如图1所示,左侧user process(用户进程)、server process(服务进程)、pga可以看做成clinet端,上面的instance(实例)和下面的database(数据库)及parameter file(参数文件)、password file(密码文件)和archived logfiles(归档日志文件)组成oracle server,所以整个示图可以理解成一个c/s架构。oracle server由两个实体组成:instance(实例)与database(数据库)。这两个实体是独立的,不过连接在一起。在数据库创建过程中,实例首先被创建,然后才创建数据库。在典型的单实例环境中,实例与数据库的关系是一对一的,一个实例连接一个数据库,实例与数据库也可以是多对一的关系,即不同计算机上的多个实例打开共享磁盘系统上的一个公用数据库。
22.sga是oracle instance的基本组成部分,在实例启动时分配。sga主要由library cache(图书馆缓冲区)、database buffer cache(数据高速缓冲区)、redo log buffer(重做日志缓冲区)、date dictionary cache(数据字段缓冲区)、java pool(java池)、large pool(大型池)和其他结构(如固定sga、锁管理等)组成。
23.pga是用户进程连接到数据库并创建一个会话时,由oracle服务器进程分配的专门用于当前用户会话的内存区,该区域是私有的,为每个用户连接oracle数据库保留的内存,当进程创建时分配,进程结束后被释放,只能被一个进程使用。其中,user process为用户运行一个应用程序时与oracle数据库进程交互时,oracle创建的一个用户进程来运行用户的应用程序。server process是用来处理连接到实例的user process提交的请求。
24.另外,在图1中,pmon表示进程监测进程,smon表示系统检测进程,dbwr表示数据库写进程,lgwr表示日志写进程,ckpt表示检查点进程。
25.当采用图1的数据库时,一般采用双活架构,由此可保证其中一台主机发生故障时,业务可以继续运行,但该架构要求使用两台相同的机器运行同一个数据库,还需要配置共享存储,比较耗费资源。
26.容器是一种轻量级、可移植、自包含的软件打包技术,本质上,它是一个特殊的进程。通过名称空间(namespace)、控制组(control groups)、切系统(chroot)技术把资源、文件、设备、状态和配置划分到一个独立的空间。
27.软件容器是指将软件代码和所需的所有组件(例如库、框架和其他依赖项)打包在一起,让它们隔离在自己的“容器”中。这样,容器内的软件或应用就可以在任何环境和任何基础架构上一致地移动和运行,不受该环境或基础架构的操作系统影响。容器就像是一个气泡(或者是应用周围的计算环境),把应用和周围环境隔离开来。它相当于是一个功能全面、便于移植的计算环境。
28.目前容器技术已经成熟,容器的易管理、易部署扩容以及高效资源利用率等特性非常适合数据库,基于此本发明实施例提供了一种数据库系统,也就是说,将数据库和容器特性相结合,由此可以使得结合后的数据库具备高可用等特性。
29.本发明实施例的数据库系统,所述数据库系统包括第一容器、第二容器和共享内
存。
30.具体的,所述第一容器(也可称为系统容器),用于获取业务需求,根据所述业务需求生成二次操作指令和多个初次操作指令,并将每个初次操作指令下发至对应的第二容器。
31.所述第二容器(也可称为表容器)封装有业务表,用于在接收到任一初次操作指令后,执行与该初次操作指令相对应的操作,得到初次操作结果后上传至所述共享内存。
32.所述共享内存,用于在接收到与所述多个初次操作指令相对应的多个初次操作结果后,对所述多个初次操作结果根据所述二次操作指令进行二次处理,得到与所述业务需求相对应的最终处理结果。
33.在本发明实施例中,第二容器至少为两个。
34.系统容器顾名思义是数据库的封装系统的容器,如图2所示,系统容器中包括系统cpu(在图1中未示出)、系统内存(在图2中简称为内存)、第一工作进程(在图2中简称为工作进程)、控制文件及系统表;具体的,系统表包括system表、sysaux表、user表等;所述控制文件中包括所述第二容器的元数据。具体的,第二容器的元数据可以为第二容器的标识、第二容器的位置。第一工程进程包括管理进程、监控进程和启动进程。
35.进一步的,如图2所示,系统容器中还包括日志文件。
36.需要说明的是,系统容器中的cpu、系统内存在数据库系统启动时根据配置文件分配。
37.表容器是按照业务表进行封装的,每个表容器封装有一个或多个业务有关联的业务表以及相关的索引。每个表容器分配一定的表内存(在图2中简称为内存)和第二工作进程(在图2中简称为工作进程),其中第二工作进程为代理进程,具体按照业务量需求分配,业务繁忙的就分配多一点。
38.如图2所示,表a容器中包括表a cpu、表a内存、表a工作进程及表a;表b容器中包括表bcpu、表b内存、表b工作进程及表b;表c容器中包括表ccpu、表c内存、表c工作进程及表c。其中,表a、表b、表c为业务表,表a工作进程、表b工作进程、表c工作进程为代理进程。需要说明的是,表a容器中的表a cpu和表a内存、表b容器中的表bcpu和表b内存、表c容器中的表ccpu和表c内存在数据库系统启动时根据配置文件分配。
39.如图2所述,数据库系统中还包括共享内存,所述共享内存也在数据库系统启动的时候根据配置文件分配。共享内存是所有容器(包括第一容器和第二容器)的共享空间,各容器在这其中进行业务交互运行。共享内存中包括shared cache(共享缓存区)、buffer cache(高速缓冲区)和redo log buffer(重做日志缓冲区)。
40.本发明实施例提供的数据库系统能使数据库具备容器的特性,具备更快速的交付、更高效的部署和扩容、更高的资源利用率以及更简单的管理,可作为数据库解决方案的一种补充。
41.进一步的,本发明实施例还提供一种数据库系统的控制方法。图3为本发明实施例数据库系统控制方法的流程示意图,如图3所示,本发明实施例的数据库系统控制方法包括以下步骤:
42.s101:所述第一容器获取业务需求,根据所述业务需求生成二次操作指令和多个初次操作指令,并将每个初次操作指令下发至对应的第二容器。
43.具体的,所述根据所述业务需求生成二次操作指令和多个初次操作指令,并将每个初次操作指令下发至对应的第二容器可以采用以下技术方案:确定所述业务需求所涉及的业务表;根据所述业务需求所涉及的业务表将所述业务需求分解为二次操作指令和多个初次操作指令。
44.具体的,在将每个初次操作指令下发至对应的第二容器之前,还包括:提取每个初次操作指令中的业务表信息;根据所述业务表信息和所述第二容器的元数据确定与每个初次操作指令相对应的第二容器。
45.需要说明的是,假如业务需求中涉及到n的业务表,可以将业务需求分解为1个二次操作指令和n个初次操作指令,也就是每个初次操作指令中仅包含一个业务表信息,由此可以准确的确定与初次操作指令相对应的第二容器。
46.如果在m个初次操作指令中提取出来的m个业务表是相关联的,那么有可能基于m个业务表信息确定的第二容器为同一个,此时第二容器中封装有多个相关联的业务表。
47.s102:所述第二容器在接收到任一初次操作指令后,执行与该初次操作指令相对应的操作,得到初次操作结果后上传至所述共享内存。
48.具体的,第二容器在接收到任一初次操作指令后,基于第二容器中封装的业务表执行与该初次操作指令相对应的操作。
49.需要说明的是,假如数据库系统中包括p个第二容器,但是根据业务需求确定出q(q<p)个第二容器,只需将初次操作指令发送至确定出的q个第二容器即可。
50.接收到初次操作指令的第二容器,在接收到初次操作指令后,执行与该初次操作指令相对应的操作,得到初次操作结果后上传至所述共享内存。
51.s103:所述共享内存在接收到与所述多个初次操作指令相对应的多个初次操作结果后,对所述多个初次操作结果根据所述二次操作指令进行二次处理,得到与所述业务需求相对应的最终处理结果。
52.如上所述,假如根据业务需求确定出q个第二容器,则共享内存需要在接收到q个第二容器的初次操作结果后,对多个初次操作结果根据所述二次操作指令进行二次处理,得到与所述业务需求相对应的最终处理结果,并在得到最终处理结果后反馈至客户端。
53.由此可见,数据库系统的运行机制为:第一容器包含数据库系统所需的所有组件,与普通数据库不同的是参数文件、控制文件中记录了第二容器相关的信息,比如第二容器标识、位置等元数据信息;日志文件记录了数据库系统操作事件。第一容器通过设置管理进程和监控进程管理监控所有第二容器,第二容器中设置相应的代理进程用来接收第一容器下达的各种管理和监控命令以及定时向第一容器发送状态信息。第一容器分配操作指令给各个第二容器,第二容器在自己内部进行运算操作后,将结果上传至共享内存,在共享内存中与其他第二容器上传结果二次运算得到最终结果。
54.当客户端有业务需求的时候,第一容器管理进程接到业务需求,解析业务sql生成多个sql任务指令并判断该业务需求与哪个业务表有关,检索第二容器元数据找到相关第二容器发送sql指令,第二容器代理进程接到sql指令,按照指令要求执行sql并上传结果到共享内存,代理进程发送信息到第一容器管理进程,第一容器管理进程接到信息,在共享内存中执行结果合并运行操作,得到结果后反馈客户端,业务结束。
55.由此可见,本发明实施例提供的数据库系统,将数据库与容器相结合得到了一种
全新的数据库系统,传统的数据库通常是将资源分配给整个数据库,而本发明实施例提供的数据库系统(也可称为容器数据库)是将资源分配给每个容器,每个容器可以根据业务情况调整自己的资源分配,与传统数据库相比,分配更加精确、灵活,对资源的使用也更加高效;同时由于容器具备快速启动的特性,因此在出现故障时可以快速镜像,保障数据安全。也就是说,本发明实施例在保持数据库特性的基础上引入了容器的特性,使得容器数据库具备更快速的交付、更高效的部署和扩容、更高的资源利用率以及更简单的管理。
56.为了更加详细的说明本发明实施例数据库系统的控制方法,给出一个具体的示例。
57.(1)数据库有两张表,分别是address表、sales表,以下简称a表和s表,其中a表封装在表a容器中,s表封装在表s容器中,a表有name、address、phone列,记录员工的姓名、地址和电话信息,s表有name列,记录销售员工的姓名信息,现在要查询销售人员的姓名和地址。
58.客户端业务需求为:
59.select s.name,a.address from address a,sales s where a.name=s.name
60.第一容器管理进程接收业务需求,分析业务需求信息,生成容器表操作指令,分别是select name,address from address和select name from sales;在select name,address from address中提取出的业务表为a表,然后根据第二容器的元数据确定与select name,address from address相对应的第二容器为表a容器;在select name from sales提取出的业务表为s表,然后根据第二容器的元数据确定与select name from sales相对应的第二容器为表s容器;
61.将select name,address from address发送至表a容器;将select name from sales发送至表s容器。
62.(2)表a容器接到select name,address from address指令后,执行操作,将a表的name和address列上传到共享内存,表s容器接到select name from sales指令后,执行操作,将s表的name列上传到共享内存。
63.(3)在共享内存中,管理进程将表a的上传结果和表s的上传结果按照name列进行join操作,得到运算结果,第一容器向客户端反馈结果。
64.进一步的,在本发明实施例数据库系统的控制方法中,在步骤s101之前,还包括启动数据库系统。
65.具体的,启动数据库系统可以采用如下方案:构建所述第一容器的第一容器镜像;构建所述第二容器的第二容器镜像;根据配置文件为所述第一容器和所述第二容器分配cpu和内存资源,并创建共享内存;加载所述数据库系统并打开。
66.具体的,镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。镜像内部是一个精简的操作系统(os),同时还包含应用运行所必须的文件和依赖包。镜像可以理解为一种构建时(build-time)结构,而容器可以理解为一种运行时(run-time)结构。通常使用docker container run和docker service create命令从某个镜像启动一个或多个容器。一旦容器从镜像启动后,二者之间就变成了互相依赖的关系。
67.示例的,数据库系统的启动可以采取以下步骤:
68.(1)创建并启动实例
69.分别构建第一容器和第二容器的镜像;启动第一容器,启动进程根据配置文件执行启动命令,分配第一容器cpu和第一容器内存资源,根据数据库参数文件为实例创建一系列后台进程和服务进程,在内存中创建共享内存区等内存结构;同时启动进程将所有第二容器启动,并分别为每个第二容器分配第二容器cpu和第二容器内存资源。
70.(2)加载数据库系统
71.加载数据库系统时实例将读取数据库系统的控制文件,控制文件中包含数据库系统名称、数据文件的位置和名称、第二容器标识等有关数据库物理结构的信息,从控制文件中获取这些信息,为打开数据库系统做好准备。
72.(3)打开数据库系统
73.打开数据库系统时,实例将打开所有处于联机状态的数据文件和重做日志文件。将数据库系统设置为打开状态后,数据库系统处于正常状态,这时普通用户才能够访问数据库系统。
74.作为进一步的实施方式,还包括以下步骤:针对任一第二容器,启动该第二容器的备份容器,所述备份容器与该第二容器共享该第二容器中封装的业务表,且所述备份容器与该第二容器中的代理进程、cpu和内存资源独立。
75.也就是说,从一个相同的镜像同时启动两个容器,其中一个容器为备份容器,备份容器平时不参与业务运行,只作为备份使用。当正在运行的容器崩溃时,由于两者使用同一份镜像数据,备份容器能迅速启动、切换、接管业务,这样可实现业务的高可用性,进一步保障数据安全。
76.需要说明是,可以启动数据库系统中所有第二容器的备份容器,也可以仅启动数据库系统中部分第二容器的备份容器。
77.进一个的,启动该第二容器的备份容器之后,还包括:获取该第二容器发送的状态信息;根据该第二容器发送的状态信息判断该第二容器是否发生故障,并将该第二容器中的业务切换至所述备份容器。也就是说,通过启动第二容器的备份容器,可以在第二容器出现故障时,将第二容器和备份容器进行切换。
78.示例的,第二容器和备份容器的切换可以采用如下方案:第一容器管理进程创建备份容器,即在第二容器镜像基础上启动一个新的容器,第二容器与备份容器共享数据文件,内存和工作进程等资源独立,备份容器平时不参与业务运行。第二容器定时向第一容器发送状态信息,监控进程接收信息,当监控进程在一定时间内接收不到状态信息,主动向第二容器发送确认信息,如果第二容器没有反馈,则监控进程判断第二容器发生故障并向第一容器汇报,第一容器管理进程发出切换指令,备份容器接管业务。故障第二容器重新启动后,被管理进程置为备份容器,当前第二容器出现故障时再次进行切换。
79.需要说明的是,本发明实施例的数据库系统可以包括处理器和存储器,其中处理器和存储器可以通过总线或者其他方式连接。
80.处理器可以为中央处理器(central processing unit,cpu)。处理器还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
81.存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的数据库系统控制方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的数据库系统控制方法。
82.存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
83.所述一个或者多个模块存储在所述存储器中,当被所述处理器执行时,执行如图3所示实施例中的数据库系统控制方法。
84.上述数据库系统具体细节可以对应参阅图1至图3所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
85.本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
86.虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献