CN104965880A - 数据库拆分方法及装置 - Google Patents
数据库拆分方法及装置 Download PDFInfo
- Publication number
- CN104965880A CN104965880A CN201510325589.7A CN201510325589A CN104965880A CN 104965880 A CN104965880 A CN 104965880A CN 201510325589 A CN201510325589 A CN 201510325589A CN 104965880 A CN104965880 A CN 104965880A
- Authority
- CN
- China
- Prior art keywords
- data
- tem
- trigger
- temporary table
- temporary
- 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
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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开揭示了一种数据库拆分方法及装置,属于数据库领域。该方法包括:对处于运行状态的原数据库集群中的一张原始表T,生成与该原始表T对应的临时表Ttem,以及与临时表Ttem对应的n张对应表T0至Tn-1;将原始表T中的数据复制至临时表Ttem;通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,i=[0,n-1]。本公开将原始表中的数据复制至临时表,将临时表中的插入、更新和删除的数据通过触发器技术同步到至少2个对应表中,达到不需要终止原始表提供的业务,也能够通过触发器技术保持原始表与最终拆分后的对应表的数据一致性,保证了拆分过程中原始表仍然可用的效果。
Description
技术领域
本公开涉及数据库领域,特别涉及一种数据库拆分方法及装置。
背景技术
数据库拆分的基本思想是将一个数据库拆分为多个数据部分,每个数据部分分别存储到不同的数据库上,从而缓解单一数据库的性能问题。
相关技术提供的数据库拆分方法为:对于原始数据表,建立n个新数据表,n≥2;终止原始数据表提供的业务,确保原始数据表不存在任何外部业务访问;通过外部线程将每行数据从原始数据表中读出,然后按照预设拆分规则将每行数据存储到新数据表中。
发明内容
为了克服相关技术中存在的问题,本公开提供一种数据表拆分方法及装置。该技术方案如下:
根据本公开实施例的第一方面,提供一种数据库拆分方法,该方法包括:
对处于运行状态的原数据库集群中的一张原始表T,生成与原始表T对应的临时表Ttem,以及与临时表Ttem对应的n张对应表T0至Tn-1;
将原始表T中的数据复制至临时表Ttem;
通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,i=[0,n-1]。
在一个可能的实施例中,将原始表T中的数据复制至临时表Ttem,包括:
将原始表T在预定时刻的快照数据,通过数据库复制技术插入至临时表Ttem中;
将原始表T在预定时刻之后的数据操作,通过数据库复制技术同步到临时表Ttem中;
其中,数据操作包括:插入数据、更新数据和删除数据。
在一个可能的实施例中,通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,包括:
若临时表Ttem中进行了针对第一标识的数据的插入操作,则通过插入触发器按照预设拆分规则查询与第一标识对应的对应表Ti;
通过插入触发器将数据插入对应表Ti。
在一个可能的实施例中,通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,包括:
若临时表Ttem中进行了针对第二标识的数据的更新操作,则通过更新触发器按照预设拆分规则查询与第二标识对应的对应表Ti;
通过更新触发器将数据覆盖插入至对应表Ti。
在一个可能的实施例中,通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,包括:
若临时表Ttem中进行了针对第三标识的数据的删除操作,则通过删除触发器按照预设拆分规则查询与第三标识对应的对应表Ti;
通过删除触发器将数据从对应表Ti中删除。
在一个可能的实施例中,生成与原始表T对应的临时表Ttem,包括:
新建与原始表T的表结构相同的临时表Ttem;
在临时表上设置插入触发器、更新触发器和删除触发器中的至少一种触发器。
根据本公开实施例的第二方面,提供一种数据库拆分装置,该装置包括:
生成模块,被配置为对处于运行状态的原数据库集群中的一张原始表T,生成与原始表T对应的临时表Ttem,以及与临时表Ttem对应的n张对应表T0至Tn-1;
复制模块,被配置为将原始表T中的数据复制至临时表Ttem;
同步模块,被配置为通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,i=[0,n-1]。
在一个可能的实施例中,该复制模块,包括:
快照复制子模块,被配置为将原始表T在预定时刻的快照数据,通过数据库复制技术插入至临时表Ttem中;
同步复制子模块,被配置为将原始表T在预定时刻之后的数据操作,通过数据库复制技术同步到临时表Ttem中;
其中,数据操作包括:插入数据、更新数据和删除数据。
在一个可能的实施例中,该同步模块,包括:
第一查询子模块,被配置为在临时表Ttem中进行了针对第一标识的数据的插入操作时,通过插入触发器按照预设拆分规则查询与第一标识对应的对应表Ti;
插入子模块,被配置为通过插入触发器将数据插入对应表Ti。
在一个可能的实施例中,该同步模块,包括:
第二查询子模块,被配置为在临时表Ttem中进行了针对第二标识的数据的更新操作时,通过更新触发器按照预设拆分规则查询与第二标识对应的对应表Ti;
更新子模块,被配置为通过更新触发器将数据覆盖插入至对应表Ti。
在一个可能的实施例中,该同步模块,包括:
第三查询子模块,被配置为在临时表Ttem中进行了针对第三标识的数据的删除操作时,通过删除触发器按照预设拆分规则查询与第三标识对应的对应表Ti;
删除子模块,被配置为通过删除触发器将数据从对应表Ti中删除。
在一个可能的实施例中,生成模块,被配置为新建与原始表T的表结构相同的临时表Ttem;在临时表上设置插入触发器、更新触发器和删除触发器中的至少一种触发器。
根据本公开实施例的第三方面,提供一种数据库拆分装置,该装置包括:
处理器;
用于存储该处理器可执行指令的存储器;
其中,该处理器被配置为:
对处于运行状态的原数据库集群中的一张原始表T,生成与原始表T对应的临时表Ttem,以及与临时表Ttem对应的n张对应表T0至Tn-1;
将原始表T中的数据复制至临时表Ttem;
通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,i=[0,n-1]。
本公开的实施例提供的技术方案可以包括以下有益效果:
通过将原始表中的数据复制至临时表,将临时表中的插入、更新和删除的数据通过触发器技术同步到至少2个对应表中;解决了相关技术中的数据库拆分方法需要终止原始表提供的业务,来保证拆分后的对应表与原始表的数据一致性的问题;达到了不需要终止原始表提供的业务,也能够通过触发器技术保持原始表与最终拆分后的对应表的数据的一致性,保证了拆分过程中原始表仍然可用的效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并于说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种数据库拆分方法的流程图;
图2是根据另一示例性实施例示出的一种数据库拆分方法的流程图;
图3是根据图2所示实施例示出的一种数据库拆分方法的实施示意图;
图4是根据一示例性实施例示出的数据库拆分装置的框图;
图5是根据一示例性实施例示出的数据库拆分装置的框图;
图6是根据另一示例性实施例示出的一种数据库拆分装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
数据库拆分时,通常采用取模拆分规则作为预设拆分规则。可选地,该预设拆分规则是:在主键是数值形式时,计算主键相对于n取模后的余数,然后根据余数选择出对应表;在主键是非数值形式时,计算主键的哈希值,计算该哈希值相对于n取模后的余数,然后根据余数选择出对应表。
比如,一张原始表对应有4张对应表T0至T3,若主键相对于4取模后的余数为0,则将该主键对应的数据拆分至对应表T0;若主键相对于4取模后的余数为1,则将该主键对应的数据拆分至对应表T1;若主键相对于4取模后的余数为2,则将该主键对应的数据拆分至对应表T2;若主键相对于4取模后的余数为3,则将该主键对应的数据拆分至对应表T3。
在下述实施例中,也以取模拆分规则作为预设拆分规则,但本公开实施例对预设拆分规则不做限定。
图1是根据一示例性实施例示出的一种数据库拆分方法的流程图,该方法包括以下步骤。
在步骤101中,对处于运行状态的原数据库集群中的一张原始表T,生成与原始表T对应的临时表Ttem,以及与临时表Ttem对应的n张对应表T0至Tn-1。
临时表可以位于原数据库集群中。
n张对应表可以位于目标数据库集群。n为正整数,且n通常为2的幂。
在步骤102中,将原始表T中的数据复制至临时表Ttem。
在步骤103中,通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,i=[0,n-1]。
触发器(英文:Trigger)技术是诸如MySQL数据库之类的数据中提供的一种技术。触发器可以在数据表中的数据发生增、删和改等事件变化时自动强制执行预定代码语句。
综上所述,本公开实施例中提供的数据库拆分方法,通过将原始表中的数据复制至临时表,将临时表中的插入、更新和删除的复制通过触发器技术同步到至少2个对应表中;解决了相关技术中的数据库拆分方法需要终止原始表提供的业务,来保证拆分后的对应表与原始表的数据一致性的问题;达到了不需要终止原始表提供的业务,也能够通过触发器技术保持原始表与最终拆分后的对应表的数据的一致性,提高了拆分过程中原始表仍然可用的效果。
图2是根据另一示例性实施例示出的一种数据库拆分方法的流程图,该方法包括以下步骤。
在步骤201中,对处于运行状态的原数据库集群中的一张原始表T,生成与原始表T对应的临时表Ttem。
原数据库集群可以包括至少一个数据库,每个数据库可以包括至少一张原始表。
其中,原始表的表结构可以如表1所示。
主键 | 日期 | 用户 | 单价 | 数量 |
1 | 4月1日 | 小王 | 10 | 30 |
2 | 4月1日 | 小红 | 20 | 5 |
3 | 4月2日 | 小王 | 10 | 10 |
4 | 4月2日 | 小李 | 10 | 20 |
5 | 4月3日 | 小张 | 20 | 10 |
6 | 4月3日 | 小李 | 30 | 10 |
7 | 4月3日 | 小红 | 30 | 20 |
8 | 4月4日 | 小张 | 30 | 30 |
表1
为了进行数据库拆分,服务器需要建立与原始表T对应的临时表Ttem。
可选地,本步骤包括如下步骤。
第一,服务器建立与原始表T的表结构相同的临时表Ttem。在生成临时表Ttem后,临时表Ttem中并未存储任何数据。
第二,服务器在临时表上设置插入触发器、更新触发器和删除触发器中的至少一种触发器。其中,插入的触发器用于在临时表Ttem中数据发生变化时,触发该临时表Ttem对应的对应表进行相应的数据变化,从而保证数据的一致性。
触发器技术是诸如MySQL数据库之类的数据中提供的一种技术。触发器可以在数据表中的数据发生增、删和改等事件变化时自动强制执行预定代码语句。
本实施例以同时设置上述三种触发器来举例说明。其中:
插入触发器用于将新插入临时表Ttem的数据插入对应表中。也即,临时表Ttem中插入一行数据后,会触发该插入触发器。该插入触发器执行将最近插入的数据同步插入至相应的对应表中的步骤。
删除触发器用于在临时表Ttem的数据被删除后,在该数据对应的对应表中删除该数据。也即,临时表Ttem中删除一行数据后,会触发该删除触发器。该删除触发器执行将最近删除的数据同步在相应的对应表中进行删除的步骤。
更新触发器用于将临时表Ttem的更新数据覆盖插入至对应表中。也即,临时表Ttem中更新一行数据后,会触发该更新触发器。该更新触发器执行将最近更新的数据同步在相应的对应表中进行覆盖插入的步骤。
在步骤202中,建立与临时表Ttem对应的n张对应表T0至Tn-1;
为了进行数据库拆分,服务器还需要建立与临时表Ttem对应的n张对应表T0至Tn-1,对应表通常设置在目标数据库集群中。
目标数据库集群是用于存储拆分后的数据的数据库。目标数据库集群可以包括至少一个数据库,每个数据库包括至少一张对应表。在生成对应表后,对应表中并未存储任何数据。
n的取值通常为2的幂次。
比如,服务器可以将临时表Ttem拆分为4张对应表T0、T1、T2、T3。
在步骤203中,将原始表T在预定时刻的快照数据,通过数据库复制技术插入至临时表Ttem中;
原始表T通常会每隔预定时间间隔进行一次快照数据备份。
服务器可以将原始表T在最近一次备份时刻时的快照数据,通过数据库复制技术导入至临时表Ttem中。该导入过程也即将快照数据中的每行数据逐行插入至临时表Ttem中的过程。
如果原始表T为MySQL数据表,则数据库复制技术为MySQL复制技术。
在步骤204中,将原始表T在预定时刻之后的数据操作,通过数据库复制技术同步到临时表Ttem中;
其中,数据操作包括:插入数据、更新数据和删除数据。
对于在最近一次备份时刻后,原始表T的插入数据变化、更新数据变化和删除数据变化,也通过数据库复制技术同步到临时表Ttem中,以便保证原始表T和临时表Ttem的数据一致性。
需要说明的是,在步骤203和步骤204的执行过程中,原始表T不需要终止业务。
在步骤205中,若临时表Ttem中进行了针对第一标识的数据的插入操作,则通过插入触发器按照预设拆分规则查询与第一标识对应的对应表Ti。
在将原始表T中的数据复制到临时表Ttem的过程中,会不断在临时表Ttem进行数据的插入操作。
以标识为第一标识的数据为例,若临时表Ttem中进行了针对第一标识的数据的插入操作,则服务器在将该数据插入临时表Ttem后,会触发插入触发器。然后,通过插入触发器按照预设拆分规则查询与第一标识对应的对应表Ti。可选地,第一标识是数据的主键。
比如,该数据为:
9 | 4月5日 | 小林 | 10 | 30 |
则该数据的第一标识为9,服务器通过插入触发器计算出第一标识对4进行取模后的值为1,则查询出该第一标识对应的对应表为T1。
在步骤206中,通过插入触发器将数据插入对应表Ti。
服务器通过插入触发器将该数据插入对应表T1中,比如表2。
主键 | 日期 | 用户 | 单价 | 数量 |
1 | 4月1日 | 小王 | 10 | 30 |
5 | 4月3日 | 小张 | 20 | 10 |
9 | 4月5日 | 小林 | 10 | 30 |
表2
在步骤207中,若临时表Ttem中进行了针对第二标识的数据的更新操作,则通过更新触发器按照预设拆分规则查询与第二标识对应的对应表Ti。
在将原始表T中的数据复制到临时表Ttem的过程中,有可能产生在临时表Ttem进行数据的更新操作。
以标识为第二标识的数据为例,若临时表Ttem中进行了针对第二标识的数据的更新操作,则服务器在将该数据插入临时表Ttem后,会触发插入触发器。然后,通过插入触发器按照预设拆分规则查询与第一标识对应的对应表Ti。可选地,第一标识是数据的主键。可选地,第二标识是数据的主键。
比如,该数据为:
1 | 4月1日 | 小王 | 10 | 40 |
则该数据的第二标识为1,服务器通过更新触发器计算出第二标识对4进行取模后的值为1,则查询出该第二标识对应的对应表为T1。
在步骤208中,通过更新触发器将数据覆盖插入至对应表Ti。
需要说明的是,在第二标识的数据发生更新时,第二标识对应的数据可能已经被拆分至对应表中,也可能还未被拆分至对应表中。
为了保证数据一致性,在查询出第二标识对应的对应表Ti后,更新触发器采用覆盖插入操作将最近更新的数据覆盖插入至对应表中。不论更新前的数据是否已经拆分至对应表中,采用覆盖插入操作总是能够保持数据的一致性。
在步骤209中,若临时表Ttem中进行了针对第三标识的数据的删除操作,则通过删除触发器按照预设拆分规则查询与第三标识对应的对应表Ti。
在将原始表T中的数据复制到临时表Ttem的过程中,有可能产生在临时表Ttem进行数据的删除操作
若临时表Ttem中进行了针对第三标识的数据的删除操作,则通过删除触发器按照预设拆分规则查询与第三标识对应的对应表Ti。
比如,删除请求包括的数据为:
1 | 4月1日 | 小王 | 10 | 30 |
则该数据的第三标识为1,服务器通过删除触发器检测出第三标识对4进行取模后的值为1,则查询出该第三标识对应的对应表为T1。
在步骤210中,通过删除触发器将数据从对应表Ti中删除。
服务器通过删除触发器将该数据从对应表T1中删除,比如表3。
主键 | 日期 | 用户 | 单价 | 数量 |
5 | 4月3日 | 小张 | 20 | 10 |
表3
需要说明的是,由于被删除的数据可能还未拆分至对应表中。所以,删除触发器在对应表中执行删除操作可能会引发错误。此时,删除触发器忽略该错误即可。
为了便于说明本实施例提供的数据库拆分方法,示出图3。在图3中,原始表T存在主键分别为1、2、3、4、5、6、7、8的8行数据,服务器根据预设拆分规则获取各行数据的主键对4取模后的值,经过临时表和对应表协作的拆分过程,将取模后的值为0的数据拆分至对应表T0,将取模后的值为1的数据拆分至对应表T1,将取模后的值为2的数据拆分至对应表T2,将取模后的值为3的数据拆分至对应表T3。
综上所述,本公开实施例中提供的数据库拆分方法,通过将原始表中的数据复制至临时表,将临时表中的插入、更新和删除的复制通过触发器技术同步到至少2个对应表中;解决了相关技术中的数据库拆分方法需要终止原始表提供的业务,来保证拆分后的对应表与原始表的数据一致性的问题;达到了不需要终止原始表提供的业务,也能够通过触发器技术保持原始表与最终拆分后的对应表的数据的一致性,保证了拆分过程中原始表仍然可用的效果。
本公开实施例提供的数据库拆分方法,还通过根据原始表建立临时表,并在该临时表上进行分表操作,保证了整个分表过程中,不会对原始表所在的数据库产生任何影响;并且相较于在原始表上进行分表操作,在临时表上进行分表操作更加简单,且不会影响服务器处理性能。
本公开实施例提供的数据库拆分方法,还通过采用覆盖插入操作代替更新操作,使得更新触发器能够实现不论更新前的数据是否已经拆分至对应表中,均能够保证数据的一致性的效果。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图4是根据一示例性实施例示出的数据库拆分装置的框图,该装置包括:
生成模块410,被配置为对处于运行状态的原数据库集群中的一张原始表T,生成与原始表T对应的临时表Ttem,以及与临时表Ttem对应的n张对应表T0至Tn-1;
复制模块420,被配置为将原始表T中的数据复制至临时表Ttem;
同步模块430,被配置为通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,i=[0,n-1]。
综上所述,本公开实施例中提供的数据库拆分装置,通过将原始表中的数据复制至临时表,将临时表中的插入、更新和删除的数据通过触发器技术同步到至少2个对应表中;解决了相关技术中的数据库拆分方法需要终止原始表提供的业务,来保证拆分后的对应表与原始表的数据一致性的问题;达到了不需要终止原始表提供的业务,也能够通过触发器技术保持原始表与最终拆分后的对应表的数据的一致性,保证了拆分过程中原始表仍然可用的效果。
图5是根据一示例性实施例示出的数据库拆分装置的框图,该装置包括:
生成模块410,被配置为对处于运行状态的原数据库集群中的一张原始表T,生成与原始表T对应的临时表Ttem,以及与临时表Ttem对应的n张对应表T0至Tn-1;
复制模块420,被配置为将原始表T中的数据复制至临时表Ttem;
同步模块430,被配置为通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,i=[0,n-1]。
可选地,该复制模块420,包括:
快照复制子模块421,被配置为将原始表T在预定时刻的快照数据,通过数据库复制技术插入至临时表Ttem中;
同步复制子模块422,被配置为将原始表T在预定时刻之后的数据操作,通过数据库复制技术同步到临时表Ttem中;
其中,数据操作包括:插入数据、更新数据和删除数据。
可选地,该同步模块430,包括:
第一查询子模块431,被配置为在临时表Ttem中进行了针对第一标识的数据的插入操作时,通过插入触发器按照预设拆分规则查询与第一标识对应的对应表Ti;
插入子模块432,被配置为通过插入触发器将数据插入对应表Ti。
可选地,该同步模块430,包括:
第二查询子模块433,被配置为在临时表Ttem中进行了针对第二标识的数据的更新操作时,通过更新触发器按照预设拆分规则查询与第二标识对应的对应表Ti;
更新子模块434,被配置为通过更新触发器将数据覆盖插入至对应表Ti。
可选地,该同步模块430,包括:
第三查询子模块435,被配置为在临时表Ttem中进行了针对第三标识的数据的删除操作时,通过删除触发器按照预设拆分规则查询与第三标识对应的对应表Ti;
删除子模块436,被配置为通过删除触发器将数据从对应表Ti中删除。
可选地,生成模块410,被配置为新建与原始表T的表结构相同的临时表Ttem;在临时表上设置插入触发器、更新触发器和删除触发器中的至少一种触发器。
综上所述,本公开实施例中提供的数据库拆分装置,通过将原始表中的数据复制至临时表,将临时表中的插入、更新和删除的数据通过触发器技术同步到至少2个对应表中;解决了相关技术中的数据库拆分方法需要终止原始表提供的业务,来保证拆分后的对应表与原始表的数据一致性的问题;达到了不需要终止原始表提供的业务,也能够通过触发器技术保持原始表与最终拆分后的对应表的数据的一致性,保证了拆分过程中原始表仍然可用的效果。
本公开实施例提供的数据库拆分装置,还通过根据原始表建立临时表,并在该临时表上进行分表操作,保证了整个分表过程中,不会对原始表所在的数据库产生任何影响;并且相较于在原始表上进行分表操作,在临时表上进行分表操作更加简单,且不会影响服务器处理性能。
本公开实施例提供的数据库拆分装置,还通过采用覆盖插入操作代替更新操作,使得更新触发器能够实现不论更新前的数据是否已经拆分至对应表中,均能够保证数据的一致性的效果。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开一示例性实施例提供了一种数据库拆分装置,能够实现本公开提供的数据库拆分方法,该数据库拆分装置包括:处理器、用于存储处理器可执行指令的存储器;
其中,处理器被配置为:
对处于运行状态的原数据库集群中的一张原始表T,生成与原始表T对应的临时表Ttem,以及与临时表Ttem对应的n张对应表T0至Tn-1;
将原始表T中的数据复制至临时表Ttem;
通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,i=[0,n-1]。
图6是根据另一示例性实施例示出的一种数据库拆分装置的框图。例如,装置600可以被提供为一网络侧设备。参照图6,装置600包括处理组件602,其进一步包括一个或多个处理器,以及由存储器604所代表的存储器资源,用于存储可由处理组件602的执行的指令,例如应用程序。存储器604中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件602被配置为执行指令,以执行上述数据库拆分方法。
装置600还可以包括一个电源组件606被配置为执行装置600的电源管理,一个有线或无线网络接口608被配置为将装置600连接到网络,和一个输入输出(I/O)接口610。装置600可以操作基于存储在存储器604的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
也即,上述存储器中存储有用于执行如下操作的指令:
对处于运行状态的原数据库集群中的一张原始表T,生成与原始表T对应的临时表Ttem,以及与临时表Ttem对应的n张对应表T0至Tn-1;
将原始表T中的数据复制至临时表Ttem;
通过触发器技术将临时表Ttem上的每条数据的数据操作,同步至对应表T0至Tn-1中与数据对应的对应表Ti中,i=[0,n-1]。
可选地,上述存储器中还存储有用于执行如下操作的指令:
将原始表T在预定时刻的快照数据,通过数据库复制技术插入至临时表Ttem中;
将原始表T在预定时刻之后的数据操作,通过数据库复制技术同步到临时表Ttem中;
其中,数据操作包括:插入数据、更新数据和删除数据。
可选地,上述存储器中还存储有用于执行如下操作的指令:
若临时表Ttem中进行了针对第一标识的数据的插入操作,则通过插入触发器按照预设拆分规则查询与第一标识对应的对应表Ti;
通过插入触发器将数据插入对应表Ti。
可选地,上述存储器中还存储有用于执行如下操作的指令:
若临时表Ttem中进行了针对第二标识的数据的更新操作,则通过更新触发器按照预设拆分规则查询与第二标识对应的对应表Ti;
通过更新触发器将数据覆盖插入至对应表Ti。
可选地,上述存储器中还存储有用于执行如下操作的指令:
若临时表Ttem中进行了针对第三标识的数据的删除操作,则通过删除触发器按照预设拆分规则查询与第三标识对应的对应表Ti;
通过删除触发器将数据从对应表Ti中删除。
可选地,上述存储器中还存储有用于执行如下操作的指令:
新建与原始表T的表结构相同的临时表Ttem;
在临时表上设置插入触发器、更新触发器和删除触发器中的至少一种触发器。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (13)
1.一种数据库拆分方法,其特征在于,所述方法包括:
对处于运行状态的原数据库集群中的一张原始表T,生成与所述原始表T对应的临时表Ttem,以及与所述临时表Ttem对应的n张对应表T0至Tn-1;
将所述原始表T中的数据复制至所述临时表Ttem;
通过触发器技术将所述临时表Ttem上的每条数据的数据操作,同步至所述对应表T0至Tn-1中与所述数据对应的对应表Ti中,i=[0,n-1]。
2.根据权利要求1所述的方法,其特征在于,所述将所述原始表T中的数据复制至所述临时表Ttem,包括:
将所述原始表T在预定时刻的快照数据,通过数据库复制技术插入至所述临时表Ttem中;
将所述原始表T在所述预定时刻之后的数据操作,通过所述数据库复制技术同步到所述临时表Ttem中;
其中,所述数据操作包括:插入数据、更新数据和删除数据。
3.根据权利要求2所述的方法,其特征在于,所述通过触发器技术将所述临时表Ttem上的每条数据的数据操作,同步至所述对应表T0至Tn-1中与所述数据对应的对应表Ti中,包括:
若所述临时表Ttem中进行了针对第一标识的数据的插入操作,则通过插入触发器按照预设拆分规则查询与所述第一标识对应的所述对应表Ti;
通过所述插入触发器将所述数据插入所述对应表Ti。
4.根据权利要求2所述的方法,其特征在于,所述通过触发器技术将所述临时表Ttem上的每条数据的数据操作,同步至所述对应表T0至Tn-1中与所述数据对应的对应表Ti中,包括:
若所述临时表Ttem中进行了针对第二标识的数据的更新操作,则通过更新触发器按照预设拆分规则查询与所述第二标识对应的所述对应表Ti;
通过所述更新触发器将所述数据覆盖插入至所述对应表Ti。
5.根据权利要求2所述的方法,其特征在于,所述通过触发器技术将所述临时表Ttem上的每条数据的数据操作,同步至所述对应表T0至Tn-1中与所述数据对应的对应表Ti中,包括:
若所述临时表Ttem中进行了针对第三标识的数据的删除操作,则通过删除触发器按照所述预设拆分规则查询与所述第三标识对应的所述对应表Ti;
通过所述删除触发器将所述数据从所述对应表Ti中删除。
6.根据权利要求1至5任一所述的方法,其特征在于,所述生成与所述原始表T对应的临时表Ttem,包括:
新建与所述原始表T的表结构相同的临时表Ttem;
在所述临时表上设置插入触发器、更新触发器和删除触发器中的至少一种触发器。
7.一种数据库拆分装置,其特征在于,所述装置包括:
生成模块,被配置为对处于运行状态的原数据库集群中的一张原始表T,生成与所述原始表T对应的临时表Ttem,以及与所述临时表Ttem对应的n张对应表T0至Tn-1;
复制模块,被配置为将所述原始表T中的数据复制至所述临时表Ttem;
同步模块,被配置为通过触发器技术将所述临时表Ttem上的每条数据的数据操作,同步至所述对应表T0至Tn-1中与所述数据对应的对应表Ti中,i=[0,n-1]。
8.根据权利要求7所述的装置,其特征在于,所述复制模块,包括:
快照复制子模块,被配置为将所述原始表T在预定时刻的快照数据,通过数据库复制技术插入至所述临时表Ttem中;
同步复制子模块,被配置为将所述原始表T在所述预定时刻之后的数据操作,通过所述数据库复制技术同步到所述临时表Ttem中;
其中,所述数据操作包括:插入数据、更新数据和删除数据。
9.根据权利要求8所述的装置,其特征在于,所述同步模块,包括:
第一查询子模块,被配置为在所述临时表Ttem中进行了针对第一标识的数据的插入操作时,通过插入触发器按照预设拆分规则查询与所述第一标识对应的所述对应表Ti;
插入子模块,被配置为通过所述插入触发器将所述数据插入所述对应表Ti。
10.根据权利要求8所述的装置,其特征在于,所述同步模块,包括:
第二查询子模块,被配置为在所述临时表Ttem中进行了针对第二标识的数据的更新操作时,通过更新触发器按照预设拆分规则查询与所述第二标识对应的所述对应表Ti;
更新子模块,被配置为通过所述更新触发器将所述数据覆盖插入至所述对应表Ti。
11.根据权利要求8所述的装置,其特征在于,所述同步模块,包括:
第三查询子模块,被配置为在所述临时表Ttem中进行了针对第三标识的数据的删除操作时,通过删除触发器按照所述预设拆分规则查询与所述第三标识对应的所述对应表Ti;
删除子模块,被配置为通过所述删除触发器将所述数据从所述对应表Ti中删除。
12.根据权利要求7至11任一所述的装置,其特征在于,所述生成模块,被配置为新建与所述原始表T的表结构相同的临时表Ttem;在所述临时表上设置插入触发器、更新触发器和删除触发器中的至少一种触发器。
13.一种数据库拆分装置,其特征在于,所述装置包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
对处于运行状态的原数据库集群中的一张原始表T,生成与所述原始表T对应的临时表Ttem,以及与所述临时表Ttem对应的n张对应表T0至Tn-1;
将所述原始表T中的数据复制至所述临时表Ttem;
通过触发器技术将所述临时表Ttem上的每条数据的数据操作,同步至所述对应表T0至Tn-1中与所述数据对应的对应表Ti中,i=[0,n-1]。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510325589.7A CN104965880A (zh) | 2015-06-12 | 2015-06-12 | 数据库拆分方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510325589.7A CN104965880A (zh) | 2015-06-12 | 2015-06-12 | 数据库拆分方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104965880A true CN104965880A (zh) | 2015-10-07 |
Family
ID=54219917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510325589.7A Pending CN104965880A (zh) | 2015-06-12 | 2015-06-12 | 数据库拆分方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104965880A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326241A (zh) * | 2015-06-15 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 在将数据表拆分的过程中读写数据表的方法和装置 |
CN106855892A (zh) * | 2017-01-13 | 2017-06-16 | 贵州白山云科技有限公司 | 一种数据处理方法以及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902812A (zh) * | 2012-10-22 | 2013-01-30 | 飞天诚信科技股份有限公司 | 一种数据库远程同步的实现方法 |
CN102982126A (zh) * | 2012-11-14 | 2013-03-20 | 浙江星汉信息技术有限公司 | 一种数据库表数据实时推送的方法及其系统 |
CN104008199A (zh) * | 2014-06-16 | 2014-08-27 | 北京京东尚科信息技术有限公司 | 一种数据查询方法 |
-
2015
- 2015-06-12 CN CN201510325589.7A patent/CN104965880A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902812A (zh) * | 2012-10-22 | 2013-01-30 | 飞天诚信科技股份有限公司 | 一种数据库远程同步的实现方法 |
CN102982126A (zh) * | 2012-11-14 | 2013-03-20 | 浙江星汉信息技术有限公司 | 一种数据库表数据实时推送的方法及其系统 |
CN104008199A (zh) * | 2014-06-16 | 2014-08-27 | 北京京东尚科信息技术有限公司 | 一种数据查询方法 |
Non-Patent Citations (1)
Title |
---|
博客园: ""数据库表分割技术浅析(水平分割/垂直分割/库表散列)"", 《HTTP://WWW.CNBLOGS.COM/XDP-GACL/4128202.HTML》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326241A (zh) * | 2015-06-15 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 在将数据表拆分的过程中读写数据表的方法和装置 |
CN106855892A (zh) * | 2017-01-13 | 2017-06-16 | 贵州白山云科技有限公司 | 一种数据处理方法以及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10803079B2 (en) | Timing-based system-period temporal table in a database system | |
CN108121782B (zh) | 查询请求的分配方法、数据库中间件系统以及电子设备 | |
CN109918229B (zh) | 非日志模式的数据库集群副本构建方法及装置 | |
CN104965879A (zh) | 修改数据表的表结构的方法及装置 | |
US10467192B2 (en) | Method and apparatus for updating data table in keyvalue database | |
CN108255909B (zh) | 基于Oracle数据库的数据表备份方法及服务器 | |
EP3117348A1 (en) | Systems and methods to optimize multi-version support in indexes | |
EP2988220A1 (en) | Computer system, computer-system management method, and program | |
CN105205053A (zh) | 一种数据库增量日志解析方法及系统 | |
CN106933703A (zh) | 一种数据库数据备份的方法、装置及电子设备 | |
US9026493B1 (en) | Multi-master RDBMS improvements for distributed computing environment | |
CN106709066B (zh) | 数据同步方法及装置 | |
CN103902410A (zh) | 云存储系统的数据备份加速方法 | |
CN113420026A (zh) | 数据库表结构变更方法、装置、设备及存储介质 | |
US10901854B2 (en) | Temporal logical transactions | |
CN104462342B (zh) | 数据库快照同步处理方法及装置 | |
US9031905B2 (en) | Data synchronization | |
CN104965880A (zh) | 数据库拆分方法及装置 | |
US8892535B2 (en) | Database management method | |
US10430400B1 (en) | User controlled file synchronization limits | |
CN109462661A (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
TWI622881B (zh) | Cache replacement system and method thereof for memory computing cluster | |
CN107422991B (zh) | 一种存储策略管理系统 | |
CN113590643B (zh) | 基于双轨数据库的数据同步方法、装置、设备和存储介质 | |
CN111444281B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151007 |