CN112835887A - 数据库管理方法、装置、计算设备和存储介质 - Google Patents
数据库管理方法、装置、计算设备和存储介质 Download PDFInfo
- Publication number
- CN112835887A CN112835887A CN201911167443.9A CN201911167443A CN112835887A CN 112835887 A CN112835887 A CN 112835887A CN 201911167443 A CN201911167443 A CN 201911167443A CN 112835887 A CN112835887 A CN 112835887A
- Authority
- CN
- China
- Prior art keywords
- data
- partition
- database
- space
- partition table
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 90
- 238000005192 partition Methods 0.000 claims abstract description 229
- 238000000034 method Methods 0.000 claims abstract description 36
- 230000004044 response Effects 0.000 claims description 9
- 230000001360 synchronised effect Effects 0.000 claims description 7
- 238000012423 maintenance Methods 0.000 abstract description 12
- 238000000926 separation method Methods 0.000 abstract description 11
- 238000012544 monitoring process Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 238000012217 deletion Methods 0.000 description 8
- 230000037430 deletion Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000000638 solvent extraction Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 238000007792 addition Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000013523 data management Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000000725 suspension Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001960 triggered 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据库管理方法、装置、计算设备和存储介质。其中,Oracle数据库中存储有至少一种类型的业务数据,每种类型的业务数据被划分到至少一个分区表中存储,每个分区表对应一个表空间,同一类型的业务数据的不同分区表具有相同的表名和不同的表序号,不同类型的业务数据的分区表的表名不同,各表名及其关联的最大表序号被维护在缓存数据库中,通过监听各表名关联的最大表序号对应的表空间的空间容量增长情况,并实现增量分区,以降低后续维护成本。在此基础上还提供了读写分离的模式,以提高数据查询效率。
Description
技术领域
本申请涉及数据库技术领域,特别涉及一种数据库管理方法、装置、计算设备和存储介质。
背景技术
随着信息技术的发展,各行业对信息***的依赖程度不断增加。数据库作为企业信息***的重要组成部分,对数据库的管理已逐渐成为***维护的必选内容。
Oracle数据库作为国际领先的数据库软件,广泛应用于各个行业的核心业务领域,例如电信运营商的客户关系管理(Customer relationship management system,简称CRM)、业务运营支撑***(Business&Operation Support System,简称BOSS)***;各大银行等的各类操作数据存储(Operational Data Store,简称ODS)应用***;身份证管理***;海关***;各地市三甲医院的医院信息***(Hospital Information System,简称HIS)等。
在Oracle数据库被广泛应用的同时,数据库中存储的数据量也与日俱增,数据量的增长不仅提高了数据对于企业的价值,同时也为开发人员在数据库设计与实现方面带来了更多的挑战。在这之中,如何改进数据库管理方案,以降低维护成本并改善数据库的查询性能,并增强业务***的可用性,成为亟需解决的技术问题。
发明内容
本申请实施例提供了一种数据库管理方法、装置、计算设备和存储介质,以降低维护成本并改善数据库的查询性能,并增强业务***可用性。
第一方面,本申请实施例提供了一种基于Oracle数据库的数据库管理方法,所述Oracle数据库中存储有至少一种类型的业务数据,每种类型的业务数据被划分到至少一个分区表中存储,每个分区表对应一个表空间,同一类型的业务数据的不同分区表具有相同的表名和不同的表序号,不同类型的业务数据的分区表的表名不同,各表名及其关联的最大表序号被维护在缓存数据库中,所述方法包括:
从所述缓存数据库中获取各表名及其关联的最大表序号;
从所述Oracle数据库获取各最大表序号的分区表对应的表空间的空间容量;
若存在任一分区表的表空间的空间容量大于预设的容量阈值,则为所述任一分区表所属类型的业务数据创建新的表空间及对应的分区表,并在所述缓存数据库中更新与新的分区表对应的表名关联的最大表序号。
可选的,从所述Oracle数据库获取各最大表序号的分区表对应的表空间的空间容量,包括:
基于查看命令,向所述Oracle数据库所在的服务器请求获取表空间的空间容量,所述查看命令中包括从所述缓存数据库中获取的各表名及其关联的最大表序号;
解析所述Oracle数据库所在的服务器响应于所述查看命令返回的字符串,以获得各最大表序号的分区表对应的表空间的空间容量。
可选的,所述查看命令为du命令。
可选的,若存在任一分区表的表空间的空间容量大于预设的容量阈值,则为所述任一分区表的表空间所属类型的业务数据创建新的表空间及对应的分区表,包括:
获取所述任一分区表所属类型的业务数据对应的数据库信息,所述数据库信息包括预先为所述Oracle数据库的不同类型的业务数据定义的表名、文件路径、主键信息;
基于所述任一分区表的表空间所属类型的业务数据对应的文件路径以及创建规则,在所述Oracle数据库中创建新的表空间,所述新的表空间对应的分区表存储在所述文件路径下;
基于所述主键信息,为所述新的表空间创建对应的分区表,新的分区表的表名与所述任一分区表的表名相同,并且新的分区表的表序号为所述任一分区表的表序号加预设值。
可选的,所述方法还包括:
响应读取数据的读请求,从所述Oracle数据库的从数据库中获取所述读请求所请求的数据;
响应数据更新请求,在所述数据更新请求所对应的分区表中执行数据更新操作,并在更新成功后,将发生变更的数据同步更新至所述Oracle数据库的从数据库。
可选的,若所述数据更新请求为针对新增数据的请求,在所述数据更新请求所对应的分区表中执行数据更新操作,包括:
确定待新增数据的类型对应的表名,并从所述缓存数据库中获取与所述待新增数据的表名关联的最大表序号;
将所述待新增数据的表标识ID字段设置为所述表名及所述最大表序号,并将所述待新增数据写入所述最大表序号对应的分区表,所述表标识ID字段是为所述待新增数据维护的用于确定所述待新增数据所属分区表的字段,所述表标识ID字段包括所述待新增数据所属分区表的表名及表序号。
可选的,若所述数据更新请求为针对已有数据的请求,在所述数据更新请求所对应的分区表中执行数据更新操作,包括:
查询所述已有数据的表标识ID字段,以确定所述已有数据所在的分区表,所述表标识ID字段是为所述已有数据维护的用于确定所述已有数据所属分区表的字段,所述表标识ID字段包括所述已有数据所属分区表的表名及表序号;
在所述已有数据所在的分区表中针对所述已有数据执行数据改写操作。
可选的,若将发生变更的数据同步更新至所述Oracle数据库的从数据库未能成功,则重复执行所述在所述数据更新请求所对应的分区表中执行数据更新操作的步骤;
若重复执行预定次数后仍未同步更新成功,则向用户客户端返回同步失败提醒,以使得用户重新提交数据更新请求;
其中,针对同一数据的数据更新请求被重复执行多次,对应的数据执行结果相同。
第二方面,本申请实施例提供了一种基于Oracle数据库的数据库管理装置,所述Oracle数据库中存储有至少一种类型的业务数据,每种类型的业务数据被划分到至少一个分区表中存储,每个分区表对应一个表空间,同一类型的业务数据的不同分区表具有相同的表名和不同的表序号,不同类型的业务数据的分区表的表名不同,各表名及其关联的最大表序号被维护在缓存数据库中,所述装置包括:
表序号获取单元,用于从所述缓存数据库中获取各表名及其关联的最大表序号;
空间容量获取单元,用于从所述Oracle数据库获取各最大表序号的分区表对应的表空间的空间容量;
分区创建单元,用于若存在任一分区表的表空间的空间容量大于预设的容量阈值,则为所述任一分区表所属类型的业务数据创建新的表空间及对应的分区表,并在所述缓存数据库中更新与新的分区表对应的表名关联的最大表序号。
第三方面,本申请实施例还提供了一种计算设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请实施例提供的任一数据库管理方法。
第四方面,本申请实施例还提供了一种计算机存储介质,其中,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行本申请实施例中的任一数据库管理方法。
本申请实施例提供的数据库管理方法、装置、计算设备和存储介质,能够监测业务***对应的各个类型的表空间的增长情况,并在表空间容量增长达到预定容量阈值时,创建新的分区表,由此通过增量分区的方式,解决了传统分区方式带来的较高维护成本,并实现了后续扩容操作,能够避免传统扩容方式时暂停服务带来的经济损失。在此基础上,还提出了数据读写分离的方式,以提高数据查询效率,解决了在支撑海量数据情况下Oracle查询速度不理想的问题。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本申请一个实施例的***架构示意图;
图2为根据本申请一个实施例的数据库管理方法的流程示意图;
图3为根据本申请一个实施例的获取表空间容量的流程示意图;
图4为根据本申请一个实施例的创建新的分区表的流程示意图;
图5为根据本申请一个实施例的数据库管理方法的流程示意图;
图6为根据本申请一个实施例的基于读写分离的数据管理流程示意图;
图7为根据本申请一个实施例的数据库管理装置的示意图;
图8为根据本申请一个实施例的计算设备的示意图。
具体实施方式
为了能够清楚地理解本申请实施例提供的技术方案,下面对本申请实施例出现的名词做解释,需要说明的是本申请实施例中的名词解释仅是为了便于理解本方案,并不用于限定本方案,涉及的名词包括:
Oracle数据库:Oracle Database,又名Oracle RDBMS,或简称Oracle。Oracle数据库是一种关系数据库***,是目前世界上最流行的关系数据库***,***可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。Oracle数据库是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
数据表和数据表结构:数据表是由表名、表中的字段和表的记录三个部分组成的。数据表结构描述了一个数据表的框架。在建立数据表之前都需先设计数据表的结构。设计数据表结构实际上就是定义数据表文件名,确定数据表包含哪些字段,各字段的字段名、字段类型、及宽度,并将这些数据输入到计算机当中。
表空间:Oracle数据库被划分成称作为表空间的逻辑区域—形成Oracle数据库的逻辑结构。表空间指的是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表,所以称作表空间。一个Oracle数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是Oracle数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
分区:一种物理数据库的设计技术,目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。分区可以做到将表的数据均衡到不同的地方,提高数据检索的效率,降低数据库的频繁IO压力值。
分区表:将大表的数据分成称为分区的许多小的子集。分区表可以创建其独特的分区索引。倘若硬盘丢失了分区表,数据就无法按顺序读取和写入,导致无法操作。
物理文件:包括(1)数据文件:数据库中的数据在物理上都保存在一些操作***文件中,这些操作***的文件就是数据文件,通常是后缀名为.dbf的文件。(2)控制文件:每个Oracle数据库都有相应的控制文件,是一个二进制文件,其定义了数据库的状态。(3)重做日志文件:用于记录数据库所做的全部变更(如增加、删除、修改等),以便在***发生故障时,基于该重做日志文件对数据库进行恢复。
如前所述,随着信息技术的发展,各行业对信息***的依赖程度不断增加。数据库作为企业信息***的重要组成部分,对数据库的管理已逐渐成为***维护的必选内容。
Oracle数据库作为国际领先的数据库软件,广泛应用于各个行业的核心业务领域,例如电信运营商的客户关系管理(Customer relationship management system,简称CRM)、业务运营支撑***(Business&Operation Support System,简称BOSS)***;各大银行等的各类操作数据存储(Operational Data Store,简称ODS)应用***;身份证管理***;海关***;各地市三甲医院的医院信息***(Hospital Information System,简称HIS)等。
在Oracle数据库被广泛应用的同时,数据库中存储的数据量也与日俱增,数据量的增长不仅提高了数据对于企业的价值,同时也为开发人员在数据库设计与实现方面带来了更多的挑战。
例如,当Oracle数据表中数据量不断增大,查询数据的速度就会变慢,***的整体性能就会下降,此时需考虑对数据表进行分区。数据表进行分区后,其逻辑上仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上)。这样,在查询数据时,无需每次都扫描整张数据表。通过分区可以改善数据库查询性能,增强可用性,该方案方便维护,并能够均衡I/O。
传统的表分区形式包括范围(Range)分区、列表分区、散列分区、组合分区等。通常业务***产生的日志数据会采取基于时间范围的分区形式,而大部分业务数据都需要基于ID、类别等进行散列或列表分区,而这种分区方式需要在分区前,确定分区表的个数,才能进行分区操作,而这种分区方式会带来新的问题。随着***业务量的增长,各个分区表中的数据量也随之增长,当单个分区表大小超过预定阈值(例如2GB)后,数据的查询速度又会降低,需要开发人员停止服务并进行扩容,即进行部分或全部分区表数据的迁移。这种操作将大大提高后期的维护成本,对于支撑线上海量用户的业务***,其停止服务造成的损失更加无法预估。
在这之中,如何改进数据库管理方案,以降低维护成本并改善数据库的查询性能,并增强业务***的可用性,成为亟需解决的技术问题。
有鉴于此,本申请实施例提供了一种数据库管理方法和装置,能够监测业务***对应的各个类型的表空间的增长情况,并在表空间容量增长达到预定容量阈值时,创建新的分区表,由此通过增量分区的方式,解决了传统分区方式带来的较高维护成本,并实现了后续扩容操作,能够避免传统扩容方式时暂停服务带来的经济损失。在此基础上,还提出了数据读写分离的方式,以提高数据查询效率,解决了在支撑海量数据情况下Oracle查询速度不理想的问题。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
***架构
图1为根据本申请一个实施例的***架构示意图。
如图1所述,本申请的***可以包括数据库***10、管理模块20和业务***30。
数据库***10可以包括Oracle数据库11、缓存数据库12、以及Oracle数据库11的从数据库13。该数据库***10可以经由管理模块20为业务***30提供数据库服务,例如数据存储服务等。
应当理解的是,图1中虽将管理模块20独立设置,但是本领域技术人员应该理解,在其它实施例中,管理模块20也可以被配置在数据库***10或业务***30中,并实现对例如Oracle数据库11、缓存数据库12、以及Oracle数据库11的从数据库13等的协同管理,并为业务***30提供数据库服务,本申请对此不做限制。
Oracle数据库11、缓存数据库12、以及Oracle数据库11的从数据库13可以组成该数据库***的整个数据库体系,可以为业务***提供相关数据库服务,例如存储业务数据。
Oracle数据库11中可以存储有至少一种类型的业务数据,每种类型的业务数据被划分到至少一个分区表中存储,每个分区表对应一个表空间,同一类型的业务数据的不同分区表具有相同的表名和不同的表序号,不同类型的业务数据的分区表的表名不同。
管理模块20中可以存储有程序代码,基于该程序代码能够实现对上述整个数据库体系的管理,主要可以完成对数据库体系的操纵与管理功能,例如实现数据库对象的创建、数据库存储数据的查询、新增、修改与删除操作和数据库的用户管理、权限管理等,并为与该数据库***关联的业务***提供相应的服务。其中,管理模块20还可以包括不同的子模块,并经由不同的子模块实现相对应的管理功能,例如由分区模块实现分区功能,由读写模块实现对业务数据的读写管理,在此不再赘述。
本申请实施例的数据库管理方案主要涉及基于增量分区方式的分区表管理方案以及基于读写分离模式的数据管理方案。如下将结合附图与实施例分别说明。
基于增量分区方式的分区表管理
在一个实施例中,分区表可以以“表名+表序号”的形式命名,分区表对应的物理文件可以以“表名+表序号.dbf”的形式命名,每种类型的业务数据的表序号起始为“0”,表序号随分区表数量的增加而相应递增,具有最大表序号的分区表可以供业务***进行新增操作,同时其表空间的增长情况可以被管理模块20实时监测。各表名及其关联的最大表序号可以被维护在缓存数据库中,管理模块20可以定时监测对应于不同类型的业务数据的最大表序号对应的分区表的表空间大小,并当表空间容量增长超过预设的容量阈值时,动态创建新的分区表,以供业务***进行新增操作。由此,在单个分区表容量超过容量阈值时,无需暂停服务即可实现扩容,既不会升高后期维护成本,又能够避免暂停服务带来的经济损失,对于支撑线上海量用户的业务***更加友好。
图2为根据本申请一个实施例的数据库管理方法的流程示意图。其中,该方法步骤主要涉及数据库管理中的分区流程,该流程可以由图1所示的管理模块20或其子模块(例如分区模块,图1未示出)执行,本申请对此不做限制。
如图2所示,在步骤S210,可以从所述缓存数据库中获取各表名及其关联的最大表序号。
本申请实施例中,一种类型的业务数据可以对应于一种表结构,一种表结构可以对应于一个表名以及多个分区表,同一种表结构的每个分区表具有相同的表名及其各自对应的表序号。不同表结构的分区表对应的最大表序号可以通过缓存数据库(例如Redis缓存数据库或其它类型的缓存数据,本申请对此不做限制)来进行维护。其中,在缓存数据库中,例如可以以“键(key)-值(value)”关联存储表名及其关联的最大表序号,也即以“表名-最大表序号”的形式存储所有表结构对应的最大表序号信息。
实施时,在步骤S210,可以从所述缓存数据库中获取所有表结构对应的最大表序号,并拼接生成待监测分区表的名称列表。在该名称列表中包括Oracle数据库的所有待监测的分区表的名称即“表名-表序号”,在此,待监测的分区表是不同表结构的对应于最大表序号的分区表。基于该名称列表,管理模块20可以锁定待监测的分区表对应的表空间。
然后,在步骤S220,可以从所述Oracle数据库获取各最大表序号的分区表对应的表空间的空间容量。
在一个实施例中,管理模块20例如可以通过定时执行已存储的相关程序代码来获取各最大表序号的分区表对应的表空间的空间容量。具体地,管理模块20例如可以启动监听线程,扫描待监测分区表的名称列表,定时计算各待监测分区表的表空间大小,获取各表空间的容量。
图3为根据本申请一个实施例的获取表空间容量的流程示意图。其中,该流程可以由图1所示的管理模块20或其子模块(例如分区模块,图1未示出)执行,本申请对此不做限制。
如图3所示,在步骤S221,管理模块20可以连接所述Oracle数据库所在的服务器。其中,管理模块20例如可以通过安全外壳协议(Secure Shell,SSH)远程连接所述Oracle数据库所在的服务器,本申请对其具体实现方式不做限制。
在步骤S222,基于查看命令,向所述Oracle数据库所在的服务器请求获取表空间的空间容量,所述查看命令包括从所述缓存数据库中获取的各表名及其关联的最大表序号。其中,查看命令例如可以是du命令,查看命令对应的命令行可以为“du-s-m”+“分区表对应物理文件的路径”。
然后,管理模块20可以接收到所述Oracle数据库所在的服务器响应于所述查看命令返回文件信息。其中,该文件信息例如可以为“物理文件名”+“\t”+“文件大小”形式的字符串。
在步骤S223,管理模块20可以解析所述Oracle数据库所在的服务器响应于所述查看命令返回的字符串,以获得各最大表序号的分区表对应的表空间的空间容量。如前所述,一个表空间可以对应着一个或多个物理的数据库文件。在步骤S223中解析字符串后,管理模块20还可以计算属于同一表空间的多个文件的大小之和,即为该表空间当前的空间容量。
对于待监测分区表的名称列表中的每一个待监测分区表,在获取到任一待监测分区表的表空间容量后,可以将其表空间容量与预设的容量阈值(例如2GB)进行比较,以判断该表空间的容量增长情况。
如前所述,随着***业务量的增长,各个分区表中的数据量也随之增长。当分区表的表空间的空间容量大于(即超出)预设的容量阈值(例如2GB)后,数据的查询速度会下降并可能引起***整体性能的下降。为保障数据的查询速度以及***整体性能,此时需要对数据表进行分区。
返回图1,在步骤S230,若待监测分区表中存在任一分区表的表空间的空间容量大于预设的容量阈值,则为所述任一分区表所属类型的业务数据创建新的表空间及对应的分区表,并在所述缓存数据库中更新与新的分区表对应的表名关联的最大表序号。而若在步骤S230中未检测到表空间容量超出预设的容量阈值的分区表,则可以结束本次监测,并等待下一监测周期。
由此,即可通过持续监测Oracle数据库的各个分区表的表空间增长情况,并动态地创建新的分区表,实现对不同类型的业务数据的动态扩容,既不提高维护成本,又能够避免现有技术中开发人员暂停服务线下扩容而带来的经济损失。
图4为根据本申请一个实施例的创建新的分区表的流程示意图。其中,该流程可以由图1所示的管理模块20或其子模块(例如分区模块,图1未示出)执行,本申请对此不做限制。
如图4所示,在步骤S231,获取所述任一分区表所属类型的业务数据对应的数据库信息。
在此,所述任一分区表即为在前述步骤S220检测到的表空间容量大于预设的容量阈值的待监测分区表,该任一分区表与将要创建的新的分区表对应于同一类型的业务数据。换言之,本申请实施例是在检测到某个数据类型的最大表序号对应的分区表的表空间容量超出预设容量阈值时,为该数据类型创建新的分区表,以供业务***进行新增操作。
数据库信息可以包括预先为所述Oracle数据库的不同类型的业务数据定义的例如表名、文件路径、主键信息以及创建规则等。基于所获取的数据库信息,能够知悉在如何为相应类型的业务数据申请创建新的表空间以及表结构。
在一个实施例中,例如可以从Oracle数据库的数据字典中获取数据库信息。Oracle数据库的数据字典(data dictionary)通常是在创建和安装数据库时被创建的,是对于数据模型中的数据对象或者项目的描述的集合,通过对数据项和数据结构的定义,来描述数据流、数据存储的逻辑内容。数据字典还有另一种含义,即在数据库设计时用到的一种工具,用来描述数据库中基本表的设计,主要包括字段名、数据类型、主键、外键等描述表的属性的内容。
在获取到数据库信息后,在步骤S232,管理模块20可以加载Oracle数据库驱动连接所述Oracle数据库,并基于所述任一分区表的表空间所属类型的业务数据对应的文件路径以及创建规则,在所述Oracle数据库中创建新的表空间,所述新的表空间对应的物理文件存储在所述文件路径下。
在一个实施例中,管理模块20例如可以通过执行创建表空间的语句(例如SQL语句)来创建新的表空间。
所创建的表空间,可以被设置为初始空间容量固定并可以自动扩展。作为示例,本申请实施例中例如可以将所创建的新的表空间的初始空间容量设置为1GB,并使得其以每次扩展20M来增长空间容量。并且,在创建表空间后,管理模块20还可以将该表空间的例如连接权限(CONNECT)、创建实体权限(RESOURCE)等权限赋予给操作用户,即所属类型的业务数据。
然后,在步骤S233,管理模块20基于所述主键信息以及所述创建规则,为所述新的表空间创建对应的分区表,并将该分区表的新增、查询、更新、删除等操作权限赋予给操作用户,即所属类型的业务数据。其中,新的分区表的表名与所述任一分区表的表名相同,并且新的分区表的表序号为所述任一分区表的表序号加预设值。这样,当业务***期望针对该种类型的业务数据进行新增操作时,就可以基于新创建的表空间和分区表来执行对应的操作。
由此,通过上述方案,本申请实施例能够在监测到对应于某种类型的业务数据的最大表序号的分区表的表空间容量超出预设的容量阈值时,为该种类型的业务数据动态创建新的表空间及分区表,使得能够基于新创建的表空间和分区表供业务进行针对该种类型的业务数据进行新增操作,这样,既不会因为数据量的增加而使查询数据的速度变慢,也需要暂停服务来进行扩容而造成不必要的经济损失,能够解决传统分区方式存在的各种弊端。
至此,已经结合图2-图4及实施例详细说明了本申请的基于增量分区的数据库管理方案。
基于读写分离模式的数据管理
返回图1,在另一个实施例中,基于Oracle数据库11、缓存数据库12、以及Oracle数据库11的从数据库13的数据库体系,管理模块20还可以提供读写分离的模式,来实现对整个数据库体系的数据访问和/或数据存储的管理。
图5为根据本申请一个实施例的数据库管理方法的流程示意图。其中,该方法步骤主要涉及数据库管理中的数据访问和/或数据存储的流程,该流程可以由图1所示的管理模块20或其子模块(例如读写模块,图1为示出)执行,本申请对此不做限制。
如图5所示,在步骤S510,响应读取数据的读请求,从所述Oracle数据库的从数据库中获取所述读请求所请求的数据。
在步骤S520,响应数据更新请求,在所述数据更新请求所对应的分区表中执行数据更新操作,并在更新成功后,将发生变更的数据同步更新至所述Oracle数据库的从数据库。
在一个实施例中,Oracle数据库的从数据库例如可以是非关系型数据库,例如MongoDB数据库。这样,可以借助非关系型数据库读写数据快的优点提高***整体查询性能。其中,由于Oracle数据库是关系型数据库,与所采用的非关系型数据库例如MongoDB数据库是不同的数据库类型,因此,本申请实施例中,非关系型数据库也可以称为是Oracle数据库的“逻辑从数据库”。
由此,通过Oracle数据库的逻辑从数据库以及读写分离的模式,业务***执行写操作时,先更新Oracle数据库,若更新成功,再更新Oracle数据库的从数据库。业务***执行读操作时,直接从Oracle数据库的从数据库中读取数据。该方案能够提高数据查询效率,能够解决在支撑海量数据的情况下Oracle数据库查询速度不理想的问题。
返回图1,如前所述,由于在Oracle数据库中可以存储有至少一种类型的业务数据,每种类型的业务数据被划分到至少一个分区表中存储。本申请实施例中,对于每一条业务数据,可以维护一个表标识ID字段,以便于根据该表标识ID字段能够准确定位该条业务数据所在的分区表,以便于执行相应的数据访问或数据存储管理。在一个实施例中,该表标识ID字段可以包括该条业务数据所属分区表对应的表名及表序号。
图6为根据本申请一个实施例的基于读写分离的数据管理流程示意图。
如图6所示,在步骤S601,接收数据库操作请求,该数据库操作请求可以用于请求对数据库上的数据进行的一系列操作,包括读取数据、写数据即新增数据、更新或修改数据、删除数据等。
在步骤S602,管理模块20可以判断所接收到的数据库操作请求的类型。例如通过识别操作语句(例如SQL语句)判断数据库操作请求对应的操作类型。
若识别为读取数据的读请求,则,在步骤S603,管理模块20可以响应读取数据的读请求,从所述Oracle数据库的从数据库中获取所述读请求所请求的数据。在此,读请求中可以包括业务***前端提交的相关查询参数,基于该相关查询参数,可以从Oracle数据库的从数据库例如MongoDB数据库中查询符合该相关查询参数的业务数据。
若识别为数据更新请求,则,在步骤S604,管理模块20可以响应数据更新请求,在所述数据更新请求所对应的分区表中执行数据更新操作。并在更新成功后,则将发生变更的数据同步更新至所述Oracle数据库的从数据库(参见下述步骤S611)。
本申请实施例中,针对数据库的新增数据、更新或修改数据、删除数据等写操作触发的请求可以统称为数据更新请求(或是写请求)。针对每种不同的写操作,在步骤S604所执行的处理响应不完全相同。其中,本申请实施例中,Oracle数据库被配置为,若是请求在Oracle数据库中新增数据,则将待新增的数据写入该数据所属类型的分区表中对应于最大表序号的分区表中;若是请求针对Oracle数据库中已有数据进行更新、修改或删除等操作,则在该已有数据所在的分区表中执行相应的改写操作。
实施时,例如,若所述数据更新请求为针对新增数据的请求,在步骤S604,具体可以包括:在步骤S606,确定所述新增数据的类型对应的表名,并从所述缓存数据库中获取与所述新增数据的表名关联的最大表序号。在步骤S607,将所述新增数据的表标识ID字段设置为所述表名及最大表序号,并将所述新增数据写入所述最大表序号对应的分区表。其中,所述表标识ID字段是为所述待新增数据维护的用于确定所述待新增数据所属分区表的字段,所述表标识ID字段包括所述待新增数据所属分区表的表名及表序号。
换言之,本申请实施例中,对于业务***的新增数据的请求,可以根据待新增数据的类型,确定该新增数据对应的表名,并从缓存数据库(例如Redis)中获取该表名对应的最大表序号。之后,将该新增数据的表标识ID字段设置为所确定的表名及最大表序号,并将待新增数据写入最大表序号对应的分区表中。
又例如,若所述数据更新请求为针对已有数据的请求,在步骤S604,具体包括:在步骤S608,查询所述已有数据的表标识ID字段,以确定所述已有数据所在的分区表,所述表标识ID字段是为所述已有数据维护的用于确定所述已有数据所属分区表的字段,所述表标识ID字段包括所述已有数据所属分区表的表名及表序号;在步骤S609,在所述已有数据所在的分区表中针对所述已有数据执行数据改写操作。
换言之,本申请实施例中,在业务***执行数据更新操作时,先确定该数据更新操作所针对的数据所在的分区表,进而在其所在的分区表中执行数据更新操作。
其中,针对已有数据的请求,还可以包括对已有数据的删除操作。本申请实施例中,业务***中的数据删除操作大多为逻辑删除,即通过修改数据对应的删除标志位来实现,因此,在上述步骤S609中执行的数据更新操作,既可以包括针对已有数据的更新/修改操作,还可以包括对数据的删除标志位的操作,在此不再赘述。
如前所述,本申请实施例中,针对Oracle数据库的数据库操作成功后,会将发生表更的数据同步更新至Oracle数据库的从数据库,例如非关系型数据库MongoDB中。对应的数据同步操作可以是,在Oracle数据库的从数据库中执行与在Oracle数据库执行的数据更新操作同样的操作。
返回图6,在步骤S610,可以判断针对Oracle数据库的数据库操作是否成功执行。若执行成功,则进入步骤S611,将发生表更的数据同步更新至Oracle数据库的从数据库。若执行失败,则进入步骤S612,反馈异常提醒,例如向业务***前端返回操作失败结果,并结束数据处理流程。
在Oracle数据库和从数据库两者之间进行数据同步时,可能会出现在Oracle数据库中操作执行成功而在从数据库中操作执行失败的情况。返回图6,在步骤S613,判断在从数据库例如MongoDB中操作是否成功执行。
若执行成功,则结束数据处理流程。
若执行失败,则进入步骤S614,重复执行在所述数据更新请求所对应的分区表中执行数据更新操作的步骤,以将在Oracle数据库中发生变更的数据同步更新至所述Oracle数据库的从数据库。即在Oracle数据库的从数据库中重复执行预定次数的与在Oracle数据库执行的数据更新操作同样的操作。在此,可以重复预定次数。预定次数例如可以大于或等于N次,N为大于1的整数(根据经验,N例如可以设置为3-5次,本申请对此不做限制)。由此,通过在从数据库中重复执行数据更新操作,以防止网络传输等外界环境造成的异常问题,保障Oracle数据库与其从数据库之间的数据一致。
若在从数据库例如MongoDB中重复执行N次后仍然失败,则可以进入步骤S615,将可以该异常反馈至业务***前端页面,以提示用户重新提交操作请求即数据更新请求。同时,在步骤S616,将该异常记录到错误日志(例如前述的重做日志文件)中,为后续完善***异常处理流程提供支持。然后,结束数据处理流程。
其中,以从数据库MongoDB为例,由于MongoDB是非关系型数据库,针对其数据的写操作实际为基于文件的写操作。因此与Oracle这类关系型数据库相比,MongoDB在重复执行写操作后仍然出现失败的概率极低,但为了确保两类数据库中的数据一致,可以预先配置,一旦发生上述在从数据库重复执行N次仍然失败情况,需要向业务***前端页面提示用户重新提交操作请求。在***功能设计上,还需确保与写操作相关的功能设计具有“幂等性”,即相同的参数的操作请求在重复执行后,数据执行结果均相同。也就是说,在从数据库中针对同一操作的多次重复执行的操作对应的结果是相同的。
由此,通过上述异常处理流程,保障业务***的整体性能。
至此,已经结合图6详细说明了本申请的基于读写分离的数据库管理方案。通过以非关系型数据库例如MongoDB作为Oracle数据库的逻辑从数据库,能够实现读写分离的模式,并可以借助非关系型数据库读写数据快的优点提高数据查询效率,从而提高业务***的整体性能。
基于相同的构思,本申请还提供了一种基于Oracle数据库的数据库管理装置。
图7为根据本申请一个实施例的数据库管理装置的示意图。其中,所述Oracle数据库中存储有至少一种类型的业务数据,每种类型的业务数据被划分到至少一个分区表中存储,每个分区表对应一个表空间,同一类型的业务数据的不同分区表具有相同的表名和不同的表序号,不同类型的业务数据的分区表的表名不同,各表名及其关联的最大表序号被维护在缓存数据库中。
如图7所示,该数据库管理装置700可以包括:
表序号获取单元710,用于从所述缓存数据库中获取各表名及其关联的最大表序号。
空间容量获取单元720,用于从所述Oracle数据库获取各最大表序号的分区表对应的表空间的空间容量。
分区创建单元730,用于若存在任一分区表的表空间的空间容量大于预设的容量阈值,则为所述任一分区表所属类型的业务数据创建新的表空间及对应的分区表,并在所述缓存数据库中更新与新的分区表对应的表名关联的最大表序号。
在一个实施例中,空间容量获取单元720用于:
连接所述Oracle数据库所在的服务器;
基于查看命令,向所述Oracle数据库所在的服务器请求获取表空间的空间容量,所述查看命令包括从所述缓存数据库中获取的各表名及其关联的最大表序号;
解析所述Oracle数据库所在的服务器响应于所述查看命令返回的字符串,以获得各最大表序号的分区表对应的表空间的空间容量。
在一个实施例中,所述查看命令为du命令。
在一个实施例中,分区创建单元730用于:
获取所述任一分区表所属类型的业务数据对应的数据库信息,所述数据库信息包括预先为所述Oracle数据库的不同类型的业务数据定义的表名、文件路径、主键信息以及创建规则;
加载Oracle数据库驱动连接所述Oracle数据库,并基于所述任一分区表的表空间所属类型的业务数据对应的文件路径以及创建规则,在所述Oracle数据库中创建新的表空间,所述新的表空间对应的物理文件存储在所述文件路径下;
基于所述主键信息以及所述创建规则,为所述新的表空间创建对应的分区表,新的分区表的表名与所述任一分区表的表名相同,并且新的分区表的表序号为所述任一分区表的表序号加预设值。
在一个实施例中,所述数据库管理装置还可以包括:
数据读取单元,用于响应读取数据的读请求,从所述Oracle数据库的从数据库中获取所述读请求所请求的数据;
数据更新单元,用于响应数据更新请求,在所述数据更新请求所对应的分区表中执行数据更新操作,并在更新成功后,将发生变更的数据同步更新至所述Oracle数据库的从数据库。
在一个实施例中,若所述数据更新请求为针对新增数据的请求,数据更新单元用于:
确定待新增数据的类型对应的表名,并从所述缓存数据库中获取与所述待新增数据的表名关联的最大表序号;
将所述待新增数据的表标识ID字段设置为所述表名及所述最大表序号,并将所述待新增数据写入所述最大表序号对应的分区表,所述表标识ID字段是为所述待新增数据维护的用于确定所述待新增数据所属分区表的字段,所述表标识ID字段包括所述待新增数据所属分区表的表名及表序号。
在一个实施例中,若所述数据更新请求为针对已有数据的请求,数据更新单元用于:
查询所述已有数据的表标识ID字段,以确定所述已有数据所在的分区表,所述表标识ID字段是为所述已有数据维护的用于确定所述已有数据所属分区表的字段,所述表标识ID字段包括所述已有数据所属分区表的表名及表序号;
在所述已有数据所在的分区表中针对所述已有数据执行数据改写操作。
在一个实施例中,若将发生变更的数据同步更新至所述Oracle数据库的从数据库未能成功,则数据更新单元重复执行预定次数的数据同步操作;若重复执行预定次数的数据同步操作后仍未同步更新成功,则数据更新单元向用户客户端返回同步失败提醒,以使得用户重新提交数据更新请求;其中,针对同一数据的数据更新请求被重复执行多次,对应的数据执行结果相同。
至此,已经详细说明了本申请的数据库管理装置。其中,该数据库管理装置及其各功能模块的功能实现的细节,与上文结合图1-图7描述的数据库管理方法相同或相似,具体实现细节可参见上文的相关描述,在此不再赘述。
在介绍了本申请示例性实施方式的一种数据库管理方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的计算设备。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为***、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
在一些可能的实施方式中,根据本申请的计算设备可以至少包括至少一个处理器、以及至少一个存储器。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本申请各种示例性实施方式的数据库管理方法中的步骤。例如,处理器可以执行上述图2-图6的相关方法步骤。
下面参照图8来描述根据本申请的这种实施方式的计算设备130。图8显示的计算设备130仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,计算设备130以通用计算设备的形式表现。计算设备130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同***组件(包括存储器132和处理器131)的总线133。
总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、***总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(ROM)1323。
存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算设备130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算设备130交互的设备通信,和/或与使得该计算设备130能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口135进行。并且,计算设备130还可以通过网络适配器136与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于计算设备130的其它模块通信。应当理解,尽管图中未示出,可以结合计算设备130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
在一些可能的实施方式中,本申请提供的一种数据库管理方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的一种数据库管理方法中的步骤,例如,计算机设备可以执行如图2-图6中的相关方法步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的用于数据库管理的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (11)
1.一种基于Oracle数据库的数据库管理方法,其特征在于,所述Oracle数据库中存储有至少一种类型的业务数据,每种类型的业务数据被划分到至少一个分区表中存储,每个分区表对应一个表空间,同一类型的业务数据的不同分区表具有相同的表名和不同的表序号,不同类型的业务数据的分区表的表名不同,各表名及其关联的最大表序号被维护在缓存数据库中,所述方法包括:
从所述缓存数据库中获取各表名及其关联的最大表序号;
从所述Oracle数据库获取各最大表序号的分区表对应的表空间的空间容量;
若存在任一分区表的表空间的空间容量大于预设的容量阈值,则为所述任一分区表所属类型的业务数据创建新的表空间及对应的分区表,并在所述缓存数据库中更新与新的分区表对应的表名关联的最大表序号。
2.根据权利要求1所述的方法,其特征在于,从所述Oracle数据库获取各最大表序号的分区表对应的表空间的空间容量,包括:
基于查看命令,向所述Oracle数据库所在的服务器请求获取表空间的空间容量,所述查看命令中包括从所述缓存数据库中获取的各表名及其关联的最大表序号;
解析所述Oracle数据库所在的服务器响应于所述查看命令返回的字符串,以获得各最大表序号的分区表对应的表空间的空间容量。
3.根据权利要求2所述的方法,其特征在于,所述查看命令为du命令。
4.根据权利要求1所述的方法,其特征在于,若存在任一分区表的表空间的空间容量大于预设的容量阈值,则为所述任一分区表的表空间所属类型的业务数据创建新的表空间及对应的分区表,包括:
获取所述任一分区表所属类型的业务数据对应的数据库信息,所述数据库信息包括预先为所述Oracle数据库的不同类型的业务数据定义的表名、文件路径、主键信息;
基于所述任一分区表的表空间所属类型的业务数据对应的文件路径以及创建规则,在所述Oracle数据库中创建新的表空间,所述新的表空间对应的分区表存储在所述文件路径下;
基于所述主键信息,为所述新的表空间创建对应的分区表,新的分区表的表名与所述任一分区表的表名相同,并且新的分区表的表序号为所述任一分区表的表序号加预设值。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应读取数据的读请求,从所述Oracle数据库的从数据库中获取所述读请求所请求的数据;
响应数据更新请求,在所述数据更新请求所对应的分区表中执行数据更新操作,并在更新成功后,将发生变更的数据同步更新至所述Oracle数据库的从数据库。
6.根据权利要求5所述的方法,其特征在于,若所述数据更新请求为针对新增数据的请求,在所述数据更新请求所对应的分区表中执行数据更新操作,包括:
确定待新增数据的类型对应的表名,并从所述缓存数据库中获取与所述待新增数据的表名关联的最大表序号;
将所述待新增数据的表标识ID字段设置为所述表名及所述最大表序号,并将所述待新增数据写入所述最大表序号对应的分区表,所述表标识ID字段是为所述待新增数据维护的用于确定所述待新增数据所属分区表的字段,所述表标识ID字段包括所述待新增数据所属分区表的表名及表序号。
7.根据权利要求5所述的方法,其特征在于,若所述数据更新请求为针对已有数据的请求,在所述数据更新请求所对应的分区表中执行数据更新操作,包括:
查询所述已有数据的表标识ID字段,以确定所述已有数据所在的分区表,所述表标识ID字段是为所述已有数据维护的用于确定所述已有数据所属分区表的字段,所述表标识ID字段包括所述已有数据所属分区表的表名及表序号;
在所述已有数据所在的分区表中针对所述已有数据执行数据改写操作。
8.根据权利要求5-7任一项所述的方法,其特征在于,若将发生变更的数据同步更新至所述Oracle数据库的从数据库未能成功,则重复执行所述在所述数据更新请求所对应的分区表中执行数据更新操作的步骤;
若重复执行预定次数后仍未同步更新成功,则向用户客户端返回同步失败提醒,以使得用户重新提交数据更新请求;
其中,针对同一数据的数据更新请求被重复执行多次,对应的数据执行结果相同。
9.一种基于Oracle数据库的数据库管理装置,其特征在于,所述Oracle数据库中存储有至少一种类型的业务数据,每种类型的业务数据被划分到至少一个分区表中存储,每个分区表对应一个表空间,同一类型的业务数据的不同分区表具有相同的表名和不同的表序号,不同类型的业务数据的分区表的表名不同,各表名及其关联的最大表序号被维护在缓存数据库中,所述装置包括:
表序号获取单元,用于从所述缓存数据库中获取各表名及其关联的最大表序号;
空间容量获取单元,用于从所述Oracle数据库获取各最大表序号的分区表对应的表空间的空间容量;
分区创建单元,用于若存在任一分区表的表空间的空间容量大于预设的容量阈值,则为所述任一分区表所属类型的业务数据创建新的表空间及对应的分区表,并在所述缓存数据库中更新与新的分区表对应的表名关联的最大表序号。
10.一种计算设备,其特征在于,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-8任何一项所述的数据库管理方法。
11.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1-8任何一项所述的数据库管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911167443.9A CN112835887A (zh) | 2019-11-25 | 2019-11-25 | 数据库管理方法、装置、计算设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911167443.9A CN112835887A (zh) | 2019-11-25 | 2019-11-25 | 数据库管理方法、装置、计算设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112835887A true CN112835887A (zh) | 2021-05-25 |
Family
ID=75922460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911167443.9A Pending CN112835887A (zh) | 2019-11-25 | 2019-11-25 | 数据库管理方法、装置、计算设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835887A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113486010A (zh) * | 2021-07-01 | 2021-10-08 | 远光软件股份有限公司 | 数据库的同步方法、装置、服务器和存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164431A (zh) * | 2011-12-13 | 2013-06-19 | 北京神州泰岳软件股份有限公司 | 关系型数据库的数据存储方法和存储*** |
US20150347936A1 (en) * | 2014-05-29 | 2015-12-03 | International Business Machines Corporation | Database partition |
CN106933837A (zh) * | 2015-12-29 | 2017-07-07 | 航天信息股份有限公司 | 一种数据库表模型及创建方法 |
WO2017143957A1 (zh) * | 2016-02-26 | 2017-08-31 | 华为技术有限公司 | 一种数据重分布的方法及装置 |
CN108197267A (zh) * | 2018-01-02 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 数据库分区表的扩展分析方法、装置及终端设备 |
US20180225353A1 (en) * | 2015-11-26 | 2018-08-09 | Huawei Technologies Co., Ltd. | Distributed Database Processing Method and Device |
CN108509636A (zh) * | 2018-04-10 | 2018-09-07 | 浙江知水信息技术有限公司 | 一种基于分区表技术实现读写分离的大数据管理容灾方法 |
CN109783571A (zh) * | 2018-12-13 | 2019-05-21 | 平安科技(深圳)有限公司 | 隔离环境的数据处理方法、装置、计算机设备及存储介质 |
CN109815228A (zh) * | 2018-12-14 | 2019-05-28 | 深圳壹账通智能科技有限公司 | 数据库表的创建方法、装置、计算机设备及可读存储介质 |
CN110019125A (zh) * | 2017-11-27 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据库管理的方法和装置 |
CN110263115A (zh) * | 2019-06-17 | 2019-09-20 | 百度在线网络技术(北京)有限公司 | 基于分布式表格存储高精度地图数据的方法及其相关设备 |
-
2019
- 2019-11-25 CN CN201911167443.9A patent/CN112835887A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164431A (zh) * | 2011-12-13 | 2013-06-19 | 北京神州泰岳软件股份有限公司 | 关系型数据库的数据存储方法和存储*** |
US20150347936A1 (en) * | 2014-05-29 | 2015-12-03 | International Business Machines Corporation | Database partition |
US20180225353A1 (en) * | 2015-11-26 | 2018-08-09 | Huawei Technologies Co., Ltd. | Distributed Database Processing Method and Device |
CN106933837A (zh) * | 2015-12-29 | 2017-07-07 | 航天信息股份有限公司 | 一种数据库表模型及创建方法 |
WO2017143957A1 (zh) * | 2016-02-26 | 2017-08-31 | 华为技术有限公司 | 一种数据重分布的方法及装置 |
CN110019125A (zh) * | 2017-11-27 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据库管理的方法和装置 |
CN108197267A (zh) * | 2018-01-02 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 数据库分区表的扩展分析方法、装置及终端设备 |
CN108509636A (zh) * | 2018-04-10 | 2018-09-07 | 浙江知水信息技术有限公司 | 一种基于分区表技术实现读写分离的大数据管理容灾方法 |
CN109783571A (zh) * | 2018-12-13 | 2019-05-21 | 平安科技(深圳)有限公司 | 隔离环境的数据处理方法、装置、计算机设备及存储介质 |
CN109815228A (zh) * | 2018-12-14 | 2019-05-28 | 深圳壹账通智能科技有限公司 | 数据库表的创建方法、装置、计算机设备及可读存储介质 |
CN110263115A (zh) * | 2019-06-17 | 2019-09-20 | 百度在线网络技术(北京)有限公司 | 基于分布式表格存储高精度地图数据的方法及其相关设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113486010A (zh) * | 2021-07-01 | 2021-10-08 | 远光软件股份有限公司 | 数据库的同步方法、装置、服务器和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110799960B (zh) | 数据库租户迁移的***和方法 | |
US10671642B2 (en) | Copying data changes to a target database | |
US7480643B2 (en) | System and method for migrating databases | |
US10509696B1 (en) | Error detection and mitigation during data migrations | |
US8447754B2 (en) | Methods and systems for optimizing queries in a multi-tenant store | |
US10318493B2 (en) | Custom policy driven data placement and information lifecycle management | |
US10942814B2 (en) | Method for discovering database backups for a centralized backup system | |
US9280568B2 (en) | Zero downtime schema evolution | |
US10585909B2 (en) | Task-execution in a DBMS using stored procedures | |
US11347701B2 (en) | Live zero downtime migration of databases with disparate schemata | |
US9152683B2 (en) | Database-transparent near online archiving and retrieval of data | |
US10642837B2 (en) | Relocating derived cache during data rebalance to maintain application performance | |
WO2016079629A1 (en) | Optimizing database deduplication | |
US10909091B1 (en) | On-demand data schema modifications | |
US11487742B2 (en) | Consistency checks between database systems | |
US10990571B1 (en) | Online reordering of database table columns | |
US10719554B1 (en) | Selective maintenance of a spatial index | |
US11704335B2 (en) | Data synchronization in a data analysis system | |
US9128962B2 (en) | View based table replacement for applications | |
CN112835887A (zh) | 数据库管理方法、装置、计算设备和存储介质 | |
US11188228B1 (en) | Graphing transaction operations for transaction compliance analysis | |
US20200242086A1 (en) | Distribution of global namespace to achieve performance and capacity linear scaling in cluster filesystems | |
US10762139B1 (en) | Method and system for managing a document search index | |
CN111680036B (zh) | 一种基于图存储的配置管理数据库 | |
US8818955B2 (en) | Reducing storage costs associated with backing up a database |
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 |