CN109597574B - 分布式数据存储方法、服务器及可读存储介质 - Google Patents

分布式数据存储方法、服务器及可读存储介质 Download PDF

Info

Publication number
CN109597574B
CN109597574B CN201811426932.7A CN201811426932A CN109597574B CN 109597574 B CN109597574 B CN 109597574B CN 201811426932 A CN201811426932 A CN 201811426932A CN 109597574 B CN109597574 B CN 109597574B
Authority
CN
China
Prior art keywords
data
sliding window
fragment
new
new 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.)
Active
Application number
CN201811426932.7A
Other languages
English (en)
Other versions
CN109597574A (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.)
Shenzhen Coocaa Network Technology Co Ltd
Original Assignee
Shenzhen Coocaa Network 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 Shenzhen Coocaa Network Technology Co Ltd filed Critical Shenzhen Coocaa Network Technology Co Ltd
Priority to CN201811426932.7A priority Critical patent/CN109597574B/zh
Publication of CN109597574A publication Critical patent/CN109597574A/zh
Application granted granted Critical
Publication of CN109597574B publication Critical patent/CN109597574B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种分布式数据存储方法、服务器及可读存储介质,方法包括:从分布式存储系统已有的多个数据分片中选择前N个数据分片作为滑动窗口;每写入新数据时,判断新数据与滑动窗口中的数据相比是否存在重复数据;若是,放弃写入新数据,同时执行滑动窗口调整操作,以按照调整后的滑动窗口写入下一个新数据;滑动窗口调整操作包括:获取滑动窗口中与放弃写入的新数据存在重复数据的所属数据分片,并以此动态调整所述滑动窗口区域尺寸,以使所属数据分片后还包括一数据分片。从而在下一次写入新数据前,根据重复数据所在分片将滑动窗口中的数据调整为与下一次写入新数据存在时间局部重复性几率较大的数据,有利于提升写入查询效率。

Description

