CN104112016B - 变更数据表结构的方法 - Google Patents
变更数据表结构的方法 Download PDFInfo
- Publication number
- CN104112016B CN104112016B CN201410344171.6A CN201410344171A CN104112016B CN 104112016 B CN104112016 B CN 104112016B CN 201410344171 A CN201410344171 A CN 201410344171A CN 104112016 B CN104112016 B CN 104112016B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- tables
- new
- new construction
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供变更数据表结构的方法,有助于使变更数据表结构的执行时间较短且可控。本发明的一种变更数据表结构的方法包括:对应于一个或多个处于运行状态原结构数据表,所述计算机网络中的各个节点保存一个或多个新结构数据表;将选定的节点作为新发布节点,其他节点为新订阅节点,新发布表和新订阅表分别为新发布节点和新订阅节点中的所述新结构数据表,将新发布节点中的所述原结构数据表中的数据添加到对应的新结构数据表中,并将该数据发布到新订阅节点;在各个节点中的新结构数据表与原结构数据表达到数据同步的情况下,停止所述根节点中的原结构数据表的数据写入,然后将各个节点中的新结构数据表作为运行状态的数据表。
Description
技术领域
本发明涉及一种变更数据表结构的方法。
背景技术
随着计算机网络应用的普及,数据库的容量也在不断增大,变更数据表结构的工作也变得越来越耗时。变更数据表结构的惯常做法一般有2种:
1、直接在数据表上操作,变更表结构定义,可能存在的直接影响,如下面的1、2两个原因。
2、创建新结构表,在维护窗口导入数据,再修改表名;可能存在的影响只是数据导入时间受原表大小制约。
维护窗口是业务的暂停时间段,为了尽可能小的影响系统运行,维护窗口越短越好。面对数据量日益增长的数据表,尤其是已经上千万条数据,容量超过几十GB甚至上百GB时,对大容量表的结构变更工作(专指扩充现有固定长度的字段长度)就变得十分困难,原因有以下几点:
1、停机时间增长。因为对数据表中固定长度的字段进行长度扩充时(包括但不限于int类型变更为bigint、char(10)变更为char(20)等),为保证关系数据库的ACID原则,会对数据表添加架构更新锁(Schema-M),以阻止在结构变更时有新数据写入;而对于大容量的表而言,结构变更的执行时间(以下简称执行时间)将变得更长,以至于超出预期的维护窗口时间,直接影响业务访问;
2、执行及回滚时间风险增加。随着数据量的增加,大容量表的结构变更时间将优于数据量的增长而快速增加,一旦超出维护窗口时间,是继续等待还是终止变更进入回滚状态,将令维护人员很难抉择,而且回滚时间可能超出已经执行时间的几倍或者几十倍。这使得操作的不确定性风险大大增加;此外,由于生产环境的复杂程度,很难在测试环境完全模拟生产环境提前进行测试,使得测试结果的适用性、可靠性降低,这也增加了对执行时间不可控的风险。
因此对于变更数据表结构来说,需要一种执行时间较短且可控的方案。
发明内容
有鉴于此,本发明提供一种变更数据表结构的方法,有助于使变更数据表结构的执行时间较短且可控。
为实现上述目的,根据本发明的一个方面,提供了一种变更数据表结构的方法。
本发明的这种变更数据表结构的方法,用于在包含根节点以及多级子节点的计算机网络中变更各节点中的数据表的结构,所述根节点中的数据表接收数据并向各子节点发布,该方法包括:各个节点中具有原结构数据表,在变更数据表结构时,在各个节点中建立每个原结构数据表对应的新结构的数据表;将选定的节点作为新发布节点,其他节点为新订阅节点,新发布表和新订阅表分别为新发布节点和新订阅节点中的所述新结构数据表,将新发布节点中的所述原结构数据表中的数据添加到对应的新结构数据表中,并将该数据发布到新订阅节点中的新结构数据表中;在该过程中,根节点中的发布表接受外部的数据写入,按原有的订阅关系,将数据分发到各个订阅表;在各个节点中的新结构数据表与原结构数据表达到数据同步的情况下,停止所述根节点中的原结构数据表的数据写入,然后将各个节点中的新结构数据表作为运行状态的数据表。
可选地,所述选定的节点是所述根节点或所述子节点。
可选地,所述选定的节点是向所述计算机网络添加的新节点,该新节点为所述根节点的订阅节点。
可选地,所述将新发布节点中的所述原结构数据表中的数据添加到对应的新结构数据表中的步骤包括:将新发布节点中的所述原结构数据表中的指定范围的数据添加到对应的新结构数据表中,然后将该原结构数据表与该新结构数据表之间的差异数据添加到该新结构数据表中。
可选地,将各个节点中的新结构数据表作为运行状态的数据表的步骤包括:将各个节点中的新结构数据表的表名修改为运行状态的数据表的表名。
根据本发明的另一方面,提供了另一种变更数据表结构的方法。
本发明的这种变更数据表结构的方法,用于变更单节点中的数据表的结构,该方法包括:所述单节点中具有原结构数据表,在变更数据表结构时,所述单节点保存一个或多个新结构数据表;设置新节点,并将该新节点和所述单节点分别作为订阅节点和发布节点;将所述新节点作为新发布节点,所述单节点作为新订阅节点,新发布表和新订阅表分别为新发布节点和新订阅节点中的所述新结构数据表,将新发布节点中的所述原结构数据表中的数据添加到对应的新结构数据表中,并将该数据发布到新订阅节点中的新结构数据表中;在该过程中,所述单节点接受外部写入,按原有的订阅关系,将数据分发到所述新节点;在各个节点中的新结构数据表与原结构数据表达到数据同步的情况下,停止根节点中的原结构数据表的数据写入,然后将各个节点中的新结构数据表作为运行状态的数据表。
可选地,所述将新发布节点中的所述原结构数据表中的数据添加到对应的新结构数据表中的步骤包括:将新发布节点中的所述原结构数据表中的指定范围的数据添加到对应的新结构数据表中,然后将该原结构数据表与该新结构数据表之间的差异数据添加到该新结构数据表中。
可选地,将各个节点中的新结构数据表作为运行状态的数据表的步骤包括:将各个节点中的新结构数据表的表名修改为运行状态的数据表的表名。
根据本发明的技术方案,在变更数据表结构时,在维护窗口期间之前,将原结构数据表的数据转移到新结构数据表中,对于原结构数据表与新结构数据表之间仍存在的差异数据则陆续补齐,使二者数据同步;然后进入维护窗口,在维护窗口期间,将新结构数据表作为运行状态的数据表,主要工作是修改数据表的名称,耗时较短,再加上一些检查、测试的工作,这些工作耗时一般不高,因此总的来说能够大幅度缩短维护窗口的长度。并且从本实施例技术方案可以看出,维护窗口的长度主要取决于数据表的个数,而与数据表本身的大小无关,而数据表的个数一般有限而且较为稳定,所以维护窗口的时间可控。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是与本发明实施例有关的计算机网络的示意图;
图2是根据本发明实施例的变更数据表结构的方法的主要步骤的示意图;
图3是根据本发明实施例的向新结构数据表填充数据的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是与本发明实施例有关的计算机网络的示意图。如图1所示,根节点11中运行的数据表为发布表,发布表的内容向各级子节点例如节点21发送,各级子节点中运行的数据表为订阅表,订阅表的内容全部来自于发布表。各个节点中运行的数据表可以是一个,也可以是多个。在变更表结构时,发布表和各个订阅表都需要变更。
在本发明实施例中,各个节点中的原结构数据表之间的订阅关系是图中的各级子节点中的订阅表的数据来自于根节点11中的发布表,数据表中的数据的流向如图1中的直线箭头所示。在变更数据表结构时,在各个节点中建立每个原结构数据表对应的新结构的数据表,此时新结构数据表尚为空表,需将数据导入其中。在这种情况下,本实施例中采用一种新的发布-订阅机制来实现各个节点中的新结构数据表的数据填充。以下结合图2作出说明。图2是根据本发明实施例的变更数据表结构的方法的主要步骤的示意图。
步骤S21:各个节点保存各自原结构数据表所对应的新结构数据表。新结构数据表应当与原结构数据表一一对应。一个简单的对应方式是新结构数据表的表名由原结构数据表的表名加上前缀或后缀而构成。当然也可采用其他的方式来实现上述对应,使新结构数据表在作为运行状态数据表时能够准确地取代对应的原结构数据表。在接下来的步骤中,新结构数据表会被填充数据,在该过程中,原结构数据表仍处于运行状态,即根节点11中的发布表会接受外部的数据写入,按原有的订阅关系,数据会按图1中的直线箭头所示分发到各个订阅表。
步骤S22:选定一个节点为新发布节点。以图1为例,可以选择根节点11,也可以选择其他节点,在以下描述中,以选择节点31作为新发布节点,则其他节点例如节点21、35、包括节点11,都成为新订阅节点。也就是说这里形成了另一套发布-订阅架构。本步骤中,选定的新节点是系统中已有的节点,也可以在系统中新设置一个节点作为新发布节点,尽量使本步骤中选择的发布节点有充足的运算资源,有利于后续步骤的高效执行。
步骤S23:在新发布节点内对新结构数据表进行数据填充。可以按照指定的范围,例如创建副本的时间点之前的数据,先将新发布节点中的原结构数据表的该范围的数据填充到该原结构数据表对应的新结构表中。参考图3,图3是根据本发明实施例的向新结构数据表填充数据的示意图。
图3中,原结构数据表31中,指定范围的数据为数据311,将其副本填充到对应的新结构数据表32中。因为各个节点中的原数据表仍会持续地接收到新数据,对于节点11来说是外部的写入数据,对于节点11的各个子节点来说是通过订阅得到的数据,所以在新结构数据表得到数据311后,原结构数据表31中又出现新数据312。对于该新数据来说,该新数据312是按原有的订阅关系得到(若新发布节点是根节点11,则该新数据312则是外部写入数据),也需要添加到新结构数据表32中。在添加的过程中又会出现新的差异数据,仍需添加到新结构数据表32中,因为添加的速度大于新的差异数据出现的速度,所以这是一个收敛的过程,最终达到只要原结构数据表收到一项数据就会立即添加到新结构数据表的状态,即二者形成同步。
步骤S24:将选择的发布节点内的新结构数据表的数据分发到其他节点中。这里即按上述的另一套发布-订阅系统进行数据发布,使数据到达新订阅节点中的新结构数据表中,数据的流向如图1中的弯线箭头所示。实际上本步骤与步骤S23有部分的重叠,因为差异数据是分批地补充到新结构数据表,从而也是分批地进行发布。在每个节点中的新结构数据表和原结构数据表情况下,就可以进入数据维护窗口。
步骤S25:停止根节点中的原结构数据表的数据写入。本步骤实现停写,标志着进入维护窗口。
步骤S26:将各个节点中的新结构数据表作为运行状态的数据表。具体是将各个节点中的新结构数据表的表名修改为运行状态的数据表的表名。
以上对于更新图1所示的计算机网络中的数据表结构的方案做出了说明。该方案的构思可以应用于仅包含单个节点的系统中。可以在该单节点中建立新结构数据表并使其与原结构数据表的数据同步,然后进入数据维护窗口,以及将该新结构数据表作为运行状态的数据表。也可以新增一个节点,将其作为原单个节点的订阅节点,再将该新增的节点作为新的发布节点,原单个节点作为订阅节点,以形成新的发布-订阅架构,然后按照类似于图2的步骤完成数据表的结构更新。
根据本发明实施例的技术方案,在变更数据表结构时,在维护窗口期间之前,将原结构数据表的数据转移到新结构数据表中,对于原结构数据表与新结构数据表之间仍存在的差异数据则陆续补齐,使二者数据同步;然后进入维护窗口,在维护窗口期间,将新结构数据表作为运行状态的数据表,主要工作是修改数据表的名称,耗时较短,再加上一些检查、测试的工作,这些工作耗时一般不高,因此总的来说能够大幅度缩短维护窗口的长度。并且从本实施例技术方案可以看出,维护窗口的长度主要取决于数据表的个数,而与数据表本身的大小无关,而数据表的个数一般较少而且较为稳定,所以维护窗口的时间可控。经发明人测算,在原结构数据表为16个、40%左右的表的记录数在5000万以上的情况下,采用现有技术至少需要70小时,而采用本实施例的技术方案只需3小时,维护窗口的长度缩短至1/20以内。
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本发明的方法和设备的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来开发出的任何存储介质。
还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (8)
1.一种变更数据表结构的方法,用于在包含根节点以及多级子节点的计算机网络中变更各节点中的数据表的结构,所述根节点中的数据表接收数据并向各子节点发布,其特征在于,该方法包括:
各个节点中具有原结构数据表,在变更数据表结构时,在各个节点中建立每个原结构数据表对应的新结构的数据表;
将选定的节点作为新发布节点,其他节点为新订阅节点,新发布表和新订阅表分别为新发布节点和新订阅节点中的所述新结构数据表,将新发布节点中的所述原结构数据表中的数据添加到对应的新结构数据表中,并将该数据发布到新订阅节点中的新结构数据表中;在该过程中,根节点中的发布表接受外部的数据写入,按原有的订阅关系,将数据分发到各个订阅表;
在各个节点中的新结构数据表与原结构数据表达到数据同步的情况下,停止所述根节点中的原结构数据表的数据写入,然后将各个节点中的新结构数据表作为运行状态的数据表。
2.根据权利要求1所述的方法,其特征在于,所述选定的节点是所述根节点或所述子节点。
3.根据权利要求1所述的方法,其特征在于,所述选定的节点是向所述计算机网络添加的新节点,该新节点为所述根节点的订阅节点。
4.根据权利要求1、2或3所述的方法,其特征在于,所述将新发布节点中的所述原结构数据表中的数据添加到对应的新结构数据表中的步骤包括:将新发布节点中的所述原结构数据表中的指定范围的数据添加到对应的新结构数据表中,然后将该原结构数据表与该新结构数据表之间的差异数据添加到该新结构数据表中。
5.根据权利要求1、2或3所述的方法,其特征在于,将各个节点中的新结构数据表作为运行状态的数据表的步骤包括:将各个节点中的新结构数据表的表名修改为运行状态的数据表的表名。
6.一种变更数据表结构的方法,用于变更单节点中的数据表的结构,其特征在于,该方法包括:
所述单节点中具有原结构数据表,在变更数据表结构时,所述单节点保存一个或多个新结构数据表;
设置新节点,并将该新节点和所述单节点分别作为订阅节点和发布节点;
将所述新节点作为新发布节点,所述单节点作为新订阅节点,新发布表和新订阅表分别为新发布节点和新订阅节点中的所述新结构数据表,将新发布节点中的所述原结构数据表中的数据添加到对应的新结构数据表中,并将该数据发布到新订阅节点中的新结构数据表中;在该过程中,所述单节点接受外部写入,按原有的订阅关系,将数据分发到所述新节点;
在各个节点中的新结构数据表与原结构数据表达到数据同步的情况下,停止根节点中的原结构数据表的数据写入,然后将各个节点中的新结构数据表作为运行状态的数据表。
7.根据权利要求6所述的方法,其特征在于,所述将新发布节点中的所述原结构数据表中的数据添加到对应的新结构数据表中的步骤包括:将新发布节点中的所述原结构数据表中的指定范围的数据添加到对应的新结构数据表中,然后将该原结构数据表与该新结构数据表之间的差异数据添加到该新结构数据表中。
8.根据权利要求6或7所述的方法,其特征在于,将各个节点中的新结构数据表作为运行状态的数据表的步骤包括:将各个节点中的新结构数据表的表名修改为运行状态的数据表的表名。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410344171.6A CN104112016B (zh) | 2014-07-18 | 2014-07-18 | 变更数据表结构的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410344171.6A CN104112016B (zh) | 2014-07-18 | 2014-07-18 | 变更数据表结构的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104112016A CN104112016A (zh) | 2014-10-22 |
CN104112016B true CN104112016B (zh) | 2017-10-03 |
Family
ID=51708807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410344171.6A Active CN104112016B (zh) | 2014-07-18 | 2014-07-18 | 变更数据表结构的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104112016B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106910045B (zh) * | 2017-03-02 | 2020-11-03 | 重庆砖家宝网络科技发展有限公司 | 工作流引擎设计方法及系统 |
CN110287346B (zh) * | 2019-06-28 | 2021-11-30 | 深圳云天励飞技术有限公司 | 数据存储方法、装置、服务器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102088489A (zh) * | 2010-12-31 | 2011-06-08 | 北京理工大学 | 一种分布式数据同步系统及方法 |
CN102467529A (zh) * | 2010-11-11 | 2012-05-23 | 金蝶软件(中国)有限公司 | 一种元数据同步方法和系统 |
CN103369660A (zh) * | 2012-03-26 | 2013-10-23 | 大唐联诚信息系统技术有限公司 | 网元数据同步方法和网元设备 |
CN103778133A (zh) * | 2012-10-18 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种数据库对象的变更方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7937651B2 (en) * | 2005-01-14 | 2011-05-03 | Microsoft Corporation | Structural editing operations for network forms |
-
2014
- 2014-07-18 CN CN201410344171.6A patent/CN104112016B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467529A (zh) * | 2010-11-11 | 2012-05-23 | 金蝶软件(中国)有限公司 | 一种元数据同步方法和系统 |
CN102088489A (zh) * | 2010-12-31 | 2011-06-08 | 北京理工大学 | 一种分布式数据同步系统及方法 |
CN103369660A (zh) * | 2012-03-26 | 2013-10-23 | 大唐联诚信息系统技术有限公司 | 网元数据同步方法和网元设备 |
CN103778133A (zh) * | 2012-10-18 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种数据库对象的变更方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104112016A (zh) | 2014-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11392612B2 (en) | Data processing method and device | |
Li et al. | Scaling distributed machine learning with the parameter server | |
CN101551801B (zh) | 数据同步的方法和系统 | |
US9135071B2 (en) | Selecting processing techniques for a data flow task | |
CN108885641B (zh) | 高性能查询处理和数据分析 | |
CN107391635A (zh) | 数据同步系统及方法 | |
CN104317928A (zh) | 一种基于分布式数据库的业务etl方法及系统 | |
US20140365827A1 (en) | Architecture for end-to-end testing of long-running, multi-stage asynchronous data processing services | |
CN107463610B (zh) | 一种数据入库方法及装置 | |
CN109582289B (zh) | 规则引擎中规则流的处理方法、系统、存储介质和处理器 | |
CN106164867A (zh) | 数据的增量并行处理 | |
US9959301B2 (en) | Distributing and processing streams over one or more networks for on-the-fly schema evolution | |
CN102946410A (zh) | 网络同步方法和装置 | |
CN107646105B (zh) | 云计算基础架构 | |
WO2019118867A1 (en) | Method, apparatus and computer program product for improving data indexing in a group-based communication platform | |
CN110781197A (zh) | 一种hive离线同步校验方法、装置及电子设备 | |
CN107333248A (zh) | 一种短信实时发送方法和系统 | |
CN103699442A (zh) | MapReduce计算框架下的可迭代式数据处理方法 | |
CN104112016B (zh) | 变更数据表结构的方法 | |
CN109189575A (zh) | 一种多OpenStack集群的统一管理方法及装置 | |
CN103984723A (zh) | 一种针对增量数据对频繁项进行更新数据挖掘方法 | |
CN111258840B (zh) | 一种集群节点管理方法、装置及集群 | |
CN108388466B (zh) | 信息展示方法及装置 | |
CN111865683B (zh) | 虚拟网关版本灰度发布方法、装置、设备以及存储介质 | |
CN113572636A (zh) | 环网拓扑结构中交换机的批量升级方法及环网拓扑结构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |