CN107291710B - 一种用于分布式数据库系统的更新数据的方法及装置 - Google Patents
一种用于分布式数据库系统的更新数据的方法及装置 Download PDFInfo
- Publication number
- CN107291710B CN107291710B CN201610191763.8A CN201610191763A CN107291710B CN 107291710 B CN107291710 B CN 107291710B CN 201610191763 A CN201610191763 A CN 201610191763A CN 107291710 B CN107291710 B CN 107291710B
- Authority
- CN
- China
- Prior art keywords
- data
- hash table
- line
- server
- database system
- 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
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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- 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/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
-
- 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/275—Synchronous replication
-
- 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/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种用于分布式数据库系统的更新数据的方法及装置,所述方法包括:获取每台服务器中保存的数据表,并读取每个数据表中的每一行数据;针对所读取的每一行数据,判断自身保存的哈希表中是否存在该行数据对应的关键码;如果是,读取数据表中该行数据的第一版本号,判断第一版本号是否大于哈希表中保存的该行数据对应的第二版本号;如果是,将该行数据更新到哈希表中,并更新该行数据对应的版本信息;如果否,将该行数据写入哈希表中,并写入该行数据对应的关键码以及版本信息;将哈希表发送到主服务器,以使每台服务器根据主服务器接收的哈希表进行数据恢复。本发明实施例能够恢复分布式数据库系统中最新的数据。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种用于分布式数据库系统的更新数据的方法及装置。
背景技术
随着计算机技术的普及,很多重要数据都是保存在电子设备中的。人们对电子设备的使用越多,对性能的要求也越高。分布式数据库系统的出现,可以有效分散数据库服务对于单台计算机设备的压力,提高了数据库服务的整体性能,也带来了更好的数据安全性保证。
分布式数据库系统,通过组建多台数据库服务器,实现数据库系统的整体读写性能的提升,为高并发读写数据库应用提供了技术支撑,在大型交互式网站、银行等后台都得到了广泛的应用。
既然分布式数据库系统的每台数据库服务器都保存了数据,就需要保证各数据库服务器中保存的数据的一致性。然而,在出现系统异常、异常掉电等故障的时候,可能导致各分布式服务器中数据不一致的情况。因此,需要从分布式数据库系统中恢复出最新的完整的数据。
发明内容
本发明实施例的目的在于提供一种用于分布式数据库系统的更新数据的方法及装置,以恢复分布式数据库系统中最新的数据。具体技术方案如下:
第一方面,本发明实施例提供了一种用于分布式数据库系统的更新数据的方法,应用于分布式数据库系统中的维护有哈希表的服务器,其中所述哈希表中针对数据表中每一行数据保存有该行数据对应的关键码以及该行数据的版本信息,所述方法包括:
获取所述分布式数据库系统中的每台服务器中保存的数据表,并针对获取的每个数据表,读取该数据表中的每一行数据;
针对所读取的每一行数据,判断自身保存的哈希表中是否存在该行数据对应的关键码;
如果是,读取所述数据表中该行数据的第一版本号,判断所述第一版本号是否大于所述哈希表中保存的该行数据对应的第二版本号;如果是,将该行数据更新到所述哈希表中,并更新该行数据对应的版本信息;
如果否,将该行数据写入所述哈希表中,并写入该行数据对应的关键码以及版本信息;
将所述哈希表发送到主服务器,以使所述分布式数据库系统中的每台服务器根据所述主服务器接收的哈希表进行数据恢复。
进一步地,所述针对获取的每个数据表,读取该数据表中的每一行数据,包括:
针对每个数据表,采用数据分片的方式,读取该数据表中的每一行数据。
进一步地,所述写入该行数据对应的关键码,包括:
将数据表中该行数据的主键作为哈希表中该行数据对应的关键码,写入到所述哈希表中。
进一步地,所述将该行数据写入所述哈希表之后,所述方法还包括:
在所述哈希表中记录该行数据的出现频次。
进一步地,当判断所述第一版本号等于所述第二版本号时,所述方法还包括:
将所述哈希表中该行数据的出现频次加1。
进一步地,所述将所述哈希表发送到主服务器之前,所述方法还包括:
针对所述哈希表中每行数据的出现频次,判断该行数据的出现频次是否小于预定阈值,如果是,删除该行数据。
第二方面,本发明实施例提供了一种用于分布式数据库系统的更新数据的装置,应用于分布式数据库系统中的存储有哈希表的服务器,其中所述哈希表中针对数据表中每一行数据保存有该行数据对应的关键码以及该行数据的版本信息,所述装置包括:
获取模块,用于获取所述分布式数据库系统中的每台服务器中保存的数据表,并针对获取的每个数据表,读取该数据表中的每一行数据;
判断模块,用于针对所读取的每一行数据,判断自身保存的哈希表中是否存在该行数据对应的关键码;
第一处理模块,用于当所述判断模块判断结果为是时,读取所述数据表中该行数据的第一版本号,判断所述第一版本号是否大于所述哈希表中保存的该行数据对应的第二版本号;如果是,将该行数据更新到所述哈希表中,并更新该行数据对应的版本信息;
第二处理模块,用于当所述判断模块判断结果为否时,将该行数据写入所述哈希表中,并写入该行数据对应的关键码以及版本信息;
发送模块,用于将所述哈希表发送到主服务器,以使所述分布式数据库系统中的每台服务器根据所述主服务器接收的哈希表进行数据恢复。
进一步地,所述获取模块,具体用于针对每个数据表,采用数据分片的方式,读取该数据表中的每一行数据。
进一步地,所述第二处理模块,具体用于将数据表中该行数据的主键作为哈希表中该行数据对应的关键码,写入到所述哈希表中。
进一步地,所述装置还包括:
记录模块,用于在所述第一处理模块或第二处理模块将该行数据写入所述哈希表之后,在所述哈希表中记录该行数据的出现频次。
进一步地,所述装置还包括:
执行模块,用于当所述第一处理模块判断所述第一版本号等于所述第二版本号时,将所述哈希表中该行数据的出现频次加1。
进一步地,所述装置还包括:
删除模块,用于在所述发送模块将所述哈希表发送到主服务器之前,针对所述哈希表中每行数据的出现频次,判断该行数据的出现频次是否小于预定阈值,如果是,删除该行数据。
本发明实施例提供了一种用于分布式数据库系统的更新数据的方法及装置,应用于分布式数据库系统中的存储有哈希表的服务器,所述方法包括:获取所述分布式数据库系统中的每台服务器中保存的数据表,并针对获取的每个数据表,读取该数据表中的每一行数据;针对所读取的每一行数据,判断自身保存的哈希表中是否存在该行数据对应的关键码;如果是,读取所述数据表中该行数据的第一版本号,判断所述第一版本号是否大于所述哈希表中保存的该行数据对应的第二版本号;如果是,将该行数据更新到所述哈希表中,并更新该行数据对应的版本信息;如果否,将该行数据写入所述哈希表中,并写入该行数据对应的关键码以及版本信息;将所述哈希表发送到主服务器,以使所述分布式数据库系统中的每台服务器根据所述主服务器接收的哈希表进行数据恢复。本发明实施例中,能够根据分布式数据库系统中各服务器中的数据表构建包含该分布式数据库系统中完整的最新的数据的哈希表,并且可以将该哈希表发送到主服务器,以使分布式数据库系统中的每台服务器根据主服务器接收的哈希表进行数据恢复,因此,能够在各服务器中恢复该分布式数据库系统中最新的完整的数据。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种用于分布式数据库系统的更新数据的方法的流程图;
图2为本发明实施例提供的一种用于分布式数据库系统的更新数据的方法的另一流程图;
图3为本发明实施例提供的一种用于分布式数据库系统的更新数据的装置的结构示意图;
图4为本发明实施例提供的一种用于分布式数据库系统的更新数据的装置的另一结构示意图。
具体实施方式
为了恢复分布式数据库系统中最新的数据,本发明实施例提供了一种用于分布式数据库系统的更新数据的方法及装置。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了恢复分布式数据库系统中最新的数据,本发明实施例提供了一种用于分布式数据库系统的更新数据的方法过程,如图1所示,该过程包括以下步骤:
S101,获取所述分布式数据库系统中的每台服务器中保存的数据表,并针对获取的每个数据表,读取该数据表中的每一行数据。
该方法可以应用于分布式数据库系统中的维护有哈希表的服务器。其中,该服务器可以是分布式数据库系统中的任一服务器。为了便于描述,在本发明实施例中,可以将保存有哈希表的服务器称为目标服务器。
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。关键码在哈希表中不会重复存在。哈希表可以在有限步骤内查找到指定的关键码值,哈希表的查找时间复杂度为常数级别,查找效率很高。
在本发明实施例中,为了恢复分布式数据库系统中最新的数据,可以在分布式数据库系统的目标服务器的内存中构建一个哈希表,以在该哈希表中保存该分布式数据库系统中最新的完整的数据。例如,可以通过目标服务器访问分布式数据库系统中的每一台服务器,获取各服务器中的数据表中的数据,并对比得到哈希表中保存的该分布式数据库系统中最新的完整的数据。
数据表是服务器中一个非常重要的对象,是其他对象的基础,是维护字段、关键字、主键等的载体。根据信息的分类情况,一个服务器中可能包含若干个数据表。数据表中的每一行可以叫做一条“记录”,每一个记录包含这行中的所有信息。数据表中的每一列称为一个字段,每个字段都有相应的描述信息,如数据类型、数据宽度等。主键(primary key,主关键字)是数据表中一个或多个字段,它的值用于唯一地标识表中的某一条记录,主键在数据表中不会重复存在。结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构,结构体类型的对象包含了这些相同类型或者不同类型的数据。
在本发明实施例中,可以将目标服务器中的哈希表的关键码定义为数据表中数据行的主键,哈希表的码值定义为数据行所有字段组成的结构体。
在本发明实施例中,为了在哈希表中保存分布式数据库系统中最新的完整的数据,目标服务器可以首先获取该分布式数据库系统中的每台服务器中保存的数据表,并针对获取的每个数据表,读取该数据表中的每一行数据,以将这些数据中的部分或全部保存到哈希表中,得到该分布式数据库系统中最新的完整的数据。
具体地,目标服务器可以依次获取分布式数据库系统中的每台服务器中保存的数据表,并针对获取的每个数据表,同时读取该数据表中的每一行数据。
可选地,在实际应用中,数据表的规模可能比较大,如一个数据表可能有100万行数据。因此,同时读取数据表中每一行数据,可能会耗费较长的时间(如,mysql读取完成100万行数据大概需要40秒)。而一次读取一行数据,则数据表数据量大的时候,读取数据的流程会非常耗时,如读取100万条数据可能需要4分钟左右。
因此,在本发明实施例中,可以针对每个数据表,采用数据分片的方式,读取该数据表中的每一行数据。
在数据表数据量较大时候,一次全部读取数据表的数据会变得不可能完成。采用一些读取的算法,使得每次读取数据表的部分数据,经过多次读取,最终读取到数据表的完整数据,叫做数据分片。
具体地,可以针对每个数据表,根据该数据表结构的复杂程度确定分片大小,每次读取固定数量行数(如1万行、2万行、3万行等)的分片数据,直到全部读取完该数据表中的数据。
通过采用数据分片的方式来读取各数据表中的数据,能够提高数据表中的数据读取效率。
S102,针对所读取的每一行数据,判断自身保存的哈希表中是否存在该行数据对应的关键码;如果是,执行步骤S103;如果否,执行步骤S105。
当读取到每个数据表中的每一行数据后,目标服务器可以针对所读取的每一行数据,判断自身保存的哈希表中是否存在该行数据对应的关键码。
可以理解,在正常情况下,分布式数据库系统中每台服务器的数据表中保存的数据应该是相同的,因此,对于某一个数据表中的某一行数据,目标服务器可能从其他服务器的数据表中将该行数据写入哈希表中。而在哈希表中保存分布式数据库系统中最新的完整的数据时,对于相同的数据,只需要保存一次。
因此,在本发明实施例中,目标服务器针对获取的每一行数据,可以判断自身保存的哈希表中是否存在该行数据对应的关键码,以确定哈希表中是否已保存有该行数据。
具体地,目标服务器可以在自身保存的哈希表中各行数据的关键码中,查找是否存在与数据表中该行数据的主键相同的关键码,若是,则确定自身保存的哈希表中存在该行数据对应的关键码,否则,确定自身保存的哈希表中不存在该行数据对应的关键码。
S103,当自身保存的哈希表中存在该行数据对应的关键码时,读取所述数据表中该行数据的第一版本号,判断所述第一版本号是否大于所述哈希表中保存的该行数据对应的第二版本号;如果是,执行步骤S104,将该行数据更新到所述哈希表中,并更新该行数据对应的版本信息;如果否,不将该行数据写入哈希表中。
当目标服务器确定自身保存的哈希表中存在该行数据对应的关键码时,可以表明哈希表中已经保存有该行数据。但是,由于在各服务器的数据表中,对于任一行数据,当对其进行更新时,其主键不会改变。因此,仅根据哈希表中存在该行数据对应的关键码不能确定哈希表中保存的该行数据与数据表中的该行数据相同。
因此,在本发明实施例中,可以在各服务器的数据表中,针对每一行数据保存其对应的版本号,以用来标识该行数据的更新次数。并且,在哈希表中也保存有每行数据对应的版本信息。具体地,在哈希表中保存的每行数据的版本信息可以为将该行数据写入哈希表时,该行数据在数据表中的版本号。
当目标服务器确定哈希表中已经保存有该行数据时,可以进一步读取数据表中该行数据的第一版本号,并判断该第一版本号是否大于哈希表中保存的该行数据对应的第二版本号。
当第一版本号大于第二版本号时,可以表明数据表中保存的该行数据为最新的数据,这种情况下,可以将该行数据更新到哈希表中。
当第一版本号小于或等于第二版本号时,可以表明哈希表中保存的该行数据已经是最新的数据,这种情况下,可以不将该行数据写入哈希表中。
S104,将该行数据更新到所述哈希表中,并更新该行数据对应的版本信息。
当目标服务器确定第一版本号大于第二版本号时,可以将该行数据更新到哈希表中,并更新该行数据对应的版本信息。
具体地,可以将哈希表中的该行数据替换为数据表中该行数据,并将数据表该行数据的版本号作为哈希表中该行数据对应的版本号,更新到哈希表中。
S105,当自身保存的哈希表中不存在该行数据对应的关键码时,将该行数据写入所述哈希表中,并写入该行数据对应的关键码以及版本信息。
当目标服务器确定自身保存的哈希表中不存在该行数据对应的关键码时,可以表明哈希表中未保存该行数据。这种情况下,可以将该行数据写入哈希表中,并写入该行数据对应的关键码以及版本信息。
具体地,在写入该行数据对应的关键码时,可以将数据表中该行数据的主键作为哈希表中该行数据对应的关键码,写入到哈希表中。
S106,将所述哈希表发送到主服务器,以使所述分布式数据库系统中的每台服务器根据所述主服务器接收的哈希表进行数据恢复。
通过执行上述步骤S101-S105,目标服务器的哈希表中即可保存分布式数据库系统中最新的完整的数据。最后,为了使各个服务器中均保存该最新的完整的数据,以保证各服务器中数据的一致性,目标数据库可以将哈希表发送到主服务器,以使所述分布式数据库系统中的每台服务器根据所述主服务器接收的哈希表进行数据恢复。
在分布式数据库系统中,所有的服务器可以包括一个主服务器以及其他从服务器,并且,从服务器可以访问主服务器,以根据主服务器中的数据表更新其自身的数据表。
因此,在本实施例中,目标服务器可以将哈希表发送给主服务器。主服务器保存哈希表后,可以根据哈希表将最新数据恢复到自身的数据表中。然后从服务器可以根据主服务器来同步最新数据,从而可以实现每一台服务器中保存的数据都为该分布式数据库系统中最新的完整的数据。
本发明实施例提供的方法,能够根据分布式数据库系统中各服务器中的数据表构建包含该分布式数据库系统中完整的最新数据的哈希表,并且可以将该哈希表发送到主服务器,以使分布式数据库系统中的每台服务器根据主服务器接收的哈希表进行数据恢复,因此,能够在各服务器中恢复该分布式数据库系统中最新的数据。
更进一步地,在实际应用中,正常情况下,分布式数据库系统中各服务器的数据表保存的数据均为用户主动更新的数据。但是,当某一台或几台服务器系统异常或出现安全故障时,其数据表中可能会新增一些异常数据。这种情况下,该数据可能只保存在这一台或几台服务器的数据表中,而如果将该数据写入目标服务器的哈希表中,该数据就会进一步被更新到每一台服务器的数据表中。因此,在进行数据查询等处理时,可能导致数据查询结果不准确。
在本发明实施例中,为了保证各服务器的数据表中数据的准确性,避免将异常数据写入每一台服务器,目标服务器在将任一服务器的数据表中的一行数据写入哈希表之后,可以在哈希表中记录该行数据的出现频次,例如,可以将该行数据的出现频次记为1,以表明该行数据在数据表中出现了一次。
并且,可以根据其他各服务器的数据表中是否存在该行数据,来修改该行数据的出现频次,以标记该行数据在各服务器中出现的次数,进一步可以判断该行数据是否为异常数据。
因此,如图2所示,本发明实施例提供的一种用于分布式数据库系统的更新数据的方法,在步骤S103之后,当判断得到第一版本号等于第二版本号时,该方法还可以包括:
S107,将所述哈希表中该行数据的出现频次加1。
在本发明实施例中,当针对每一行数据,判断数据表中该行数据的第一版本号等于哈希表中该行数据对应的第二版本号时,可以表明哈希表中保存的该行数据与数据表中的该行数据相同。因此,目标服务器可以将哈希表中该行数据的出现频次加1。
当针对每台服务器的数据表中的每一行数据,都与哈希表中保存的数据进行对比之后,哈希表中每行数据的出现频次即为该行数据在分布式数据库系统中各服务器中出现的总次数。
本发明实施例提供的方法,在步骤S104、步骤S105或步骤S107之后,步骤S106之前,即将各数据表中的数据写入哈希表后,将哈希表发送到主服务器之前,该方法还可以包括:
S108,针对所述哈希表中每行数据的出现频次,判断该行数据的出现频次是否小于预定阈值,如果是,删除该行数据。
在本实施例中,在将哈希表发送给主服务器之前,为了避免将异常数据更新到每一台服务器的数据表中,目标服务器可以针对哈希表中每行数据的出现频次,判断该行数据的出现频次是否小于预定阈值,如果是,删除该行数据。
可选地,针对不同的分布式数据库系统,上述预定阈值可以设置为相同的值,如2、3、4等。或者,针对不同的分布式数据库系统,可以根据该系统中的总服务器数量,来确定上述预定阈值。如,当总服务器数量较大时,可以将该预定阈值设置为较大的数值(如3、4、5等);当总服务器数量较小时,可以将该预定阈值设置为较小的数值(如1、2、3等)。
本方案中,在将任一服务器的数据表中的一行数据写入哈希表之后,可以在哈希表中记录该行数据的出现频次,并且,可以根据其他服务器的数据表中的是否存在该行数据,来修改该行数据的出现频次,在将哈希表发送给主服务器之前,可以将出现频次小于预定阈值的数据删除,因此,能够避免将异常数据写入各服务器中,进一步地,能够提高数据处理结果的准确性。
相应于上面的方法实施例,本发明实施例还提供了相应的装置实施例。
图3为本发明实施例提供的一种用于分布式数据库系统的更新数据的装置,应用于分布式数据库系统中的存储有哈希表的服务器,其中所述哈希表中针对数据表中每一行数据保存有该行数据对应的关键码以及该行数据的版本信息,所述装置包括:
获取模块310,用于获取所述分布式数据库系统中的每台服务器中保存的数据表,并针对获取的每个数据表,读取该数据表中的每一行数据;
判断模块320,用于针对所读取的每一行数据,判断自身保存的哈希表中是否存在该行数据对应的关键码;
第一处理模块330,用于当所述判断模块判断结果为是时,读取所述数据表中该行数据的第一版本号,判断所述第一版本号是否大于所述哈希表中保存的该行数据对应的第二版本号;如果是,将该行数据更新到所述哈希表中,并更新该行数据对应的版本信息;
第二处理模块340,用于当所述判断模块判断结果为否时,将该行数据写入所述哈希表中,并写入该行数据对应的关键码以及版本信息;
发送模块350,用于将所述哈希表发送到主服务器,以使所述分布式数据库系统中的每台服务器根据所述主服务器接收的哈希表进行数据恢复。
本发明实施例提供的装置,能够根据分布式数据库系统中各服务器中的数据表构建包含该分布式数据库系统中完整的最新数据的哈希表,并且可以将该哈希表发送到主服务器,以使分布式数据库系统中的每台服务器根据主服务器接收的哈希表进行数据恢复,因此,能够在各服务器中恢复该分布式数据库系统中最新的数据。
进一步地,所述获取模块310,具体用于针对每个数据表,采用数据分片的方式,读取该数据表中的每一行数据。
进一步地,所述第二处理模块340,具体用于将数据表中该行数据的主键作为哈希表中该行数据对应的关键码,写入到所述哈希表中。
进一步地,所述装置还包括:
记录模块(图中未示出),用于在所述第一处理模块330或第二处理模块340将该行数据写入所述哈希表之后,在所述哈希表中记录该行数据的出现频次。
进一步地,如图4所示,本发明实施例提供的一种用于分布式数据库系统的更新数据的装置还包括:
执行模块360,用于当所述第一处理模块330判断所述第一版本号等于所述第二版本号时,将所述哈希表中该行数据的出现频次加1。
进一步地,所述装置还包括:
删除模块370,用于在所述发送模块350将所述哈希表发送到主服务器之前,针对所述哈希表中每行数据的出现频次,判断该行数据的出现频次是否小于预定阈值,如果是,删除该行数据。
本方案中,在将任一服务器的数据表中的一行数据写入哈希表之后,可以在哈希表中记录该行数据的出现频次,并且,可以根据其他服务器的数据表中的是否存在该行数据,来修改该行数据的出现频次,在将哈希表发送给主服务器之前,可以将出现频次小于预定阈值的数据删除,因此,能够避免将异常数据写入各服务器中,进一步地,能够提高数据处理结果的准确性。
本发明实施例提供了一种用于分布式数据库系统的更新数据的方法及装置,应用于分布式数据库系统中的存储有哈希表的服务器,所述方法包括:获取所述分布式数据库系统中的每台服务器中保存的数据表,并针对获取的每个数据表,读取该数据表中的每一行数据;针对所读取的每一行数据,判断自身保存的哈希表中是否存在该行数据对应的关键码;如果是,读取所述数据表中该行数据的第一版本号,判断所述第一版本号是否大于所述哈希表中保存的该行数据对应的第二版本号;如果是,将该行数据更新到所述哈希表中,并更新该行数据对应的版本信息;如果否,将该行数据写入所述哈希表中,并写入该行数据对应的关键码以及版本信息;将所述哈希表发送到主服务器,以使所述分布式数据库系统中的每台服务器根据所述主服务器接收的哈希表进行数据恢复。本发明实施例中,能够根据分布式数据库系统中各服务器中的数据表构建包含该分布式数据库系统中完整的最新数据的哈希表,并且可以将该哈希表发送到主服务器,以使分布式数据库系统中的每台服务器根据主服务器接收的哈希表进行数据恢复,因此,能够在各服务器中恢复该分布式数据库系统中最新的完整的数据。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种用于分布式数据库系统的更新数据的方法,其特征在于,应用于分布式数据库系统中的维护有哈希表的服务器,其中所述哈希表中针对数据表中每一行数据保存有该行数据对应的关键码以及该行数据的版本信息,所述方法包括:
获取所述分布式数据库系统中的每台服务器中保存的数据表,并针对获取的每个数据表,读取该数据表中的每一行数据;
针对所读取的每一行数据,判断自身保存的哈希表中是否存在该行数据对应的关键码;
当所述自身保存的哈希表中存在该行数据对应的关键码时,读取所述数据表中该行数据的第一版本号,判断所述第一版本号是否大于所述哈希表中保存的该行数据对应的第二版本号;当所述第一版本号大于所述第二版本号时,将该行数据更新到所述哈希表中,并更新该行数据对应的版本信息;
当所述自身保存的哈希表中不存在该行数据对应的关键码时,将该行数据写入所述哈希表中,并写入该行数据对应的关键码以及版本信息;
将所述哈希表发送到主服务器,以使所述分布式数据库系统中的每台服务器根据所述主服务器接收的哈希表进行数据恢复。
2.根据权利要求1所述的方法,其特征在于,所述针对获取的每个数据表,读取该数据表中的每一行数据,包括:
针对每个数据表,采用数据分片的方式,读取该数据表中的每一行数据。
3.根据权利要求1所述的方法,其特征在于,所述写入该行数据对应的关键码,包括:
将数据表中该行数据的主键作为哈希表中该行数据对应的关键码,写入到所述哈希表中。
4.根据权利要求1-3任一所述的方法,其特征在于,所述将该行数据写入所述哈希表之后,所述方法还包括:
在所述哈希表中记录该行数据的出现频次。
5.根据权利要求4所述的方法,其特征在于,当判断所述第一版本号等于所述第二版本号时,所述方法还包括:
将所述哈希表中该行数据的出现频次加1。
6.根据权利要求5所述的方法,其特征在于,所述将所述哈希表发送到主服务器之前,所述方法还包括:
针对所述哈希表中每行数据的出现频次,判断该行数据的出现频次是否小于预定阈值,如果是,删除该行数据。
7.一种用于分布式数据库系统的更新数据的装置,其特征在于,应用于分布式数据库系统中的存储有哈希表的服务器,其中所述哈希表中针对数据表中每一行数据保存有该行数据对应的关键码以及该行数据的版本信息,所述装置包括:
获取模块,用于获取所述分布式数据库系统中的每台服务器中保存的数据表,并针对获取的每个数据表,读取该数据表中的每一行数据;
判断模块,用于针对所读取的每一行数据,判断自身保存的哈希表中是否存在该行数据对应的关键码;
第一处理模块,用于当所述判断模块判断结果为所述自身保存的哈希表中存在该行数据对应的关键码时,读取所述数据表中该行数据的第一版本号,判断所述第一版本号是否大于所述哈希表中保存的该行数据对应的第二版本号;当所述第一版本号大于所述第二版本号时,将该行数据更新到所述哈希表中,并更新该行数据对应的版本信息;
第二处理模块,用于当所述判断模块判断结果为所述自身保存的哈希表中不存在该行数据对应的关键码时,将该行数据写入所述哈希表中,并写入该行数据对应的关键码以及版本信息;
发送模块,用于将所述哈希表发送到主服务器,以使所述分布式数据库系统中的每台服务器根据所述主服务器接收的哈希表进行数据恢复。
8.根据权利要求7所述的装置,其特征在于,所述获取模块,具体用于针对每个数据表,采用数据分片的方式,读取该数据表中的每一行数据。
9.根据权利要求7所述的装置,其特征在于,所述第二处理模块,具体用于将数据表中该行数据的主键作为哈希表中该行数据对应的关键码,写入到所述哈希表中。
10.根据权利要求7-9任一所述的装置,其特征在于,所述装置还包括:
记录模块,用于在所述第一处理模块或第二处理模块将该行数据写入所述哈希表之后,在所述哈希表中记录该行数据的出现频次。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
执行模块,用于当所述第一处理模块判断所述第一版本号等于所述第二版本号时,将所述哈希表中该行数据的出现频次加1。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
删除模块,用于在所述发送模块将所述哈希表发送到主服务器之前,针对所述哈希表中每行数据的出现频次,判断该行数据的出现频次是否小于预定阈值,如果是,删除该行数据。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610191763.8A CN107291710B (zh) | 2016-03-30 | 2016-03-30 | 一种用于分布式数据库系统的更新数据的方法及装置 |
PCT/CN2016/104690 WO2017166815A1 (zh) | 2016-03-30 | 2016-11-04 | 一种用于分布式数据库系统的更新数据的方法及装置 |
US16/089,949 US11176110B2 (en) | 2016-03-30 | 2016-11-04 | Data updating method and device for a distributed database system |
EP16896584.6A EP3438845A1 (en) | 2016-03-30 | 2016-11-04 | Data updating method and device for a distributed database system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610191763.8A CN107291710B (zh) | 2016-03-30 | 2016-03-30 | 一种用于分布式数据库系统的更新数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107291710A CN107291710A (zh) | 2017-10-24 |
CN107291710B true CN107291710B (zh) | 2020-07-03 |
Family
ID=59963382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610191763.8A Active CN107291710B (zh) | 2016-03-30 | 2016-03-30 | 一种用于分布式数据库系统的更新数据的方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11176110B2 (zh) |
EP (1) | EP3438845A1 (zh) |
CN (1) | CN107291710B (zh) |
WO (1) | WO2017166815A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829785A (zh) * | 2018-05-31 | 2018-11-16 | 沈文策 | 数据库中故障表的修复方法、装置、电子设备及存储介质 |
CN109582666A (zh) * | 2018-09-29 | 2019-04-05 | 阿里巴巴集团控股有限公司 | 数据主键生成方法、装置、电子设备及存储介质 |
CN109739684B (zh) * | 2018-11-20 | 2020-03-13 | 清华大学 | 基于向量时钟的分布式键值数据库的副本修复方法与装置 |
CN110377611B (zh) * | 2019-07-12 | 2022-07-15 | 北京三快在线科技有限公司 | 积分排名的方法及装置 |
CN113704274B (zh) * | 2020-05-20 | 2024-03-19 | 中国移动通信集团福建有限公司 | 一种数据的读取方法及电子设备 |
CN111400334B (zh) * | 2020-06-04 | 2020-10-09 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储介质及电子装置 |
CN111506668B (zh) * | 2020-07-01 | 2024-02-02 | 西安安森智能仪器股份有限公司 | 机器人集群智能化数据同步方法及系统 |
CN115987759B (zh) * | 2023-02-17 | 2023-06-23 | 天翼云科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369923A (zh) * | 2008-09-24 | 2009-02-18 | 中兴通讯股份有限公司 | 一种使用分布式哈希表提高集群web服务性能的方法 |
CN102426611A (zh) * | 2012-01-13 | 2012-04-25 | 广州从兴电子开发有限公司 | 一种数据库同步方法及装置 |
EP2806355A1 (en) * | 2013-05-21 | 2014-11-26 | Baker Hughes Incorporated | Synchronization and reconciliation through identification |
WO2015108922A1 (en) * | 2014-01-14 | 2015-07-23 | Baker Hughes Incorporated | Loose coupling of metadata and actual data |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5924096A (en) | 1997-10-15 | 1999-07-13 | Novell, Inc. | Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand |
US6581075B1 (en) * | 2000-12-28 | 2003-06-17 | Nortel Networks Limited | System and method for database synchronization |
US7478096B2 (en) * | 2003-02-26 | 2009-01-13 | Burnside Acquisition, Llc | History preservation in a computer storage system |
US7457832B2 (en) * | 2004-08-31 | 2008-11-25 | Microsoft Corporation | Verifying dynamically generated operations on a data store |
US7788225B2 (en) * | 2005-03-18 | 2010-08-31 | Oracle International Corporation | Apparatus and method for identifying asynchronous data in redundant data stores and for re-synchronizing same |
US20090144220A1 (en) * | 2007-11-30 | 2009-06-04 | Yahoo! Inc. | System for storing distributed hashtables |
US8712964B2 (en) * | 2008-12-02 | 2014-04-29 | United States Postal Services | Systems and methods for updating a data store using a transaction store |
CN101464895A (zh) * | 2009-01-21 | 2009-06-24 | 阿里巴巴集团控股有限公司 | 一种更新内存数据的方法、系统和装置 |
US8799231B2 (en) | 2010-08-30 | 2014-08-05 | Nasuni Corporation | Versioned file system with fast restore |
US9037618B2 (en) | 2011-03-31 | 2015-05-19 | Novell, Inc. | Distributed, unified file system operations |
US8346810B2 (en) * | 2011-05-13 | 2013-01-01 | Simplivity Corporation | Reference count propagation |
US8745095B2 (en) * | 2011-08-12 | 2014-06-03 | Nexenta Systems, Inc. | Systems and methods for scalable object storage |
US20130268567A1 (en) * | 2012-04-05 | 2013-10-10 | Cover-All Technologies, Inc. | System And Method For Updating Slowly Changing Dimensions |
US9031911B2 (en) | 2012-06-05 | 2015-05-12 | International Business Machines Corporation | Preserving past states of file system nodes |
US10303682B2 (en) * | 2013-09-21 | 2019-05-28 | Oracle International Corporation | Automatic verification and triage of query results |
CN104899257B (zh) | 2015-05-18 | 2018-04-13 | 北京京东尚科信息技术有限公司 | 分布式数据仓库中的数据更新方法和装置 |
-
2016
- 2016-03-30 CN CN201610191763.8A patent/CN107291710B/zh active Active
- 2016-11-04 WO PCT/CN2016/104690 patent/WO2017166815A1/zh active Application Filing
- 2016-11-04 US US16/089,949 patent/US11176110B2/en active Active
- 2016-11-04 EP EP16896584.6A patent/EP3438845A1/en not_active Ceased
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369923A (zh) * | 2008-09-24 | 2009-02-18 | 中兴通讯股份有限公司 | 一种使用分布式哈希表提高集群web服务性能的方法 |
CN102426611A (zh) * | 2012-01-13 | 2012-04-25 | 广州从兴电子开发有限公司 | 一种数据库同步方法及装置 |
EP2806355A1 (en) * | 2013-05-21 | 2014-11-26 | Baker Hughes Incorporated | Synchronization and reconciliation through identification |
WO2015108922A1 (en) * | 2014-01-14 | 2015-07-23 | Baker Hughes Incorporated | Loose coupling of metadata and actual data |
Also Published As
Publication number | Publication date |
---|---|
US11176110B2 (en) | 2021-11-16 |
EP3438845A4 (en) | 2019-02-06 |
EP3438845A1 (en) | 2019-02-06 |
WO2017166815A1 (zh) | 2017-10-05 |
CN107291710A (zh) | 2017-10-24 |
US20190121793A1 (en) | 2019-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291710B (zh) | 一种用于分布式数据库系统的更新数据的方法及装置 | |
US20220327026A1 (en) | Partial database restoration | |
CN103902623B (zh) | 用于在存储系统上存取文件的方法和系统 | |
US8224875B1 (en) | Systems and methods for removing unreferenced data segments from deduplicated data systems | |
US7647449B1 (en) | Method, system, and computer readable medium for maintaining the order of write-commands issued to a data storage | |
US8396840B1 (en) | System and method for targeted consistency improvement in a distributed storage system | |
US20140297592A1 (en) | Computer-readable medium storing program and version control method | |
US6675180B2 (en) | Data updating apparatus that performs quick restoration processing | |
CN110162525B (zh) | 基于b+树的读写冲突解决方法、装置及存储介质 | |
US10776345B2 (en) | Efficiently updating a secondary index associated with a log-structured merge-tree database | |
US8468134B1 (en) | System and method for measuring consistency within a distributed storage system | |
US10013312B2 (en) | Method and system for a safe archiving of data | |
CN104572920A (zh) | 一种数据整理方法和装置 | |
CN110888837B (zh) | 对象存储小文件归并方法及装置 | |
CN109947730B (zh) | 元数据恢复方法、装置、分布式文件系统及可读存储介质 | |
CN108604201B (zh) | 一种快照回滚方法、装置、存储控制器和系统 | |
CN110352410A (zh) | 跟踪索引节点的访问模式以及预提取索引节点 | |
CN114840487A (zh) | 分布式文件系统的元数据管理方法和装置 | |
CN109542860B (zh) | 基于hdfs的业务数据管理方法、终端设备 | |
CN105354149A (zh) | 一种内存数据查找方法和装置 | |
CN113779286B (zh) | 管理图数据的方法及装置 | |
CN111209304B (zh) | 数据处理方法、装置及系统 | |
CN113849482A (zh) | 一种数据迁移方法、装置及电子设备 | |
CN116821232A (zh) | 一种数据同步方法及相关装置 | |
WO2021207830A1 (en) | Method and systems for indexing databases based on states and state transitions |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |