CN102315930B - 用于在数据同步中减少数据传输量的方法和系统 - Google Patents
用于在数据同步中减少数据传输量的方法和系统 Download PDFInfo
- Publication number
- CN102315930B CN102315930B CN201010222614.6A CN201010222614A CN102315930B CN 102315930 B CN102315930 B CN 102315930B CN 201010222614 A CN201010222614 A CN 201010222614A CN 102315930 B CN102315930 B CN 102315930B
- Authority
- CN
- China
- Prior art keywords
- data
- change
- different
- matrix
- value
- 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.)
- Expired - Fee Related
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开公开了一种用于在数据同步中减少数据传输量的方法和系统,其中方法包括:识别改变后的源数据表中每个数据列中不同的数据值;对每个数据列中的数据值进行编码,其中对每一数据列来说不同的数据值具有不同的编码值;识别数据改变历史信息中不同的改变类型ChangeType和改变比特值ChangeBits;以及根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生改变矩阵。通过改变矩阵,使得原数据改变中针对不同行的具有相同改变的数据被合并到改变矩阵的同一改变行中,从而减少了数据传输量,提高了同步效率。
Description
技术领域
本发明涉及数据处理领域。更确切的,本发明涉及用于在数据同步中减少数据传输量的方法和系统。
背景技术
随着计算机网络的发展,数据同步技术的应用越来越广泛。典型地,位于数据同步系统中的同步服务器或客户机捕获源数据中发生的每一个改变并记录这些改变。当进行数据同步时,这些改变将会被传送到对方以便对方进行应用。传统的,源数据中发生的每一个改变都要被传送到对方。当源数据中发生大量的改变时,由于每一个改变都要被传送到对方,往往会占用较多的带宽资源。而且,当对方接收到这些改变时,需要将每一个改变都逐一进行应用,往往会导致性能的下降。在移动数据同步的情况下,由于移动终端的计算能力有限,这种问题变得更加突出。
发明内容
本公开的说明性实施例认识到现有技术中的上述缺点,提供了用于在数据同步中减少数据传输量的方法和系统以解决现有技术中的问题。
根据本公开的一个方面,提供了一种用于在数据同步中减少数据传输量的方法,包括:识别改变后的源数据表中每个数据列中不同的数据值;对每个数据列中的数据值进行编码,其中对每一数据列来说不同的数据值具有不同的编码值;识别数据改变历史信息中不同的改变类型ChangeType和改变比特值ChangeBits;以及根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生改变矩阵。
根据本公开的另一方面,其中根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生改变矩阵进一步包括:根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生不同的列值ColumnValue;以及根据不同的列值ColumnValue,产生对应的数据记录主键值集PrimaryKeySet。
根据本公开的另一方面,其中改变矩阵至少包括以下列:改变类型ChangeType、改变比特值ChangeBits、列值ColumnValue和数据记录主键值集PrimaryKeySet。
根据本公开的又一方面,提供了一种用于在数据同步中减少数据传输量的系统,包括:第一识别部件,被配置为识别改变后的源数据表中每个数据列中不同的数据值;编码部件,被配置为对每个数据列中的数据值进行编码,其中对每一数据列来说不同的数据值具有不同的编码值;第二识别部件,被配置为识别数据改变历史信息中不同的改变类型ChangeType和改变比特值ChangeBits;以及产生部件,被配置为根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生改变矩阵。
根据本公开的另一方面,其中产生部件进一步配置为:根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生不同的列值ColumnValue;以及根据不同的列值ColumnValue,产生对应的数据记录主键值集PrimaryKeySet。
根据本公开的另一方面,其中改变矩阵至少包括以下列:改变类型ChangeType、改变比特值ChangeBits、列值ColumnValue和数据记录主键值集PrimaryKeySet。
利用本公开说明性实施例的方法和系统,通过产生改变矩阵将在相同的数据集上发生的改变进行压缩,在进行数据同步时只发送改变矩阵,从而减少了数据传输量,提高了同步效率,很好地解决了现有技术中的问题。
附图说明
本公开可以通过参考下文中结合附图所给出的描述而得到更好的理解,其中在所有附图中使用了相同或相似的附图标记来表示相同或者相似的部件。所述附图连同下面的详细说明一起包含在本说明书中并且形成本说明书的一部分,而且用来进一步举例说明本公开的优选实施例和解释本公开的原理和优点。在附图中:
图1显示了根据本公开一个实施例的用于在数据同步中减少数据传输量的方法100;
图2显示了根据本公开另一实施例的用于在数据同步中减少数据传输量的方法200;
图3显示了根据本公开一个实施例的用于在数据同步中减少数据传输量的系统300;
图4显示了根据本公开另一实施例的用于在数据同步中减少数据传输量的系统400。
具体实施方式
在下文中将结合附图对本公开的示范性实施例进行描述。为了清楚和简明起见,在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施例的过程中必须做出很多特定于该实际实施方式的决定,以便实现开发人员的具体目标,例如,符合与系统及业务相关的那些限制条件,并且这些限制条件可能会随着实施方式的不同而有所改变。此外,还应该了解,虽然开发工作有可能是非常复杂和费时的,但对得益于本公开公开内容的本领域技术人员来说,这种开发工作仅仅是例行的任务。
在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本公开,在附图中仅仅示出了与根据本公开的方案密切相关的装置结构和/或处理步骤,而省略了与本公开关系不大的其他细节。
下面结合图1详细描述根据本公开的一个实施例的用于在数据同步中减少数据传输量的方法100。
现在参看图1,根据本公开的一个实施例的用于在数据同步中减少数据传输量的方法100从步骤102开始。
接下来,在步骤104,识别改变后的源数据表中每个数据列中不同的数据值。
然后,方法进入步骤106,其中对每个数据列中的数据值进行编码,其中对每一数据列来说不同的数据值具有不同的编码值。
之后,方法进入步骤108,其中识别数据改变历史信息中不同的改变类型ChangeType和改变比特值ChangeBits。
然后,方法进入步骤110,其中根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生改变矩阵。
之后,方法在步骤112结束。
根据本公开的一个实施例,根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生改变矩阵进一步包括:根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生不同的列值ColumnValue;以及根据不同的列值ColumnValue,产生对应的数据记录主键值集PrimaryKeySet。
通过改变矩阵,使得原数据改变中具有相同改变数据的不同行的主键值被放入到同一改变矩阵行的数据记录主键值集PrimaryKeySet中,从而使得原数据改变中针对不同行的具有相同改变的数据被合并到改变矩阵的同一改变行,进而减少了数据同步时的数据传输量,从而提高了同步效率。
根据本公开的一个实施例,改变矩阵至少包括以下列:改变类型ChangeType、改变比特值ChangeBits、列值ColumnValue和数据记录主键值集PrimaryKeySet。
根据本公开的一个实施例,还包括发送产生的改变矩阵。
下面通过一个例子来具体说明根据本公开的一个实施例的上述方法。下面的表1示例性的给出了源数据表格的一个例子,该源数据表格有4列,其中C1为主键值。
C1 | CNum | CChar | CVarChar |
1 | 0 | ‘LOW’ | ‘aaaaa’ |
2 | 0 | ‘LOW’ | ‘aaaaa’ |
3 | 0 | ‘LOW’ | ‘aaaaa’ |
4 | 0 | ‘LOW’ | ‘aaaaa’ |
5 | 0 | ‘LOW’ | ‘aaaaa’ |
6 | 0 | ‘LOW’ | ‘aaaaa’ |
7 | 0 | ‘LOW’ | ‘aaaaa’ |
8 | 0 | ‘LOW’ | ‘aaaaa’ |
9 | 0 | ‘LOW’ | ‘aaaaa’ |
10 | 0 | ‘LOW’ | ‘aaaaa’ |
11 | 0 | ‘LOW’ | ‘aaaaa’ |
12 | 0 | ‘LOW’ | ‘aaaaa’ |
表1
表2示例性的给出了对应于源数据表1的在同步服务器或客户机中存储的数据改变历史信息的一个例子。
C1 | CNum | CChar | CVarChar | From | To | ChangeType | ChangeBits |
1 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
2 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
3 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
4 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
5 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
6 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
7 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
8 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
9 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
10 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
11 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
12 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | ∞ | I | 111 |
表2
参见表2,其中:
第一列到第四列对应于源数据表格的第一列到第四列。
From和To对应于数据的相对版本号,用于指示发生改变的数据行中数据的有效性,其中From表示发生改变的改变数据行开始存在时的版本号,To表示发生改变的改变数据行过期时(即该数据行发生了新的改变)的版本号。对于源数据发生的每一个改变,在数据改变历史信息中都会有对应的一行进行记录,其中From的值是发生改变的数据行开始存在的版本号,即发生改变时对应的版本号,To的值是发生改变的数据行过期时的版本号。因此每一变化数据行的有效时期是从From的时间到To时间。当To的取值为∞时,表明对应改变数据行为当前数据行。
改变类型ChangeType用于表示数据改变的类型,其中“I”表示数据插入操作,“U”表示数据更新操作,“D”表示数据删除操作。
改变比特值ChangeBits是二进制形式的数据,其位数为源数据的数据列数减一,每个二进制位分别对应于主键值列之外的列,每个二进制位的取值代表对应的源数据中的数据列是否发生了改变。以表2为例,源数据一共有4列,其中主键值列为C1,那么改变比特值ChangeBits具有3位,其每个二进制位分别对应于CNum、CChar和CVarChar。表2的例子中二进制位的取值为1时表示对应的源数据中的数据列发生了改变,因此ChangeBits=111表示对应的源数据中的CNum、CChar和CVarChar都发生了改变,其数据改变的类型为数据插入操作(ChangeType=I)。当然,也可以用二进制位的取值为0表示对应的源数据中的数据列发生了改变。
下面参看表3,其中示例性的给出了发生改变之后的源数据表格。其中CNum全部发生了改变,CChar和CVarChar部分发生了改变。
C1 | CNum | CChar | CVarChar |
1 | 1000 | ‘LOW’ | ‘aaaaa’ |
2 | 1000 | ‘LOW’ | ‘aaaaa’ |
3 | 1000 | ‘LOW’ | ‘aaaaa’ |
4 | 2000 | ‘middle’ | ‘aaaaa’ |
5 | 2000 | ‘middle’ | ‘aaaaa’ |
6 | 2000 | ‘middle’ | ‘aaaaa’ |
7 | 3000 | ‘middle’ | ‘bbbbb’ |
8 | 3000 | ‘middle’ | ‘bbbbb’ |
9 | 3000 | ‘middle’ | ‘bbbbb’ |
10 | 4000 | ‘HIGH’ | ‘ccccc’ |
11 | 4000 | ‘HIGH’ | ‘ccccc’ |
12 | 4000 | ‘HIGH’ | ‘ccccc’ |
表3
表4示例性的给出了对应于表3(即:发生改变后的源数据表1)的在同步服务器或客户机中存储的数据改变历史信息的一个例子。
现在参见表4,其第1行至第12行对应于表1的内容,与表2不同的是,表4第1行至第12行中的To的值变为2,即表明数据行(即:第1行至第12行中CNum、CChar和CVarChar的值)在版本号1到版本2之间是有效的,由于To的值不是∞,因此这些数据行已经不是当前的数据行。表4的第13行至第24行对应于表3的内容,其中CNum、CChar和CVarChar分别对应于表3的CNum、CChar和CVarChar。From的值为2,To的值为∞,即表明这些数据行为当前的数据行,对应的数据有效。改变类型ChangeType为U,表明对应的是数据更新操作。改变比特值ChangeBits分别为“100”、“110”和“111”,分别表示对应的列CNum、CChar和CVarChar是否发生了数据更新操作。以第14行为例,当前CNum、CChar和CVarChar的值分别为“1000”、“LOW”和“aaaaa”,To的值为∞,即表明这些数据行为当前的数据行,对应的数据有效;对该数据行进行了数据更新操作,其中仅对列CNum进行了数据更新操作(即其值从“0”更新为“1000”),CChar和CVarChar没有发生改变。
C1 | CNum | CChar | CVarChar | From | To | ChangeType | ChangeBits |
1 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | I | 111 |
2 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | I | 111 |
3 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | 1 | 111 |
4 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | I | 111 |
5 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | I | 111 |
6 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | I | 111 |
7 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | I | 111 |
8 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | I | 111 |
9 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | I | 111 |
10 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | I | 111 |
11 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | I | 111 |
12 | 0 | ‘LOW’ | ‘aaaaa’ | 1 | 1 | I | 111 |
1 | 1000 | ‘LOW’ | ‘aaaaa’ | 2 | ∞ | U | 100 |
2 | 1000 | ‘LOW’ | ‘aaaaa’ | 2 | ∞ | U | 100 |
3 | 1000 | ‘LOW’ | ‘aaaaa’ | 2 | ∞ | U | 100 |
4 | 2000 | ‘middle’ | ‘aaaaa’ | 2 | ∞ | U | 110 |
5 | 2000 | ‘middle’ | ‘aaaaa’ | 2 | ∞ | U | 110 |
6 | 2000 | ‘middle’ | ‘aaaaa’ | 2 | ∞ | U | 110 |
7 | 3000 | ‘middle’ | ‘bbbbb’ | 2 | ∞ | U | 111 |
8 | 3000 | ‘middle’ | ‘bbbbb’ | 2 | ∞ | U | 111 |
9 | 3000 | ‘middle’ | ‘bbbbb’ | 2 | ∞ | U | 111 |
10 | 4000 | ‘HIGH’ | ‘ccccc’ | 2 | ∞ | U | 111 |
11 | 4000 | ‘HIGH’ | ‘ccccc’ | 2 | ∞ | U | 111 |
12 | 4000 | ‘HIGH’ | ‘ccccc’ | 2 | ∞ | U | 111 |
表4
根据本公开的一个实施例的方法,首先识别每个数据列中不同的数据值。对上面描述的例子来说,表3为发生改变后的源数据表,其数据列分别为CNum、CChar和CVarChar。对CNum来说,有1000、2000、3000和4000四种不同的值;对CChar来说,有‘LOW’、‘MIDDLE’和‘HIGH’三种不同的值;对CVarChar来说,有‘aaaaa’、‘bbbbb’和‘ccccc’三种不同的值。
然后,对每个数据列中的数据值进行编码,其中对每一列来说不同的数据值具有不同的编码值。
下面用表5示例性地给出编码的一个例子。
CNum
1000 | 0 |
2000 | 1 |
3000 | 2 |
4000 | 3 |
CChar
‘LOW’ | 0 |
‘middle’ | 1 |
‘HIGH’ | 2 |
CVarChar
‘aaaaa’ | 0 |
‘bbbbb’ | 1 |
‘ccccc’ | 2 |
表5
上述编码方式仅仅是一个示例,可以利用现有技术中任何编码方式,只要保证对每一列来说不同的数据值具有不同的编码值即可。
接下来,识别数据改变历史信息中不同的改变类型ChangeType和改变比特值ChangeBits。仍以表3的发生改变后的源数据表为例,表4为对应于表3的在同步服务器或客户机中存储的数据改变历史信息。表3中,改变类型ChangeType只有一种‘U’,改变比特值ChangeBits有‘100’、‘110’和‘111’三种。
接下来,根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生改变矩阵。根据本公开的一个实施例,根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生不同的列值ColumnValue;以及根据不同的列值ColumnValue,产生对应的数据记录的主键值集PrimaryKeySet。
仍以表3和表4为例,其中,改变类型ChangeType为‘U’,改变比特值ChangeBits分别为‘100’、‘110和‘111’。根据不同的改变类型ChangeType和改变比特值ChangeBits,利用表5的对应于数据列的不同的数据值的编码值产生不同的列值ColumnValue。例如对于ChangeType=U,ChangeBits=100,对应的数据列的值为‘1000’,其编码值为‘0’,因此列值ColumnValue为‘0’;对于ChangeType=U,ChangeBits=110,对应的数据列的值为‘2000’和‘MIDDLE’,其编码值分别为‘1’和‘1’,因此列值ColumnValue为‘11’;其余类推。根据不同的列值ColumnValue,产生对应的数据记录的主键值集PrimaryKeySet。例如对于ColumnValue=0,主键值集PrimaryKeySet为‘1,2,3’。其余类推。这样,根据上述方法得到的改变矩阵如表6所示。
ChangeType | ChangeBits | ColumnValue | PrimaryKeySet |
U | 100 | 0 | 1,2,3 |
U | 110 | 11 | 4,5,6 |
U | 111 | 211 | 7,8,9 |
U | 111 | 322 | 10,11,12 |
表6
如果按照现有技术中的方法,由于源数据表中的所有行都发生了改变,在数据同步时需要传输所有的改变,因此表3将会全部被传输。通过利用根据本公开的上述改变矩阵,将数据的改变进行压缩,在数据同步时仅需要传输该改变矩阵,因而减少了数据同步时的传输数据量,从而减少带宽资源的消耗。
下面结合附图2说明根据本公开另一实施例的用于在数据同步中减少数据传输量的方法200。
根据本公开的一个实施例的用于在数据同步中减少数据传输量的方法200从步骤202开始。
接下来,在步骤204,接收改变矩阵,其中改变矩阵是根据上面描述的方法产生的;
然后,在步骤208,应用接收的改变矩阵。其中,在应用接收的改变矩阵的过程中,对于改变矩阵的每一行,根据该行中的改变类型ChangeType、改变比特值ChangeBits、列值ColumnValue,生成一条能够改变数据记录主键值集PrimaryKeySet中主键值对应的多行数据的SQL语句,以及应用生成的SQL语句。
下面举例说明应用如何改变矩阵。在应用改变矩阵的过程中,对于改变矩阵每一行,根据该行中的改变类型ChangeType、改变比特值ChangeBits、列值ColumnValue,生成一条能够改变数据记录主键值集PrimaryKeySet中主键值对应的多行数据的一条SQL语句并应用。针对以上例,最终生成的4条SQL语句是(假设表名为T1):
Update T1 set CNum=1000where C1 in(1,2,3)
Update T1 set CNum=2000,CChar=’Middle’where C2 in(4,5,6)
Update T1 set CNum=3000,CChar=’Middle’,CVarChar=’bbbbb’where C1 in(7,8,9)
Update T1 set CNum=4000,CChar=’High’,CVarChar=’ccccc’where C1 in(10,11,12)
如果按照现有技术中的方法,由于源数据表中的所有行都发生了改变,在数据应用时需要根据每一改变行生成一条对应的SQL语句并应用,对应本例需要生成并应用12条SQL语句。通过利用根据本公开的上述改变矩阵生成对应的SQL语句,对应本例只需要生成4条SQL语句并应用,从而提高了数据应用及同步的效率。
可选地,根据本公开的一个实施例,用于在数据同步中减少数据传输量的方法200还包括处理冲突的步骤206,其中,如果接收改变矩阵的一方本身也产生了改变矩阵,则确定接收的改变矩阵与接收改变矩阵的一方本身产生的改变矩阵中是否存在相同的主键值;如果存在相同的主键值,则通过冲突解决机制处理冲突之后再应用接收的改变矩阵。下面以服务器改变矩阵优先为例进行说明。应该理解,可以利用现有技术中的任何冲突解决机制。
假设服务器端产生的改变矩阵是:
ChangeType | ChangeBits | ColumnValue | PrimaryKeySet |
U | 100 | 0 | 1,2,3 |
U | 110 | 11 | 4,5,6 |
U | 111 | 211 | 7,8,9 |
U | 111 | 322 | 10,11,12 |
并假设客户端同时也产生数据变化,并产生了如下的变化矩阵,针对行1,3产生了冲突,服务器端改成了0,而客户端改成了2:
ChangeType | ChangeBits | ColumnVdlue | PrimaryKeySet |
U | 100 | 2 | 1,3 |
U | 111 | 222 | 13,14 |
这时在解决冲突时,由于服务器优先,即服务器端的变化将替代客户端的变化,那么客户端变化矩阵中的第一行将被忽略,那么客户端需要应用的变化矩阵仍然为:
ChangeType | ChangeBits | ColumnValue | PrimaryKeySet |
U | 100 | 0 | 1,2,3 |
U | 110 | 11 | 4,5,6 |
U | 111 | 211 | 7,8,9 |
U | 111 | 322 | 10,11,12 |
而服务器端需要应用的变化矩阵变为:
ChangeType | ChangeBits | ColumnValue | PrimaryKeySet |
U | 111 | 222 | 13,14 |
然后方法200在步骤210结束。
下面结合附图3说明根据本公开一个实施例的用于在数据同步中减少数据传输量的系统300。
根据本公开的一个实施例,用于在数据同步中减少数据传输量的系统300包括:第一识别部件302,被配置为识别改变后的源数据表中每个数据列中不同的数据值;编码部件304,被配置为对每个数据列中的数据值进行编码,其中对每一数据列来说不同的数据值具有不同的编码值;第二识别部件306,被配置为识别数据改变历史信息中不同的改变类型ChangeType和改变比特值ChangeBits;以及产生部件308,被配置为根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生改变矩阵。
根据本公开的一个实施例,其中产生部件进一步配置为:根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生不同的列值ColumnValue;以及根据不同的列值ColumnValue,产生对应的数据记录的主键值集PrimaryKeySet。
根据本公开的一个实施例,其中改变矩阵至少包括以下列:改变类型ChangeType、改变比特值ChangeBits、列值ColumnValue和数据记录主键值集PrimaryKeySet。
根据本公开的一个实施例,还包括:发送部件310,被配置为发送产生的改变矩阵。
下面结合附图4说明根据本公开另一实施例的用于在数据同步中减少数据传输量的系统400。
根据本公开的一个实施例,用于在数据同步中减少数据传输量的系统400包括:接收部件402,被配置为接收根据上面描述的用于减少数据传输量的方法产生的改变矩阵;以及应用部件404,被配置为应用接收的改变矩阵,其中应用部件404进一步被配置为在应用改变矩阵的过程中,对于改变矩阵每一行,根据该行中的改变类型ChangeType、改变比特值ChangeBits、列值ColumnValue,生成一条能够改变数据记录主键值集PrimaryKeySet中主键值对应的多行数据的一条SQL语句并应用生成的SQL语句。
根据本公开的一个实施例,其中应用部件404进一步配置为:如果接收改变矩阵的一方本身也产生了改变矩阵,则确定接收的改变矩阵与接收改变矩阵的一方本身产生的改变矩阵中是否存在相同的主键值;如果存在相同的主键值,则通过冲突解决机制处理冲突之后再应用接收的改变矩阵。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本公开的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本公开的说明的情况下运用他们的基本编程技能就能实现的。
因此,本公开的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本公开的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本公开,并且存储有这样的程序产品的存储介质也构成本公开。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。
还需要指出的是,在本公开的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
虽然已经详细说明了本公开及其优点,但是应当理解在不脱离由所附的权利要求所限定的本公开的精神和范围的情况下可以进行各种改变、替代和变换。而且,本申请的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者装置中还存在另外的相同要素。
Claims (12)
1.一种用于在数据同步中减少数据传输量的方法,包括:
识别改变后的源数据表中每个数据列中不同的数据值;
对每个数据列中的数据值进行编码,其中对每一数据列来说不同的数据值具有不同的编码值;
识别数据改变历史信息中不同的改变类型ChangeType和改变比特值ChangeBits;以及
根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生改变矩阵;
其中根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生改变矩阵包括:
根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生不同的列值ColumnValue;以及
根据不同的列值ColumnValue,产生对应的数据记录主键值集PrimaryKeySet。
2.根据权利要求1的方法,其中改变矩阵至少包括以下列:
改变类型ChangeType、改变比特值ChangeBits、列值ColumnValue和数据记录主键值集PrimaryKeySet。
3.根据权利要求1的方法,还包括:
发送产生的改变矩阵。
4.一种用于在数据同步中减少数据传输量的方法,包括:
接收根据权利要求1-3中任一权利要求的方法产生的改变矩阵;以及
应用接收的改变矩阵。
5.根据权利要求4的方法,其中应用接收的改变矩阵包括:
对于改变矩阵的每一行,根据该行中的改变类型ChangeType、改变比特值ChangeBits、列值ColumnValue,生成一条能够改变数据记录主键值集PrimaryKeySet中主键值对应的多行数据的SQL语句;
应用生成的SQL语句。
6.根据权利要求4的方法,还包括:
如果接收改变矩阵的一方本身也产生了改变矩阵,则确定接收的改变矩阵与接收改变矩阵的一方本身产生的改变矩阵中是否存在相同的主键值;
如果存在相同的主键值,则通过冲突解决机制处理冲突之后再应用接收的改变矩阵。
7.一种用于在数据同步中减少数据传输量的系统,包括:
第一识别部件,被配置为识别改变后的源数据表中每个数据列中不同的数据值;
编码部件,被配置为对每个数据列中的数据值进行编码,其中对每一数据列来说不同的数据值具有不同的编码值;
第二识别部件,被配置为识别数据改变历史信息中不同的改变类型ChangeType和改变比特值ChangeBits;以及
产生部件,被配置为根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生改变矩阵;
其中产生部件进一步配置为:
根据不同的改变类型ChangeType和改变比特值ChangeBits,利用每个数据列中不同的数据值的编码值产生不同的列值ColumnValue;以及
根据不同的列值ColumnValue,产生对应的数据记录主键值集PrimaryKeySet。
8.根据权利要求7的系统,其中改变矩阵至少包括以下列:
改变类型ChangeType、改变比特值ChangeBits、列值ColumnValue和数据记录主键值集PrimaryKeySet。
9.根据权利要求7的系统,还包括:
发送部件,被配置为发送产生的改变矩阵。
10.一种用于在数据同步中减少数据传输量的系统,包括:
接收部件,被配置为接收根据权利要求l-3中任一权利要求的方法产生的改变矩阵;以及
应用部件,被配置为应用接收的改变矩阵。
11.根据权利要求10的系统,其中应用部件进一步配置:
为对于改变矩阵的每一行,根据该行中的改变类型ChangeType、改变比特值ChangeBits、列值ColumnValue,生成一条能够改变数据记录主键值集PrimaryKeySet中主键值对应的多行数据的SQL语句;以及应用生成的SQL语句。
12.根据权利要求10的系统,其中应用部件进一步配置为:
如果接收改变矩阵的一方本身也产生了改变矩阵,则确定接收的改变矩阵与接收改变矩阵的一方本身产生的改变矩阵中是否存在相同的主键值;
如果存在相同的主键值,则通过冲突解决机制处理冲突之后再应用接收的改变矩阵。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010222614.6A CN102315930B (zh) | 2010-06-30 | 2010-06-30 | 用于在数据同步中减少数据传输量的方法和系统 |
US13/154,238 US8793214B2 (en) | 2010-06-30 | 2011-06-06 | Reducing an amount of data transfer in data synchronization |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010222614.6A CN102315930B (zh) | 2010-06-30 | 2010-06-30 | 用于在数据同步中减少数据传输量的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102315930A CN102315930A (zh) | 2012-01-11 |
CN102315930B true CN102315930B (zh) | 2014-07-23 |
Family
ID=45400478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010222614.6A Expired - Fee Related CN102315930B (zh) | 2010-06-30 | 2010-06-30 | 用于在数据同步中减少数据传输量的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8793214B2 (zh) |
CN (1) | CN102315930B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103237247A (zh) * | 2013-03-29 | 2013-08-07 | 东莞宇龙通信科技有限公司 | 一种终端与网络播放器同步显示的系统及方法 |
CN103258016B (zh) * | 2013-04-24 | 2016-05-18 | 山东中创软件工程股份有限公司 | 数据传输方法及系统 |
CN106464837A (zh) | 2014-03-05 | 2017-02-22 | 株式会社理光 | 数据发送系统、终端装置、程序和方法 |
US10671594B2 (en) * | 2014-09-17 | 2020-06-02 | Futurewei Technologies, Inc. | Statement based migration for adaptively building and updating a column store database from a row store database based on query demands using disparate database systems |
US20160078085A1 (en) * | 2014-09-17 | 2016-03-17 | Futurewei Technologies, Inc. | Method and system for adaptively building and updating a column store database from a row store database based on query demands |
CN106357767B (zh) * | 2016-09-14 | 2018-01-23 | 广东欧珀移动通信有限公司 | 一种信息同步的方法及服务器 |
CN106844574A (zh) * | 2017-01-05 | 2017-06-13 | 中国银联股份有限公司 | 一种远程数据同步的方法和装置 |
CN115242717B (zh) * | 2022-09-15 | 2022-12-09 | 四川汉唐云分布式存储技术有限公司 | 一种基于端侧计算的中心化存储系统及控制方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007087746A1 (fr) * | 2006-01-26 | 2007-08-09 | Huawei Technologies Co., Ltd. | Procédé, système et dispositif de synchronisation de données |
CN101106477A (zh) * | 2006-07-12 | 2008-01-16 | 中兴通讯股份有限公司 | 基于流水号生成增量数据的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5884325A (en) * | 1996-10-09 | 1999-03-16 | Oracle Corporation | System for synchronizing shared data between computers |
US6925476B1 (en) | 2000-08-17 | 2005-08-02 | Fusionone, Inc. | Updating application data including adding first change log to aggreagate change log comprising summary of changes |
US7415467B2 (en) | 2003-03-06 | 2008-08-19 | Ixion, Inc. | Database replication system |
KR101430517B1 (ko) * | 2008-01-31 | 2014-08-19 | 삼성전자주식회사 | 복수의 데이터 통신장치들 간의 데이터 동기 방법 |
US7991740B2 (en) | 2008-03-04 | 2011-08-02 | Apple Inc. | Synchronization server process |
US8745127B2 (en) | 2008-05-13 | 2014-06-03 | Microsoft Corporation | Blending single-master and multi-master data synchronization techniques |
-
2010
- 2010-06-30 CN CN201010222614.6A patent/CN102315930B/zh not_active Expired - Fee Related
-
2011
- 2011-06-06 US US13/154,238 patent/US8793214B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007087746A1 (fr) * | 2006-01-26 | 2007-08-09 | Huawei Technologies Co., Ltd. | Procédé, système et dispositif de synchronisation de données |
CN101106477A (zh) * | 2006-07-12 | 2008-01-16 | 中兴通讯股份有限公司 | 基于流水号生成增量数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
US8793214B2 (en) | 2014-07-29 |
US20120005161A1 (en) | 2012-01-05 |
CN102315930A (zh) | 2012-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102315930B (zh) | 用于在数据同步中减少数据传输量的方法和系统 | |
CN111339073A (zh) | 实时数据处理方法、装置、电子设备及可读存储介质 | |
CN103379140B (zh) | 一种日志处理规则同步方法及相关设备和系统 | |
CN106599104A (zh) | 一种基于redis集群的海量数据关联方法 | |
CN106557307B (zh) | 业务数据的处理方法及处理系统 | |
CN101551801A (zh) | 数据同步的方法和系统 | |
CN104142930A (zh) | 通用δ数据装载 | |
CN114430353B (zh) | 一种基于Modbus协议的数据采集方法、系统、装置及介质 | |
CN114900570B (zh) | 一种标准化数据采集传输方法及系统 | |
CN102855305B (zh) | 数据升级方法与装置 | |
CN113468175B (zh) | 数据压缩方法、装置、电子设备及存储介质 | |
CN113722533B (zh) | 信息推送方法、装置、电子设备及可读存储介质 | |
CN101604338A (zh) | 一种实现用户自定义的信息查询方法和装置 | |
CN113014618B (zh) | 消息处理方法、系统和电子设备 | |
CN112580079A (zh) | 权限配置方法、装置、电子设备及可读存储介质 | |
CN103051480B (zh) | 一种dn的存储方法及dn存储装置 | |
CN107678856B (zh) | 一种处理业务实体中增量信息的方法及装置 | |
CN108763127A (zh) | 源数据与目标数据相互转换的Modbus适配器的实现方法 | |
CN104750849A (zh) | 用于维护基于树形结构的目录关系的方法和系统 | |
CN104978379A (zh) | 一种应用程序资料站的搭建方法及装置 | |
CN112685456A (zh) | 一种用户访问数据的处理方法、装置及计算机系统 | |
WO2021133448A1 (en) | Edge table representation of processes | |
CN113076365A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN110826151A (zh) | 电动汽车模型设计方法 | |
CN112597170B (zh) | Redis数据库的优化方法与系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140723 Termination date: 20200630 |
|
CF01 | Termination of patent right due to non-payment of annual fee |