分布式数据存储方法、服务器及可读存储介质
技术领域
本发明涉及数据存储领域,尤其涉及一种分布式数据存储方法、服务器及可读存储介质。
背景技术
随着信息技术的发展和深入,网络中的数据总量呈现爆发式增长,存储系统中的数据越来越多,需要大量的存储空间来存储互联网业务中的相关数据。由于分布式存储系统的存储空间能够无限扩展,因此在存储互联网的业务数据时得到了广泛利用。
在分布式存储系统中,当对存在时间局部重复性特征的数据进行存储时,为了防止写入的数据存在重复,浪费存储容量,因此在数据写入的过程中需要先对待写入的数据进行查重再写入,但利用现有技术进行新数据写入查重时效率过低。
发明内容
本发明提出的一种分布式数据存储方法、服务器及可读存储介质,旨在解决对存在时间局部性特征的新数据写入查重时效率过低的问题。
为实现上述目的,本发明提供一种分布式数据存储方法,包括步骤:
在包括多个数据分片的分布式存储系统中,从已有的多个数据分片Q中选择前N个数据分片作为滑动窗口,其中滑动窗口区域尺寸N<Q;
每写入新数据时,判断所述新数据与所述滑动窗口中的数据相比是否存在重复数据;
当新数据与滑动窗口中的数据相比存在重复数据时,放弃写入新数据,同时执行滑动窗口调整操作,以按照调整后的滑动窗口继续写入下一个新数据;其中,所述滑动窗口调整操作包括:获取滑动窗口中与放弃写入的新数据存在重复数据的所属数据分片,并根据所属数据分片动态调整所述滑动窗口区域尺寸,以使所述滑动窗口中所属数据分片后还包括一数据分片。
可选地,所述根据所属数据分片动态调整所述滑动窗口区域尺寸,以使所述滑动窗口中所属数据分片后还包括一数据分片的步骤包括:
当所属数据分片为第N个数据分片时,在滑动窗口区域的第N个数据分片后新增一个数据分片以调整所述滑动窗口;
当所属数据分片为第X个数据分片且X小于N-1时,从所述滑动窗口区域中删减第X+1个数据分片后的所有数据分片;
当所属数据分片为第N-1个数据分片时,维持所述滑动窗口区域尺寸不变。
可选地,所述判断所述新数据与所述滑动窗口中的数据相比是否存在重复数据的步骤之后,还包括:
当新数据与滑动窗口中的数据相比不存在重复数据时,将滑动窗口区域尺寸N自加M以更新所述滑动窗口,并返回继续判断所述新数据与所述滑动窗口中的数据相比是否存在重复数据的步骤,直至滑动窗口区域尺寸达到所述分布式存储系统的数据分片总数Q为止时仍然不存在重复数据,则写入该新数据。
可选地,所述写入该新数据的步骤包括:
判断前一个写入数据所属的数据分片对应的时间流是否达到预设时间阈值;
当前一个写入数据所属的数据分片对应的时间流达到预设时间阈值时,新建一个数据分片,并将该新数据写入新建的数据分片中;
当前一个写入数据所属的数据分片对应的时间流未达到预设时间阈值时,将该新数据写入前一个写入数据所属的数据分片中。
可选地,所述将该新数据写入前一个写入数据所属的数据分片中的步骤包括:
判断前一个写入数据所属的数据分片的存储容量是否达到预设存储容量上限;
当存储容量达到预设存储容量上限时,新建一个数据分片,将该新数据写入所述新建分片中;
当存储容量未达到预设存储容量上限时,将该新数据写入前一个写入数据所属的数据分片中。
可选地,所述在包括多个数据分片的分布式存储系统中,从已有的多个数据分片Q中选择前N个数据分片的步骤之前,还包括:
按照存储容量将存储数据进行预切分,得到预切分数据分片数;
将预切分数据分片数与预设数据分片数进行比较,以选取数据分片数多的数据切分方法对存储数据进行分片存储。
可选地,所述选取数据分片数多的数据切分方法对存储数据进行分片存储的步骤之后,还包括:
为所述存储数据进行分片存储后得到的每个数据分片建立对应的查询索引;
根据每个数据分片对应的查询索引以及每个数据分片中的数据对应的指纹值,删除同一个数据分片中的重复数据。
可选地,所述每写入新数据时,判断所述新数据与所述滑动窗口中的数据相比是否存在重复数据的步骤包括:
每写入新数据时,计算所述新数据的指纹值;
将所述新数据的指纹值与所述滑动窗口中数据的指纹值对比;其中,若所述新数据的指纹值与所述滑动窗口中任一数据的指纹值相同,则所述新数据与所述滑动窗口中的数据存在重复数据;若所述新数据的指纹值与所述滑动窗口中所有数据的指纹值均不同,则所述新数据与所述滑动窗口中的数据不存在重复数据。
此外,为实现上述目的,本发明还提供一种服务器,包括通信模块、存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序时实现如上所述的分布式数据存储方法的步骤。
此外,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的分布式数据存储方法的步骤。
本发明提供的分布式数据存储方法、服务器及可读存储介质,通过在包括多个数据分片的分布式存储系统中,从已有的多个数据分片Q中选择前N个数据分片作为滑动窗口,其中滑动窗口区域尺寸N<Q;每写入新数据时,判断所述新数据与所述滑动窗口中的数据相比是否存在重复数据;当新数据与滑动窗口中的数据相比存在重复数据时,放弃写入新数据,同时执行滑动窗口调整操作,以按照调整后的滑动窗口继续写入下一个新数据;其中,所述滑动窗口调整操作包括:获取滑动窗口中与放弃写入的新数据存在重复数据的所属数据分片,并根据所属数据分片动态调整所述滑动窗口区域尺寸,以使所述滑动窗口中所属数据分片后还包括一数据分片。从而在新数据与滑动窗口中存在重复数据的下一次写入新数据前,根据重复数据所在分片将滑动窗口中的数据调整为与下一次写入新数据存在时间局部重复性几率较大的数据,有利于提升写入查询效率。
附图说明
图1为本发明所提供的服务器的硬件结构示意图;
图2为本发明分布式数据存储方法第一实施例和第二实施例的流程示意图;
图3为本发明分布式数据存储方法第二实施例中步骤S40的细化流程示意图;
图4为本发明分布式数据存储方法第四实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参看图1,图1为本发明所提供的服务器的硬件结构示意图。所述服务器可以包括通信模块10、存储器20以及处理器30等部件。在所述服务器中,所述处理器30分别与所述存储器20以及所述通信模块10连接,所述存储器20上存储有计算机程序,所述计算机程序同时被处理器30执行,所述计算机程序执行时实现下述方法实施例的步骤。
通信模块10,可通过网络与外部通讯设备连接。通信模块10可以接收外部通讯设备发出的请求,还可以发送请求、指令及信息至所述外部通讯设备。所述外部通讯设备可以是其他服务器和/或其他设备终端,例如电视机。
存储器20,可用于存储软件程序以及各种数据。存储器20可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如数据分片存储)等;存储数据区可包括数据库,存储数据区可存储根据服务器的使用所创建的数据或信息等。此外,存储器20可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器30,是服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器20内的软件程序和/或模块,以及调用存储在存储器20内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。处理器30可包括一个或多个处理单元;可选地,处理器30可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器30中。
尽管图1未示出,但上述服务器还可以包括电路控制模块,用于与电源连接,保证其他部件的正常工作。上述服务器还可以包括显示模块,用于提取存储器20中的数据,并显示出服务器的系统界面以及数据存储查重过程。本领域技术人员可以理解,图1中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
基于上述硬件结构,提出本发明方法各个实施例。
请参照图2,图2为本发明分布式数据存储方法第一实施例的流程示意图。在该实施例中,所述方法包括:
步骤S10,在包括多个数据分片的分布式存储系统中,从已有的多个数据分片Q中选择前N个数据分片作为滑动窗口,其中滑动窗口区域尺寸N<Q;
本实施例数据存储时,相比传统的网络存储系统中采用的集中式存储技术,采用了分布式存储系统。分布式存储系统是将数据分散存储在多台独立的设备上,且这些独立的设备可扩展,能够分担存储负荷,帮助提高了系统的可靠性、可用性和存取效率,还易于扩展。
本实施例中,分布式存储系统中存储有多个数据分片,每个数据分片中的数据都有其对应的时间戳,该时间戳例如可以是生成时间,可以从多个数据分片中按时间戳选取N个数据分片以此确定滑动窗口,其中滑动窗口区域中的数据即为所选取的N个数据分片中的所有数据,数据分片的数量N即是滑动窗口的区域尺寸。例如,选取1个小时内的数据分片,假设1h内存储的数据分片有3片,选取1小时内存储的这3个数据分片,同时滑动窗口区域尺寸即为3。本实施例中,N个数据分片中的N可以根据经验值设置,例如N的初始值可以设置为3,N的取值范围小于等于所有分布式系统中的数据分片总数Q的整数。
步骤S20,每写入新数据时,判断所述新数据与所述滑动窗口中的数据相比是否存在重复数据;
本实施例中所指的新数据可以为数据流中任一时刻待写入的数据,其中数据流在本实施例中是指呈现流式特征,具有时间局部性的数据,其具有数据量大、每条数据独立,数据在某一固定时间内会重复等特点。数据流可以为实时数据、日志数据、流量数据以及网络数据。例如网络数据,网络数据的存储类似通过一个管道向外输出,数据的排列顺序和向外输出的顺序相同。
需要说明的是,在很多场景下,重复数据的出现存在时间局部性特征,例如某些数据在一天之内不会重复,超过多少天之后可能就会与当天再重复,因此可以通过判断是否存在重复数据,进而在确定与待写入新数据存在重复数据之后定位与当前待写入的新数据存在重复性的数据分片区域。
可以理解的是,正是由于具备时间局部性特征的特性所在,使得在一定时间内进行新数据写入时,所述新数据与滑动窗口中数据分片中的数据可能存在重复数据,即为相同数据。为了改善存储重复数据浪费了存储容量的问题,需要进行数据查重,即判断新写入的数据与选择的滑动窗口数据分片中的数据是否存在重复数据。可选地,判断是否为重复数据的方法可以根据数据的校验值确定,还可以将新写入数据与数据分片中的数据内容进行对比确定。
其中,利用数据的校验值进行确定的实施方式可以是:
步骤S21,每写入新数据时,计算所述新数据的指纹值;
步骤S22,将所述新数据的指纹值与所述滑动窗口中数据的指纹值对比;其中,若所述新数据的指纹值与所述滑动窗口中任一数据的指纹值相同,则所述新数据与所述滑动窗口中的数据存在重复数据;若所述新数据的指纹值与所述滑动窗口中所有数据的指纹值均不同,则所述新数据与所述滑动窗口中的数据不存在重复数据。
其中指纹值可以是数据的MD5值,将新数据的MD5值与滑动窗口中数据的MD5值进行对比,如果新数据的MD5值与滑动窗口中数据分片中任意一个数据的MD5值相同,说明新数据属于重复数据;当新数据的MD5值与滑动窗口中数据分片总所有数据的MD5值均不同,说明新数据对滑动窗口中的数据分片来说不属于重复数据。当然也可以采用其他指纹值进行对比确认。通过指纹值的对比,能够快速找到待写入新数据与滑动窗口中数据是否有重复,给出了快速查重的解决方案。
还需要说明的是,当不存在重复数据,可以继续下一个新数据写入,直到判断完所有的新数据或者预设大小的新数据后,将与当前滑动窗口区域不存在重复数据的新数据筛选出来,再更新滑动窗口,方便进行进一步判断。
步骤S30,当新数据与滑动窗口中的数据相比存在重复数据时,放弃写入新数据,同时执行滑动窗口调整操作,以按照调整后的滑动窗口继续写入下一个新数据。
其中,所述滑动窗口调整操作包括:获取滑动窗口中与放弃写入的新数据存在重复数据的所属数据分片,并根据所属数据分片动态调整所述滑动窗口区域尺寸,以使所述滑动窗口中所属数据分片后还包括一数据分片。
当存在重复数据时,可以定位与待写入数据存在时间局部性特征关联的数据分片,例如可以直接获取存在重复数据的所属数据分片位置,在滑动窗口中的排序,或者数据分片的名称等等。并在之后根据确定的所属数据分片修正滑动窗口的区域以在分布式存储系统中选取几个尽可能与下一个新数据存在重复的数据分片。
可以理解地是,新数据写入时,如果数据分片中的任一数据存在与新数据相同的数据,新数据则为重复数据,服务器可以放弃写入该新数据,这样做的目的是为了节约存储空间,同时也大大降低存储系统中冗余数据量,减少数据中心的消耗,降低成本。
此外,由于数据在某一固定时间内会重复出现,目前发现了新数据与数据分片中的某个数据出现重复,则可以基于时间局部性特征数据的特殊特性认为下一个写入的新数据也有极大可能与某个数据对应数据分片或者相近的数据分片内,例如直接与所属数据分片的后一个数据中的数据重复,因此在调整时可以直接根据确定的存在重复数据的数据分片动态调整滑动窗口,使确定的滑动窗口区域保证了存在重复数据的数据分片后还携带有一个数据分片。本方案在数据写入查重时,在确定某一个待写入新数据存在重复数据后,将滑动窗口区域调整成为了,与下一个新写入的数据存在较大几率重复的数据分片,从而能够快速进行查重提高了数据存储以及查重的效率。
本实施例通过在包括多个数据分片的分布式存储系统中,从已有的多个数据分片Q中选择前N个数据分片作为滑动窗口,其中滑动窗口区域尺寸N<Q;每写入新数据时,判断所述新数据与所述滑动窗口中的数据相比是否存在重复数据;当新数据与滑动窗口中的数据相比存在重复数据时,放弃写入新数据,同时执行滑动窗口调整操作,以按照调整后的滑动窗口继续写入下一个新数据;其中,所述滑动窗口调整操作包括:获取滑动窗口中与放弃写入的新数据存在重复数据的所属数据分片,并根据所属数据分片动态调整所述滑动窗口区域尺寸,以使所述滑动窗口中所属数据分片后还包括一数据分片。从而在新数据与滑动窗口中存在重复数据的下一次写入新数据前,根据重复数据所在分片将滑动窗口中的数据调整为与下一次写入新数据存在时间局部重复性几率较大的数据,有利于提升写入查询效率。
进一步地,请继续参看图2,在第二实施例中,所述步骤S20之后,还包括:
步骤S40,当新数据与滑动窗口中的数据相比不存在重复数据时,将滑动窗口区域尺寸N自加M以更新所述滑动窗口,并返回继续判断所述新数据与所述滑动窗口中的数据相比是否存在重复数据的步骤,直至滑动窗口区域尺寸达到所述分布式存储系统的数据分片总数Q为止时仍然不存在重复数据,则写入该新数据。
本实施例中,新数据写入时,如果新数据与滑动窗口数据分片中的所有数据不存在重复时,还需要再次选取M个数据分片,滑动窗口区域尺寸对应扩大M。其中,M可以是一个数据分片,也可以是多个数据分片,可以一个一个增加数据分片,也可以同时增加多个数据分片;每次新增数据分片以更新滑动窗口区域后,再返回继续判断新数据与滑动窗口的数据分片中的数据相比是否存在重复数据的步骤,直到滑动窗口中的数据分片个数达到分布式存储系统中数据分片总数为止时,如果仍然未找到与待写入新数据相同的数据,表示待写入新数据为分布式系统中之前不存在的数据,可以执行写入操作,将待写入新数据存储在分布式系统的数据分片中。
例如,当分布式存储系统中数据分片总数为5片,根据数据生成时间选取其中三个数据分片,滑动窗口区域尺寸设置为3,新数据与滑动窗口中的3个数据分片中的所有数据不存在重复,再次选取一个数据分片,滑动窗口区域尺寸扩大至4,若新数据与滑动窗口中的数据分片中的数据分片仍不存在重复,再次增加1个数据分片,滑动窗口区域尺寸扩大至5,此时滑动窗口数据分片个数等于分布式系统中数据分片总数,再次判断后新数据与滑动窗口中的数据分片中的数据仍无重复,则该新数据写入存储系统中。
此外,当存在重复数据时,进行滑动窗口的调整,也可以不是进行滑动窗口的扩大,可以重新选择相同数量N或者不同数量的,完全不同的数据分片作为滑动窗口,然后返回进行重复数据的判断,直到分布式系统中所有的数据分片都被选择作为滑动窗口进行判断重复数据后,仍然不存在重复数据,则执行写入操作。
本方案给出了分布式数据存储系统中,最终能够写入数据的查重判断过程,帮助实现了分布式数据存储系统最终数据的写入。
此外,请参考图3,上述实施例的步骤S40中写入该新数据的步骤包括:
步骤S41,判断前一个写入数据所属的数据分片对应的时间流是否达到预设时间阈值;若是,则执行步骤S42;若否,则执行步骤S43;
步骤S42,新建一个数据分片,并将该新数据写入新建的数据分片中;
步骤S43,将该新数据写入前一个写入数据所属的数据分片中。
本实施例中,数据的写入考虑了流式数据存在存储时间阈值的因素,每个数据分片在构建时就有其对应的存储时长,例如数据分片A可以存储20分钟的数据,其中20分钟即是存储时间阈值。每进行新数据写入时,都是按照时间流的进行,一个数据分片一个数据分片进行写入的,在进行单个数据写入时,可以通过判断相对上一次最新写入数据所属数据分片的时间流是否达到该所属数据分片的预设时间阈值确定,达到了则新增一个数据分片,并将新数据写入新增的数据分片中,反之,则继续写入上一次最新写入数据时的数据分片中。本方案给出了新数据写入数据分片的过程,并且以时间作为参考因素,能够满足在数据量处于平和或低峰期时段的写入要求。
进一步地,上述步骤S43可以包括以下步骤:
步骤S431,判断前一个写入数据所属的数据分片的存储容量是否达到预设存储容量上限;若是,则执行步骤S432;若否,则执行步骤S433;
步骤S432,新建一个数据分片,将该新数据写入所述新建分片中;
步骤S433,将该新数据写入前一个写入数据所属的数据分片中。
本方案是在考虑了数据分片的时间因素的前提下,考虑了每个数据分片都有其对应的存储容量上限,或者称为存储容量的最大尺寸,例如每个分片最大10G,可以存储10分钟的数据。其中,10G即是存储容量上限,也可以将存储容量上限转化成时间维度,即10G例如对应时间维度可以为10分钟,转化成的时间维度上限表示的仍然是数据分片的存储容量,与前述方案中的预设时间阈值一般情况下不相同。
在此种情况下,可能预设时间阈值未达到,但是达到了存储容量上限,此时在该时间流下需要新建一个数据分片进行新数据存储。通过时间和容量的双重因素决定新数据的存储,能够满足在数据量处于高峰期时段的写入要求。此外,后续进行数据分析时,也可以进一步通过是否在同一时间流内有多个数据分片进行高低峰数据期的确定,具有一定的数据分析参考意义。
进一步地,在第三实施例中,所述根据所属数据分片动态调整所述滑动窗口区域尺寸,以使所述滑动窗口中所属数据分片后还包括一数据分片的步骤包括:
步骤S31,当所述新数据与第N个数据分片中的数据相比存在重复数据时,在滑动窗口区域的第N个数据分片后新增一个数据分片;
步骤S32,当所述新数据与第X个数据分片中的数据相比存在重复数据且X小于N-1时,从所述滑动窗口区域中删减第X+1个数据分片后的所有数据分片;
步骤S33,当所述新数据与第N-1个数据分片中的数据相比存在重复数据时,维持所述滑动窗口区域尺寸不变。
滑动窗口中有N个数据分片时,当新数据与第N个数据分片中的数据存在重复时,即确定存在重复数据的所属数据分片为第N个数据分片,则在第N个数据分片后再增加一个数据分片,滑动窗口区域扩大至N+1。例如,当滑动窗口中有3个数据分片,新数据与滑动窗口中第三数据分片中的数据存在重复,则在滑动窗口中第三数据分片后面增加一个数据分片。
滑动窗口中有N个数据分片时,当新数据与第X个数据分片中的数据存在重复,且X小于N-1,即确定存在重复数据的所属数据分片为第X个数据分片,调整滑动窗口中数据分片数量至X+1,删除X+1后的所有数据分片,此时滑动窗口区域尺寸调整为了X+1。例如,当滑动窗口中有4个数据分片,新数据与滑动窗口中第二个数据分片中的数据存在重复,则滑动窗口中的数据分片只保留前三片,删除第三片之后的数据分片。在其他实施例中,也可以保留X+1个数据分片后的数据分片,不对其进行删减。
滑动窗口中有N个数据分片时,当新数据与第N-1个数据分片中的数据存在重复,滑动窗口中的数据分片无需增加、无需减少,滑动窗口区域不做调整。
根据确定的所属文件分片,对滑动窗口进行调整,使本次存在重复数据分片之后仅保留有一数据分片,不仅保证了滑动窗口中保留了存在重复数据较大可能的数据分片,也保证滑动窗口的数据区域不会过大,节约了后续写入新数据时进行新数据与滑动窗口重复数据判断的时间,提升了每个新数据第一次进行查重判断时的查重效率。
进一步地,请参考图4,在本发明分布式数据存储方法的第四实施例中,所述步骤S10之前还包括:
步骤S50,按照存储容量将存储数据进行预切分,得到预切分数据分片数;
步骤S60,将预切分数据分片数与预设数据分片数进行比较,以选取数据分片数多的数据切分方法对存储数据进行分片存储。
在本实施例中,设定了两种切分规则,分别是基于预先设定的切分数切分以及依据存储容量确定的切分方式。例如,预先设定的切分数预例如可设置为3。在按存储容量切分时,可将存储容量转化为时间,然后根据存储数据中重复数据出现的最长时间除以每个分片可存储的容量对应的最大时间得出分片数量。例如,每个数据分片存储容量上限为10G,可存储10分钟的数据,重复数据出现的最长时间范围是1小时,1小时除以10分钟等于6,那么按存储数据按存储容量可预先分为6片。
可以理解地是,在进行数据切分时,相同大小的数据,切分的数据分片越多,每个数据分片的存储容量越小,在划定滑动窗口后单次进行重复数据比对的数据总量越小,因此本方案通过两种方式预切分比对分片数量,选择分片数量多的一种方法进行分片存储,能够减小重复数据判断时数据比对的压力,快速定位重复数据所属文件分片,同时也能够减小单个存储设备在进行存储时的存储压力。
进一步地,所述步骤S60之后,还可以包括:
为所述存储数据进行分片存储后得到的每个数据分片建立对应的查询索引;根据每个数据分片对应的查询索引以及每个数据分片中的数据对应的指纹值,删除同一个数据分片中的重复数据。
本实施例中,索引指向存储在表的指定列中的数据值的指针,然后根据用户指定的排序顺序对这些指针排序。数据库使用索引的方式与使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。建立索引的优点:大大加快数据检索速度;创建唯一性索引,保证数据库中每一行数据的唯一性;在使用分组和排序子句数据检索时,可以显著减少查询中分组和排序的时间。
指纹值可以为MD5值,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,本实施例中利用MD5算法来进行数据校验,如果MD5值相同,则认定为相同数据,也就认为存在重复数据。本方案通过查询索引,以及对数据分片内的数据进行MD5校验,能够确保已存储的数据分片中同一分片中不存在重复数据,保证了同一数据分片中数据的唯一性。
进一步地,在其他实施例中,还可以在继续写入下一个新数据之前,执行以下步骤:
对所述滑动窗口中至少两个数据分片中的数据进行指纹值比对;
当存在相同指纹值的数据时,保留指纹值相同的一个数据,删除指纹值相同的其余数据,并执行步骤继续写入下一个新数据。
需要说明的是,同一个数据分片的数据不会相同,但是不同数据分片之间可能存在相同重复数据,可以在每次写入新数据之前,随机选择或者按照预设顺序选择至少两个数据分片进行指纹值的校验比对,以减少不同数据分片之中的重复数据,进而筛除分布式存储系统中已有的重复数据,保证数据的独立单一存在。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序。所述计算机可读存储介质可以是图1的服务器中的存储器20,也可以是如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘中的至少一种,所述计算机可读存储介质包括若干指令用以使得一台具有处理器的终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者服务端不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者服务端所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者服务端中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (9)

