CN115203200A - 一种数据库表结构变更的方法、装置、设备及存储介质 - Google Patents
一种数据库表结构变更的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115203200A CN115203200A CN202210744217.8A CN202210744217A CN115203200A CN 115203200 A CN115203200 A CN 115203200A CN 202210744217 A CN202210744217 A CN 202210744217A CN 115203200 A CN115203200 A CN 115203200A
- Authority
- CN
- China
- Prior art keywords
- table structure
- structure change
- physical
- statement
- logical
- 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
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
- 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/24—Querying
- G06F16/242—Query formulation
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据库表结构变更的方法、装置、设备及存储介质。该方法包括:基于当前表结构变更语句,确定待变更逻辑表;根据所述待变更逻辑表的类型和所述当前表结构变更语句,确定对应的物理表结构变更语句;执行所述物理表结构变更语句,以完成所述待变更逻辑表的表结构变更。本申请实施例实现数据库内逻辑表结构的准确变更,保证数据库表结构变更的全面适用,且无需在数据库执行复杂的表结构变更操作,增强数据库表结构变更的稳定性。
Description
技术领域
本申请实施例涉及数据处理技术领域,具体涉及一种数据库表结构变更的方法、装置、设备及存储介质。
背景技术
随着分布式数据库集群的规模越来越大,其支持存储的业务数据种类也越来越复杂,导致对于分布式数据库中用于存储业务数据的表结构进行变更的工单量也越来越多。
目前,现有的表结构变更均是对于分布式数据库内物理表进行的变更操作,由于无法感知逻辑表底层对应的物理表具体所在哪一分片,而无法支持对于分布式数据库内逻辑表结构的变更,导致分布式数据库的表结构变更存在一定的局限性。
发明内容
本申请提供一种数据库表结构变更的方法、装置、设备及存储介质,实现数据库内逻辑表结构的准确变更,保证数据库表结构变更的全面适用,增强数据库表结构变更的稳定性。
第一方面,本申请实施例提供了一种数据库表结构变更的方法,该方法包括:
基于当前表结构变更语句,确定待变更逻辑表;
根据所述待变更逻辑表的类型和所述当前表结构变更语句,确定对应的物理表结构变更语句;
执行所述物理表结构变更语句,以完成所述待变更逻辑表的表结构变更。
第二方面,本申请实施例提供了一种数据库表结构变更的装置,该装置包括:
变更表确定模块,用于基于当前表结构变更语句,确定待变更逻辑表;
变更语句确定模块,用于根据所述待变更逻辑表的类型和所述当前表结构变更语句,确定对应的物理表结构变更语句;
表结构变更模块,用于执行所述物理表结构变更语句,以完成所述待变更逻辑表的表结构变更。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:
处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行本申请第一方面中提供的数据库表结构变更的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序使得计算机执行如本申请第一方面中提供的数据库表结构变更的方法。
第五方面,本申请实施例提供了一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现如本申请第一方面中提供的数据库表结构变更的方法。
本申请实施例提供的一种数据库表结构变更的方法、装置、设备及存储介质,在接收到当前表结构变更语句后,确定本次指定的待变更逻辑表,然后根据待变更逻辑表的类型,将当前表结构变更语句转变为对应的物理表结构变更语句,通过执行各个物理表结构变更语句,以完成待变更逻辑表的表结构变更,从而实现数据库内逻辑表结构的准确变更,保证数据库表结构变更的全面适用,且无需在数据库执行复杂的表结构变更操作,增强数据库表结构变更的稳定性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例示出的数据库的现有存储结构的示意图;
图2为本申请实施例示出的一种数据库表结构变更的方法的流程图;
图3为本申请实施例示出的通过目标分片执行物理表结构变更语句的方法流程图;
图4为本申请实施例示出的一种数据库表结构变更的装置的原理框图;
图5是本申请实施例提供的电子设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在介绍本申请的具体技术方案之前,首先对于数据库的现有存储结构以及其内设定的逻辑表和物理表进行解释说明:
如图1所示,现有的数据库通常由两层架构组成:数据路由层和数据存储层。其中,数据路由层支持数据库内逻辑表和物理表间的透明路由,以及数据的分库分表存储。数据存储层通过可扩容的多个分片来实际存储数据库内的各类业务数据。而且,数据存储层的每一分片上设定有多个物理表,从而支持分片的水平扩容和业务数据在各个分片上的散列存储。
具体的,数据存储层的每一分片可以由一个关系型数据库管理系统MySQL集群构成,且一个分片内的多个MySQL实例所存储的业务数据是一致的,而不同分片所存储的业务数据可以不同。
而且,本申请中的物理表为数据存储层的每一分片上用于实际存储各类业务数据的表。对于任一物理表,可以根据其内所存储的业务数据的具体业务含义,来设定该物理表的表名。
数据路由层为了统一管理各个物理表内的业务数据,会设定对应的逻辑表。其中,逻辑表可以理解为数据库中用于管理各类业务数据的视图,是一张虚拟表。逻辑表可以映射到一张物理表,来对该物理表内实际存储的业务数据进行管理。也可以映射到多张物理表,来对各个物理表内实际存储的业务数据进行统一管理。
一方面,本申请对于存在于多个分片上表结构相同的各个物理表,也就是任一业务类型下所设定的用于存储该业务类型下的业务数据的各个物理表,会为用户构造一个统一的数据视图,作为逻辑总表。通过对逻辑总表执行各项操作,即可统一管理多个分片内的各个物理表。
其中,逻辑总表的表名会按照数据库所具备的业务含义来设定,通常逻辑总表的表名与数据库具备的业务名称一致。
另一方面,本申请对于存在于单个分片上的任一物理表,也会构造一个单独映射到该物理表的逻辑分表。通过对任一物理表对应的逻辑分表执行各项操作,即可单独管理该物理表。
其中,为了实现逻辑分表与任一物理表之间的直观映射,逻辑分表的表名会与所映射的物理表的表名一致。
而且,为了准确定位物理表,可以在物理表的表名中设定相应的定位后缀,以指示物理表在数据库某一分片内的具体位置。物理表的表名可以由以下三段构成:第一段为对应的业务名称,也就是所属的逻辑总表的表名;第二段为所在的分片标识号(Identitydocument,简称为Id);第三段为物理表的表Id。
由上述内容可知,逻辑总表的表名可以为任一业务的业务名称,可以映射到该业务下的所有物理表,以统一管理该业务下所有物理表内的业务数据。逻辑分表的表名可以为所映射的任一个物理表的表名,能够直接定位所映射的物理表的具体位置。
以用户发起对应的结构化查询语言(Structured Query Language,简称为SQL)查询请求,来对某一逻辑总表或者逻辑分表执行查询的具体查询过程进行说明:
在本申请中,数据路由层可以接收用户的SQL查询请求,并执行下述具体查询步骤:
1)根据路由规则,将任一逻辑表的SQL查询语句拆成一个或多个访问数据存储层某一分片上的某一物理表的SQL查询语句;
2)将拆分后的各个物理表的SQL查询语句发往该物理表所在的指定分片进行查询;
3)如果涉及多个分片的查询,会负责将从多个分片查询出的业务数据进行汇总,并根据用户对于任一逻辑表的SQL查询语句中的数据排序规则,将从多个分片查询出的业务数据排序后返回给用户。
数据存储层通过多个分片中的各个物理表来存储实际的业务数据。任一分片接收到数据路由层发来的对于某一物理表的SQL查询语句后,可以执行对应的查询操作,并向数据路由层返回查询出的业务数据。
示例性的,某一业务A的逻辑总表tab_payment在拥有4个分片的分布式数据库集群中,物理分区键为Id列,路由算法为取模,假设该业务A在分布式数据库集群中的物理表共有128张,分布在4个分片的16个物理库中。
那么,对于逻辑总表tab_payment的SQL查询语句可以为:select*from tab_payment where id=145。此时,id=145对应的物理表名为tab_payment_1_17存储在1号分片中。原因在于:145%4为1(分片寻找方式),145%16为1(物理库寻找方式),145%128为17(物理表寻找方式)。
因此,逻辑总表tab_payment的SQL查询语句可以拆分为某一逻辑分表的SQL查询语句:select*from tab_payment_1_17where id=145。
接下来对本申请的具体技术方案进行解释说明:
考虑到现有的数据库表结构变更不适用于逻辑表而存在一定局限性的问题,本申请专门针对数据库内的逻辑表设计了一种表结构变更的方案。按照待变更逻辑表的类型,可以将当前表结构变更语句转变为对应的物理表结构变更语句,然后通过执行各个物理表结构变更语句,来完成待变更逻辑表的表结构变更,从而实现数据库内逻辑表结构的准确变更,保证数据库表结构变更的全面适用,且无需在数据库执行复杂的表结构变更操作,增强数据库表结构变更的稳定性。
图2为本申请实施例示出的一种数据库表结构变更的方法的流程图。参照图2,该方法具体可以包括如下步骤:
S210,基于当前表结构变更语句,确定待变更逻辑表。
在对数据库内的任一逻辑表存在变结构变更需求时,用户会发起对该逻辑表进行变更的SQL语句,作为本申请中的当前表结构变更语句。
示例性的,在MySQL数据库中,可以使用“ALTER TABLE”语句来修改任一数据表的表结构。通过使用“ALTER TABLE表名称add/drop/alter字段”语句,即可在已有的表中添加、修改或删除列,从而修改该表的表结构。
本申请中,在接收到某一当前表结构变更语句后,通过解析该当前表结构变更语句,可以确定该当前表结构变更语句中指定的某一逻辑表的表名称。然后,按照该表名称即可确定本次的待变更逻辑表。
S220,根据待变更逻辑表的类型和当前表结构变更语句,确定对应的物理表结构变更语句。
本申请数据库内的逻辑表可以分为逻辑总表和逻辑分表两种。而且,逻辑总表和逻辑分表这两种逻辑表与数据存储层内各个分片上的物理表之间的映射关系并不相同。
因此,在确定待变更逻辑表后,首先会确定待变更逻辑表的类型。然后,根据该类型下的逻辑表与物理表之间的具体映射关系,可以将当前表结构变更语句,改写为对于该待变更逻辑表所映射到的物理表进行表结构变更的SQL语句,从而得到对应的物理表结构变更语句。
作为本申请中的一种可选实现方案,待变更逻辑表可以分为逻辑总表和逻辑分表两种,以下分别对逻辑总表和逻辑分表进行表结构变更时确定物理表结构变更语句的过程进行说明:
1)如果待变更逻辑表为逻辑总表,则将当前表结构变更语句改写为所在数据库内每一物理表的表结构变更语句,得到物理表结构变更语句。
考虑到表结构变更语句中只会携带本次变更的表名称和具体的变更操作,而并不涉及where条件下的物理表id分区。而且,逻辑总表在数据库内会映射到该数据库业务下的所有物理表,以统一管理各个物理表内的业务数据。因此,如果待变更逻辑表为逻辑总表,首先会确定出该逻辑总表所在数据内的所有物理表。
在本申请中,由于逻辑总表的表名为数据库具备的业务名称,而逻辑总表映射到的各个物理表的表名是在逻辑总表的表名后添加上所在分片id和物理表id作为后缀。因此,通过逻辑总表和各个物理表的表名,即可确定该逻辑总表所在数据内的所有物理表。
然后,针对逻辑总表映射到的每一物理表,可以直接将当前表结构变更语句内的逻辑总表的表名替换为每一物理表的表名,即可得到每一物理表的表结构变更语句,作为本申请中的物理表结构变更语句。
也就是说,对于逻辑总表的表结构变更会得到多条物理表结构变更语句。
例如,如果分布式数据库集群中的物理表共有128张,那么当前表结构变更语句可以改写出128条物理表结构变更语句。
2)如果待变更逻辑表为逻辑分表,则将当前表结构变更语句作为物理表结构变更语句。
数据库内的任一逻辑分表可以映射到一张物理表,而且逻辑分表与其在数据库内映射的物理表的表名相同。可以直接将当前表结构变更语句作为所映射的物理表结构变更语句。
也就是说,对于逻辑分表的表结构变更会得到一条物理表结构变更语句。
S230,执行物理表结构变更语句,以完成待变更逻辑表的表结构变更。
通过执行待变更逻辑表改写后的各个物理表结构变更语句,以对待变更逻辑表映射到的各个物理表的表结构进行变更,即可完成待变更逻辑表的表结构变更。
根据本申请的一个或多个实施例,考虑到数据库内的物理表会存在于一个或多个分片中。因此,本申请可以通过下述步骤来执行物理表结构变更语句:
S31,按照物理表结构变更语句指向的物理表名,将物理表结构变更语句发送给对应的目标分片。
通过解析物理表结构变更语句,可以确定所指向的物理表名。此时,该物理表名可以指示物理表所在分片的具体位置,从而确定该物理表所在的目标分片。进而,将该物理表结构变更语句发送给对应的目标分片,以便由该目标分片对其上的物理表进行实际的表结构变更操作。
需要说明的是,在对逻辑总表进行表结构变更时,会改写出多条物理表结构变更语句。此时,通过每一条物理表结构变更语句指向的物理表名,可以将每一条物理表结构变更语句发送给对应的目标分片,来对各个目标分片上每一物理表的表结构进行变更。
在一些可实现方式中,为了确保物理表结构变更语句的按序发送,本申请在得到待变更逻辑表改写后的各个物理表结构变更语句后,还会将所改写的各个物理表结构变更语句缓存至预先设定的任务队列。
进而,在将物理表结构变更语句发送给对应的目标分片时,可以从任务队列中依次获取每一条物理表结构变更语句,以便按照每一条物理表结构变更语句指向的物理表名,按序将每一条物理表结构变更语句发送给对应的目标分片。
S32,通过目标分片执行物理表结构变更语句,以完成待变更逻辑表的表结构变更。
数据库内每一目标分片对于所接收到的各个物理表结构变更语句,均会执行该物理表结构变更语句,以对该物理表进行变更语句中的具体变更操作。而且,每一目标分片执行完所接收到的物理表结构变更语句后,会向用户返回对应的表结构变更结果。
需要说明的是,对于逻辑总表和逻辑分表的表结构变更,会存在不同的物理表结构变更结果。
对于逻辑总表的表结构变更,会改写出多条物理表结构变更语句,以对多个物理表进行表结构变更。因此,对于逻辑总表映射到的每一物理表的表结构变更,如果某一物理表的表结构没有成功变更,便会向用户返回该物理表的表结构变更报错消息。而且,不再执行后续还未执行的物理表结构变更语句,停止本次对于逻辑总表的表结构变更操作。
但是,在每成功完成一次物理表结构的变更后,会进一步判断任务队列中是否还有未执行的物理表结构变更语句。若有,则继续执行下一条物理表结构变更语句,依次循环,直至逻辑总表的当前表结构变更语句改写出多条物理表结构变更语句全部执行完毕,或者某一物理表的表结构变更出现报错。
最后,将逻辑总表下已执行的各个物理表的表结构变更结果进行汇总,并返回给用户。
而对于逻辑分表的表结构变更,得到一条物理表结构变更语句。因此,直接向用户返回本次的表结构变更结果即可。
本申请实施例提供的技术方案,在接收到当前表结构变更语句后,确定本次指定的待变更逻辑表,然后根据待变更逻辑表的类型,将当前表结构变更语句转变为对应的物理表结构变更语句,通过执行各个物理表结构变更语句,以完成待变更逻辑表的表结构变更,从而实现数据库内逻辑表结构的准确变更,保证数据库表结构变更的全面适用,且无需在数据库执行复杂的表结构变更操作,增强数据库表结构变更的稳定性。
作为本申请中的一种可选实现方案,对于待变更逻辑表的当前表结构变更语句改写的物理表结构变更语句,会发送给物理表所在的目标分片来执行,以确保物理表结构变更的准确性。如图3所示,本申请对于通过目标分片执行物理表结构变更语句的具体过程进行详细的解释说明。
图3为本申请实施例示出的通过目标分片执行物理表结构变更语句的方法流程图。参照图3,该方法具体可以包括如下步骤:
S310,将物理表结构变更语句指向的物理表作为原物理表,根据原物理表结构创建新表。
通过目标分片接收到对于其上一个或多个物理表的物理表结构变更语句后,首先会解析该物理表结构变更语句,得到其中携带的物理表名,从而确定本次待变更的物理表。然后,将本次待变更的物理表作为原物理表,并创建一个与原物理表的表结构相同的新表。
此时,新表是一个空表,并未存储任何业务数据。
需要说明的是,为了避免物理表结构变更语句执行失败时的冗余操作,本申请在根据原物理表结构创建新表之前,首先会通过目标分片预执行物理表结构变更语句,得到对应的预执行结果。也就是,通过预执行物理表结构变更语句,来验证该条物理表结构变更语句是否支持物理表结构的无损变更。如果预执行结果为该条物理表结构变更语句预执行成功,说明该条物理表结构变更语句支持物理表结构的无损变更,那么直接根据原物理表结构创建一张新表。然而,如果预执行结果为该条物理表结构变更语句预执行失败,说明该条物理表结构变更语句不支持物理表结构的无损变更,那么终止该物理表结构的变更,直接返回表结构变更的报错消息。
S320,利用物理表结构变更语句,变更新表的表结构。
考虑到对于存储有实际数据的物理表进行表结构变更存在一定的繁琐性,因此本申请会直接对该新表执行该物理表结构变更语句,以变更该新表的表结构,后续将原物理表内存储的业务数据复制到新表中即可。
S330,将原物理表内的存量数据复制到新表,并基于原物理表在存量数据复制期间的二进制日志,将原物理表内的增量数据复制到新表。
在利用物理表结构变更语句变更新表的表结构后,可以使该新表当前的表结构符合本次逻辑表结构变更的要求。因此,本申请可以获取原物理表在当前时间节点前已经存储的所有业务数据,作为原物理表内的存量数据。
然后,将原物理表内的存量数据全部复制到新表中。本申请可以采用限速方式来将原物理表内的存量数据复制到新表。其中,限速方式可以包括但不限于如下两种:1)根据存量数据的累积数据复制量进行限速;2)根据存量数据的累积数据复制时长进行限速。
考虑到在存量数据复制期间,存在用户对于原物理表执行相应的数据操作,从而改变原物理表内的实际存储数据。因此,对于原物理表在存量数据复制期间执行各项数据操作,会生成对应的二进制日志。在新表中完成存量数据的全部复制后,会读取原物理表在存量数据复制期间的二进制日志,并转换成对应的SQL操作语句。进而,在新表中执行该SQL操作语句,即可将原物理表在存量数据复制期间操作的增量数据复制到新表,使得新表与原物理表具备相同的存储数据。
根据本申请的一个或多个实施例,由于存量复制过程会对数据库性能有一定损耗,因此为了保证数据库内事务的正常执行,避免表结构变更对数据库事务执行性能的影响,本申请在存量数据复制期间,会定期探测所在数据库的性能指标;如果任一性能指标的探测结果存在异常,则停止待变更逻辑表的表结构变更操作,并反馈对应的变更报错消息。
其中,本申请对于所在数据库的性能分析,会包括但不限于以下的性能指标:1)数据库主从数据延迟;2)数据库内的大事务个数;3)数据库内大事务执行时长;4)数据库所在系统的中央处理器(Central Processing Unit,简称为CPU)的空闲率。
进而,在存量数据复制期间,会定期探测所在数据库的性能指标。如果所在数据库内任一性能指标存在异常,且本次异常已经持续一段时间,那么直接终止本次的表结构变更操作,并向用户反馈对应的变更报错消息,以尽可能优先保证数据库事务的正常执行。
S340,对原物理表加锁,并交换原物理表和新表的表名,以完成待变更逻辑表的表结构变更。
在完成原物理表到新表的数据复制后,会对原物理表进行加锁,以避免原物理表的数据更新。然后,通过交换原物理表和新表的表名,使得新表作为表结构变更后的原物理表存在。
通过各个目标分片对所接收到的每一物理表结构变更语句执行上述相同的操作,即可完成待变更逻辑表的表结构变更。
本申请实施例提供的技术方案,通过目标分片执行物理表结构变更语句,保证数据库表结构变更的准确性和高效性,而且对所在数据库的性能指标进行探测,在保证数据库的基础事务性能的基础上,实现数据库表结构的准确变更。
图4为本申请实施例示出的一种数据库表结构变更的装置的原理框图。
如图4所示,该装置400可以包括:
变更表确定模块410,用于基于当前表结构变更语句,确定待变更逻辑表;
变更语句确定模块420,用于根据所述待变更逻辑表的类型和所述当前表结构变更语句,确定对应的物理表结构变更语句;
表结构变更模块430,用于执行所述物理表结构变更语句,以完成所述待变更逻辑表的表结构变更。
在一些可实现方式中,变更语句确定模块420,可以具体用于:
如果所述待变更逻辑表为逻辑总表,则将所述当前表结构变更语句改写为所在数据库内每一物理表的表结构变更语句,得到所述物理表结构变更语句;
如果所述待变更逻辑表为逻辑分表,则将所述当前表结构变更语句作为所述物理表结构变更语句;
在一些可实现方式中,表结构变更模块430,可以包括:
分片确定单元,用于按照所述物理表结构变更语句指向的物理表名,将所述物理表结构变更语句发送给对应的目标分片;
表结构变更单元,用于通过所述目标分片执行所述物理表结构变更语句,以完成所述待变更逻辑表的表结构变更。
在一些可实现方式中,数据库表结构变更的装置400,还可以包括:
队列缓存模块,用于将所述物理表结构变更语句缓存至任务队列;
相应的,分片确定单元,可以具体用于:
将所述任务队列内的每一物理表结构变更语句按序发送给对应的目标分片。
在一些可实现方式中,表结构变更单元,可以具体用于:
将所述物理表结构变更语句指向的物理表作为原物理表,根据原物理表结构创建新表;
利用所述物理表结构变更语句,变更所述新表的表结构;
将所述原物理表内的存量数据复制到所述新表,并基于所述原物理表在存量数据复制期间的二进制日志,将所述原物理表内的增量数据复制到所述新表;
对所述原物理表加锁,并交换所述原物理表和所述新表的表名,以完成所述待变更逻辑表的表结构变更。
在一些可实现方式中,数据库表结构变更的装置400,还可以包括:
数据库性能探测模块,用于在所述存量数据复制期间,定期探测所在数据库的性能指标;如果所述性能指标的探测结果存在异常,则停止所述待变更逻辑表的表结构变更操作,并反馈对应的变更报错消息。
在一些可实现方式中,数据库表结构变更的装置400,还可以包括:
预执行模块,用于通过所述目标分片预执行所述物理表结构变更语句,得到对应的预执行结果;根据所述预执行结果,判断是否根据原物理表结构创建新表。
本申请实施例中,在接收到当前表结构变更语句后,确定本次指定的待变更逻辑表,然后根据待变更逻辑表的类型,将当前表结构变更语句转变为对应的物理表结构变更语句,通过执行各个物理表结构变更语句,以完成待变更逻辑表的表结构变更,从而实现数据库内逻辑表结构的准确变更,保证数据库表结构变更的全面适用,且无需在数据库执行复杂的表结构变更操作,增强数据库表结构变更的稳定性。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图4所示的装置400可以执行本申请提供的方法实施例,并且装置400中的各个模块的前述和其它操作和/或功能分别为了实现本申请实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置400。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图5是本申请实施例提供的电子设备500的示意性框图。
如图5所示,该电子设备500可包括:
存储器510和处理器520,该存储器510用于存储计算机程序,并将该程序代码传输给该处理器520。换言之,该处理器520可以从存储器510中调用并运行计算机程序,以实现本申请实施例中的方法。
例如,该处理器520可用于根据该计算机程序中的指令执行上述方法实施例。
在本申请的一些实施例中,该处理器520可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器510包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器510中,并由该处理器520执行,以完成本申请提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该电子设备中的执行过程。
如图5所示,该电子设备还可包括:
收发器530,该收发器530可连接至该处理器520或存储器510。
其中,处理器520可以控制该收发器530与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器530可以包括发射机和接收机。收发器530还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
本申请实施例还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。
Claims (10)
1.一种数据库表结构变更的方法,其特征在于,包括:
基于当前表结构变更语句,确定待变更逻辑表;
根据所述待变更逻辑表的类型和所述当前表结构变更语句,确定对应的物理表结构变更语句;
执行所述物理表结构变更语句,以完成所述待变更逻辑表的表结构变更。
2.根据权利要求1所述的方法,其特征在于,所述根据所述待变更逻辑表的类型和所述当前表结构变更语句,确定对应的物理表结构变更语句,包括:
如果所述待变更逻辑表为逻辑总表,则将所述当前表结构变更语句改写为所在数据库内每一物理表的表结构变更语句,得到所述物理表结构变更语句;
如果所述待变更逻辑表为逻辑分表,则将所述当前表结构变更语句作为所述物理表结构变更语句;
其中,所述逻辑分表与其在数据库内映射的物理表的表名相同。
3.根据权利要求1所述的方法,其特征在于,所述执行所述物理表结构变更语句,以完成所述待变更逻辑表的表结构变更,包括:
按照所述物理表结构变更语句指向的物理表名,将所述物理表结构变更语句发送给对应的目标分片;
通过所述目标分片执行所述物理表结构变更语句,以完成所述待变更逻辑表的表结构变更。
4.根据权利要求3所述的方法,其特征在于,在按照所述物理表结构变更语句指向的物理表名,将所述物理表结构变更语句发送给对应的目标分片之前,还包括:
将所述物理表结构变更语句缓存至任务队列;
相应的,所述将所述物理表结构变更语句发送给对应的目标分片,包括:
将所述任务队列内的每一物理表结构变更语句按序发送给对应的目标分片。
5.根据权利要求3所述的方法,其特征在于,所述通过所述目标分片执行所述物理表结构变更语句,包括:
将所述物理表结构变更语句指向的物理表作为原物理表,根据原物理表结构创建新表;
利用所述物理表结构变更语句,变更所述新表的表结构;
将所述原物理表内的存量数据复制到所述新表,并基于所述原物理表在存量数据复制期间的二进制日志,将所述原物理表内的增量数据复制到所述新表;
对所述原物理表加锁,并交换所述原物理表和所述新表的表名,以完成所述待变更逻辑表的表结构变更。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述存量数据复制期间,定期探测所在数据库的性能指标;
如果所述性能指标的探测结果存在异常,则停止所述待变更逻辑表的表结构变更操作,并反馈对应的变更报错消息。
7.根据权利要求5所述的方法,其特征在于,在根据原物理表结构创建新表之前,还包括:
通过所述目标分片预执行所述物理表结构变更语句,得到对应的预执行结果;
根据所述预执行结果,判断是否根据原物理表结构创建新表。
8.一种数据库表结构变更的装置,其特征在于,包括:
变更表确定模块,用于基于当前表结构变更语句,确定待变更逻辑表;
变更语句确定模块,用于根据所述待变更逻辑表的类型和所述当前表结构变更语句,确定对应的物理表结构变更语句;
表结构变更模块,用于执行所述物理表结构变更语句,以完成所述待变更逻辑表的表结构变更。
9.一种电子设备,其特征在于,包括:
处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1-7中任一项所述的数据库表结构变更的方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1-7中任一项所述的数据库表结构变更的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210744217.8A CN115203200A (zh) | 2022-06-27 | 2022-06-27 | 一种数据库表结构变更的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210744217.8A CN115203200A (zh) | 2022-06-27 | 2022-06-27 | 一种数据库表结构变更的方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115203200A true CN115203200A (zh) | 2022-10-18 |
Family
ID=83577243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210744217.8A Pending CN115203200A (zh) | 2022-06-27 | 2022-06-27 | 一种数据库表结构变更的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115203200A (zh) |
-
2022
- 2022-06-27 CN CN202210744217.8A patent/CN115203200A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12105703B1 (en) | System and method for interacting with a plurality of data sources | |
US10740355B2 (en) | System and method for optimizing data migration in a partitioned database | |
CN109086388B (zh) | 区块链数据存储方法、装置、设备及介质 | |
US7752165B2 (en) | Persistent query system for automatic on-demand data subscriptions from mobile devices | |
US9558207B1 (en) | Versioning of database partition maps | |
US11580162B2 (en) | Key value append | |
US20160335304A1 (en) | Data partitioning and ordering | |
US20130275550A1 (en) | Update protocol for client-side routing information | |
US11392567B2 (en) | Just-in-time multi-indexed tables in a shared log | |
US10515228B2 (en) | Commit and rollback of data streams provided by partially trusted entities | |
CN114356921A (zh) | 数据处理方法、装置、服务器及存储介质 | |
US11288254B2 (en) | Method of and system for processing request in distributed database | |
US20140032703A1 (en) | System and method for an expandable computer storage system | |
CN107644025B (zh) | 分布式数据库的wal记录的分发方法和装置 | |
CN113986921A (zh) | 一种黑名单查询方法、系统、电子设备及存储介质 | |
CN115203200A (zh) | 一种数据库表结构变更的方法、装置、设备及存储介质 | |
CN110968267B (zh) | 数据管理方法、装置、服务器及系统 | |
CN111581123B (zh) | 基于分类的存储器分配的锁定 | |
KR102214697B1 (ko) | 데이터베이스 관리 시스템에서 데이터 저장을 위한 공간 관리를 제공하는 컴퓨터 프로그램 | |
CN112905601A (zh) | 一种数据库分表的路由方法及装置 | |
Dobos et al. | A comparative evaluation of NoSQL database systems | |
CN111221857A (zh) | 从分布式系统中读数据记录的方法和装置 | |
CN114443777B (zh) | 多数据聚合管理方法、装置、设备及系统 | |
CN112749198B (zh) | 一种基于版本号的多级数据缓存方法及装置 | |
CN116821058B (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 |