CN107291710A - 一种用于分布式数据库系统的更新数据的方法及装置 - Google Patents

一种用于分布式数据库系统的更新数据的方法及装置 Download PDF

Info

Publication number
CN107291710A
CN107291710A CN201610191763.8A CN201610191763A CN107291710A CN 107291710 A CN107291710 A CN 107291710A CN 201610191763 A CN201610191763 A CN 201610191763A CN 107291710 A CN107291710 A CN 107291710A
Authority
CN
China
Prior art keywords
data
hash table
row
tables
row data
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.)
Granted
Application number
CN201610191763.8A
Other languages
English (en)
Other versions
CN107291710B (zh
Inventor
黄华东
王伟
林起芊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN201610191763.8A priority Critical patent/CN107291710B/zh
Priority to PCT/CN2016/104690 priority patent/WO2017166815A1/zh
Priority to EP16896584.6A priority patent/EP3438845A1/en
Priority to US16/089,949 priority patent/US11176110B2/en
Publication of CN107291710A publication Critical patent/CN107291710A/zh
Application granted granted Critical
Publication of CN107291710B publication Critical patent/CN107291710B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1873Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data 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所述的装置,其特征在于,所述装置还包括:
删除模块,用于在所述发送模块将所述哈希表发送到主服务器之前,针对所述哈希表中每行数据的出现频次,判断该行数据的出现频次是否小于预定阈值,如果是,删除该行数据。
CN201610191763.8A 2016-03-30 2016-03-30 一种用于分布式数据库系统的更新数据的方法及装置 Active CN107291710B (zh)

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 一种用于分布式数据库系统的更新数据的方法及装置
EP16896584.6A EP3438845A1 (en) 2016-03-30 2016-11-04 Data updating method and device for a distributed database system
US16/089,949 US11176110B2 (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 true CN107291710A (zh) 2017-10-24
CN107291710B 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)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829785A (zh) * 2018-05-31 2018-11-16 沈文策 数据库中故障表的修复方法、装置、电子设备及存储介质
CN109582666A (zh) * 2018-09-29 2019-04-05 阿里巴巴集团控股有限公司 数据主键生成方法、装置、电子设备及存储介质
CN109739684A (zh) * 2018-11-20 2019-05-10 清华大学 基于向量时钟的分布式键值数据库的副本修复方法与装置
CN111400334A (zh) * 2020-06-04 2020-07-10 腾讯科技(深圳)有限公司 数据处理方法、装置、存储介质及电子装置
CN111506668A (zh) * 2020-07-01 2020-08-07 西安安森智能仪器股份有限公司 机器人集群智能化数据同步方法及系统

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110377611B (zh) * 2019-07-12 2022-07-15 北京三快在线科技有限公司 积分排名的方法及装置
CN113704274B (zh) * 2020-05-20 2024-03-19 中国移动通信集团福建有限公司 一种数据的读取方法及电子设备
CN115987759B (zh) * 2023-02-17 2023-06-23 天翼云科技有限公司 数据处理方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 北京京东尚科信息技术有限公司 分布式数据仓库中的数据更新方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829785A (zh) * 2018-05-31 2018-11-16 沈文策 数据库中故障表的修复方法、装置、电子设备及存储介质
CN109582666A (zh) * 2018-09-29 2019-04-05 阿里巴巴集团控股有限公司 数据主键生成方法、装置、电子设备及存储介质
CN109739684A (zh) * 2018-11-20 2019-05-10 清华大学 基于向量时钟的分布式键值数据库的副本修复方法与装置
CN111400334A (zh) * 2020-06-04 2020-07-10 腾讯科技(深圳)有限公司 数据处理方法、装置、存储介质及电子装置
CN111506668A (zh) * 2020-07-01 2020-08-07 西安安森智能仪器股份有限公司 机器人集群智能化数据同步方法及系统
CN111506668B (zh) * 2020-07-01 2024-02-02 西安安森智能仪器股份有限公司 机器人集群智能化数据同步方法及系统

Also Published As

Publication number Publication date
EP3438845A4 (en) 2019-02-06
CN107291710B (zh) 2020-07-03
WO2017166815A1 (zh) 2017-10-05
US11176110B2 (en) 2021-11-16
EP3438845A1 (en) 2019-02-06
US20190121793A1 (en) 2019-04-25

Similar Documents

Publication Publication Date Title
CN107291710A (zh) 一种用于分布式数据库系统的更新数据的方法及装置
CN108446407B (zh) 基于区块链的数据库审计方法和装置
US9727422B2 (en) Tracking files excluded from backup
US7551572B2 (en) Systems and methods for providing variable protection
CN103136243B (zh) 基于云存储的文件系统去重方法及装置
US9715507B2 (en) Techniques for reconciling metadata and data in a cloud storage system without service interruption
CN104199750B (zh) 一种linux系统的文件恢复方法及装置
US7577808B1 (en) Efficient backup data retrieval
CN103617097B (zh) 文件恢复方法及装置
US8554727B2 (en) Method and system of tiered quiescing
CN110109910A (zh) 数据处理方法及系统、电子设备和计算机可读存储介质
CN104239353B (zh) 一种web分类控制和日志审计的方法
CN106648977A (zh) 一种安卓系统文件的恢复方法及装置
US9961111B2 (en) Assured federated records management
CN107590019A (zh) 一种数据存储的方法和装置
CN107015987A (zh) 一种更新和搜索数据库的方法及设备
US9111261B2 (en) Method and system for management of electronic mail communication
CN106155838A (zh) 一种数据库备份数据恢复方法及装置
CN106096447A (zh) 一种文件保护方法及装置
CN104978241B (zh) 一种cow类型文件系统的数据恢复方法及装置
CN106649129A (zh) 一种基于ftl的具有版本管理功能的固态硬盘及其实现方法
CN102819570B (zh) 一种数据访问方法、装置及系统
CN104750869A (zh) 文件管理方法和装置
EP4213042A1 (en) Merging and unmerging entity representations via resolver trees
CN109144766B (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
GR01 Patent grant
GR01 Patent grant