1.一种分布式数据存储方法,其特征在于,包括步骤:
在包括多个数据分片的分布式存储系统中,从已有的多个数据分片Q中选择前N个数据分片作为滑动窗口,其中滑动窗口区域尺寸N<Q;
每写入新数据时,判断所述新数据与所述滑动窗口中的数据相比是否存在重复数据;
当新数据与滑动窗口中的数据相比存在重复数据时,放弃写入新数据,同时执行滑动窗口调整操作,以按照调整后的滑动窗口继续写入下一个新数据;其中,所述滑动窗口调整操作包括:获取滑动窗口中与放弃写入的新数据存在重复数据的所属数据分片,并根据所属数据分片动态调整所述滑动窗口区域尺寸,以使所述滑动窗口中所属数据分片后还包括一数据分片;
当新数据与滑动窗口中的数据相比不存在重复数据时,将滑动窗口区域尺寸N自加M以更新所述滑动窗口,并返回继续判断所述新数据与所述滑动窗口中的数据相比是否存在重复数据的步骤,直至滑动窗口区域尺寸达到所述分布式存储系统的数据分片总数Q为止时仍然不存在重复数据,则写入该新数据。
2.如权利要求1所述的分布式数据存储方法,其特征在于,所述根据所属数据分片动态调整所述滑动窗口区域尺寸,以使所述滑动窗口中所属数据分片后还包括一数据分片的步骤包括:
当所属数据分片为第N个数据分片时,在滑动窗口区域的第N个数据分片后新增一个数据分片以调整所述滑动窗口;
当所属数据分片为第X个数据分片且X小于N-1时,从所述滑动窗口区域中删减第X+1个数据分片后的所有数据分片;
当所属数据分片为第N-1个数据分片时,维持所述滑动窗口区域尺寸不变。
3.如权利要求2所述的分布式数据存储方法,其特征在于,所述写入该新数据的步骤包括:
判断前一个写入数据所属的数据分片对应的时间流是否达到预设时间阈值;
当前一个写入数据所属的数据分片对应的时间流达到预设时间阈值时,新建一个数据分片,并将该新数据写入新建的数据分片中;
当前一个写入数据所属的数据分片对应的时间流未达到预设时间阈值时,将该新数据写入前一个写入数据所属的数据分片中。
4.如权利要求3所述的分布式数据存储方法,其特征在于,所述将该新数据写入前一个写入数据所属的数据分片中的步骤包括:
判断前一个写入数据所属的数据分片的存储容量是否达到预设存储容量上限;
当存储容量达到预设存储容量上限时,新建一个数据分片,将该新数据写入所述新建数据分片中;
当存储容量未达到预设存储容量上限时,将该新数据写入前一个写入数据所属的数据分片中。
5.如权利要求1所述的分布式数据存储方法,其特征在于,所述在包括多个数据分片的分布式存储系统中,从已有的多个数据分片Q中选择前N个数据分片的步骤之前,还包括:
按照存储容量将存储数据进行预切分,得到预切分数据分片数;
将预切分数据分片数与预设数据分片数进行比较,以选取数据分片数多的数据切分方法对存储数据进行分片存储。
6.如权利要求5所述的分布式数据存储方法,其特征在于,所述选取数据分片数多的数据切分方法对存储数据进行分片存储的步骤之后,还包括:
为所述存储数据进行分片存储后得到的每个数据分片建立对应的查询索引;
根据每个数据分片对应的查询索引以及每个数据分片中的数据对应的指纹值,删除同一个数据分片中的重复数据。
7.如权利要求1、2、5或6所述的分布式数据存储方法,其特征在于,所述每写入新数据时,判断所述新数据与所述滑动窗口中的数据相比是否存在重复数据的步骤包括:
每写入新数据时,计算所述新数据的指纹值;
将所述新数据的指纹值与所述滑动窗口中数据的指纹值对比;其中,若所述新数据的指纹值与所述滑动窗口中任一数据的指纹值相同,则所述新数据与所述滑动窗口中的数据存在重复数据;若所述新数据的指纹值与所述滑动窗口中所有数据的指纹值均不同,则所述新数据与所述滑动窗口中的数据不存在重复数据。
8.一种服务器,其特征在于,所述服务器包括通信模块、存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行权利要求1-7任一项所述的分布式数据存储方法的步骤。
9.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的分布式数据存储方法的步骤。
CN201811426932.7A 2018-11-27 2018-11-27 分布式数据存储方法、服务器及可读存储介质 Active CN109597574B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811426932.7A CN109597574B (zh) 2018-11-27 2018-11-27 分布式数据存储方法、服务器及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811426932.7A CN109597574B (zh) 2018-11-27 2018-11-27 分布式数据存储方法、服务器及可读存储介质

Publications (2)

Publication Number Publication Date
CN109597574A CN109597574A (zh) 2019-04-09
CN109597574B true CN109597574B (zh) 2021-09-24

Family

ID=65960387

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811426932.7A Active CN109597574B (zh) 2018-11-27 2018-11-27 分布式数据存储方法、服务器及可读存储介质

Country Status (1)

Country Link
CN (1) CN109597574B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110321073B (zh) * 2019-04-11 2023-05-02 深圳市德明利技术股份有限公司 一种闪存的数据存储方法和装置以及设备
CN111968582B (zh) 2020-01-14 2022-04-15 Oppo广东移动通信有限公司 显示屏变频方法、ddic芯片、显示屏模组及终端
CN111628909B (zh) * 2020-05-25 2021-08-20 上海德吾信息科技有限公司 一种用于无线通信的数据重复发送标记系统及方法
CN112486976A (zh) * 2020-12-18 2021-03-12 咪咕文化科技有限公司 数据处理方法、装置、网络设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3109797A1 (fr) * 2015-06-26 2016-12-28 Orange Procédé de reconnaissance d'écriture manuscrite sur une surface physique
CN106648991A (zh) * 2016-12-28 2017-05-10 长春理工大学 数据容灾系统中的重复数据删除方法
CN106888107A (zh) * 2016-06-08 2017-06-23 阿里巴巴集团控股有限公司 一种滑动窗口业务数据确定方法及装置
CN107928620A (zh) * 2017-12-13 2018-04-20 深圳市酷开网络科技有限公司 基于vr技术的视力检测方法、存储介质及视力检测终端
CN108245749A (zh) * 2017-12-29 2018-07-06 湖南明康中锦医疗科技发展有限公司 呼吸流量计数方法、装置、计算机设备及介质
CN108830146A (zh) * 2018-05-04 2018-11-16 南京邮电大学 一种基于滑动窗口的非压缩域镜头边界检测方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3109797A1 (fr) * 2015-06-26 2016-12-28 Orange Procédé de reconnaissance d'écriture manuscrite sur une surface physique
CN106888107A (zh) * 2016-06-08 2017-06-23 阿里巴巴集团控股有限公司 一种滑动窗口业务数据确定方法及装置
CN106648991A (zh) * 2016-12-28 2017-05-10 长春理工大学 数据容灾系统中的重复数据删除方法
CN107928620A (zh) * 2017-12-13 2018-04-20 深圳市酷开网络科技有限公司 基于vr技术的视力检测方法、存储介质及视力检测终端
CN108245749A (zh) * 2017-12-29 2018-07-06 湖南明康中锦医疗科技发展有限公司 呼吸流量计数方法、装置、计算机设备及介质
CN108830146A (zh) * 2018-05-04 2018-11-16 南京邮电大学 一种基于滑动窗口的非压缩域镜头边界检测方法

Also Published As

Publication number Publication date
CN109597574A (zh) 2019-04-09

Similar Documents

Publication Publication Date Title
CN109597574B (zh) 分布式数据存储方法、服务器及可读存储介质
CN109165215B (zh) 一种云环境下时空索引的构建方法、装置及电子设备
CN109947668B (zh) 存储数据的方法和装置
US8719237B2 (en) Method and apparatus for deleting duplicate data
WO2021042923A1 (zh) 数据分片存储方法、装置、终端及计算机可读存储介质
KR101725172B1 (ko) 개별적으로 액세스 가능한 데이터 유닛의 스토리지 관리 방법
CN104539750A (zh) 一种ip定位方法和装置
CN114490527B (zh) 元数据检索方法、系统、终端及存储介质
CN109033295B (zh) 超大数据集的合并方法及装置
US20180373725A1 (en) Reducing database fragmentation
CN110825706B (zh) 一种数据压缩的方法和相关设备
CN116301656A (zh) 基于日志结构合并树的数据存储方法、系统及设备
CN112612790B (zh) 卡号配置方法、装置、设备及计算机存储介质
CN113609090A (zh) 数据存储方法及装置、计算机可读存储介质、电子设备
CN111506682B (zh) 地图数据处理方法、数据查询方法、装置、电子设备
CN115525655A (zh) 一种数据查询切片的方法和系统
CN115470186A (zh) 一种数据切片方法、装置和系统
CN111625500B (zh) 文件快照方法及装置、电子设备和存储介质
CN110750724B (zh) 数据处理方法、装置、设备和存储介质
CN105653646A (zh) 一种并发查询条件下的动态查询系统及方法
CN111309724A (zh) 一种用于对大数据进行处理的方法及系统
CN105468603A (zh) 数据选择方法及装置
CN111382120A (zh) 一种小文件管理方法、系统和计算机设备
US20240320203A1 (en) Method for data processing, database system, computer equipment, and storage medium
CN112506877B (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
CB02 Change of applicant information

Address after: Room 2306, east block, Skyworth semiconductor design building, 18 Gaoxin South 4th Road, Gaoxin community, Yuehai street, Nanshan District, Shenzhen, Guangdong 518108

Applicant after: Shenzhen Kukai Network Technology Co.,Ltd.

Address before: 518108 room 1502, block a, South Skyworth building, Shennan Avenue, Nanshan District, Shenzhen City, Guangdong Province

Applicant before: Shenzhen Coocaa Network Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant