CN112148693A - 一种数据处理方法、装置及存储介质 - Google Patents
一种数据处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112148693A CN112148693A CN202011117386.6A CN202011117386A CN112148693A CN 112148693 A CN112148693 A CN 112148693A CN 202011117386 A CN202011117386 A CN 202011117386A CN 112148693 A CN112148693 A CN 112148693A
- Authority
- CN
- China
- Prior art keywords
- shared memory
- data
- target
- target file
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
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/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding 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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- 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/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了数据处理方法、装置及存储介质,该方法包括:获取待更新数据对应的全量更新数据;基于全量更新数据中的元数据文件,为各目标文件分别顺序分配共享内存块;基于共享内存区中存储的每个所分配的共享内存块的块序号与对应的目标文件的哈希值的对应关系以及全量更新数据中的元数据文件,将各目标文件加载至对应的共享内存块中;将指向待更新数据的当前存储区的指针,调整为指向共享内存区中各共享内存块,以实现针对所述待更新数据的更新。本公开解决了相关技术在数据更新时对系统存在响应延迟高、可靠性降低等问题。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据处理方法、装置及存储介质。
背景技术
KV(Key Value,键值)系统是采用键值进行数据存储的计算系统,其一般存储有海量数据,以满足各种数据服务的需求。
相关技术中,在实时对KV系统进行数据更新时,通常采用逐个键Key进行更新的方式,这样更新方式不仅更新效率低下,而且如果数据更新并发量大时,会给系统造成很大的计算压力,从而导致系统存在响应延迟高、可靠性降低等问题,不利于给服务请求方提供良好的数据服务。
发明内容
本公开提供了一种数据处理方法、装置及存储介质,以解决现有技术中至少一种技术问题。
一方面,本公开提供了一种数据处理方法,其特征在于,包括:
当接收到数据更新请求指令时,获取待更新数据对应的全量更新数据;所述全量更新数据包括多个目标文件、以及与多个所述目标文件对应的元数据文件,不同的目标文件对应不同的哈希值;
基于所述元数据文件,在预先创建的共享内存区中,为各目标文件分别顺序分配共享内存块;所述共享内存区中存储有每个所分配的共享内存块的块序号与对应的目标文件的哈希值的对应关系;
基于所述对应关系以及所述元数据文件,将各目标文件加载至对应的共享内存块中;
将指向所述待更新数据的当前存储区的指针,调整为指向所述共享内存区中各共享内存块,以实现针对所述待更新数据的更新。
另一方面还提供一种数据处理装置,所述装置包括:
获取模块,用于当接收到数据更新请求指令时,获取待更新数据对应的全量更新数据;所述全量更新数据包括多个目标文件、以及与多个所述目标文件对应的元数据文件,不同的目标文件对应不同的哈希值;
分配模块,用于基于所述元数据文件,在预先创建的共享内存区中,为各目标文件分别顺序分配共享内存块;所述共享内存区中存储有每个所分配的共享内存块的块序号与对应的目标文件的哈希值的对应关系;
加载模块,用于基于所述对应关系以及所述元数据文件,将各目标文件加载至对应的共享内存块中;
调整模块,用于将指向所述待更新数据的当前存储区的指针,调整为指向所述共享内存区中各共享内存块,以实现针对所述待更新数据的更新。
另一方面还提供一种计算机设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述任一所述的数据处理方法。
另一方面还提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如上述任一所述的数据处理方法。
另一方面还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本实施例上述任一所述的数据处理方法。
本公开提供的一种数据处理方法、装置及存储介质,具有如下技术效果:
本公开实施例通过当接收到数据更新请求指令时,获取待更新数据对应的全量更新数据;所述全量更新数据包括多个目标文件、以及与多个所述目标文件对应的元数据文件,不同的目标文件对应不同的哈希值;基于所述元数据文件,在预先创建的共享内存区中,为各目标文件分别顺序分配共享内存块;所述共享内存区中存储有每个所分配的共享内存块的块序号与对应的目标文件的哈希值的对应关系;基于所述对应关系以及所述元数据文件,将各目标文件加载至对应的共享内存块中;将指向所述待更新数据的当前存储区的指针,调整为指向所述共享内存区中各共享内存块,以实现针对所述待更新数据的更新。本公开采用将离线更新数据文件载入共享内存,通知KV系统切换共享内存指针来实现数据的全量更新,更新所需时间为将数据文件加载进内存的时间,极大缩短了更新时间。通过将目标文件加载进共享内存,实现了逐块切换和一次写入。另外,采用将数据分成多个目标文件,通过逐个文件更新,减少更新时对系统内存的要求和计算压力,更新效率高,同时也有利于提高查询速度,解决了相关技术在数据更新时更新速度慢,以及并发更新导致系统压力大和系统响应延迟等不足。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本公开实施例提供的一种数据处理方法的流程示意图;
图2是本公开实施例提供的多个目标文件的结构示意图;
图3是本公开实施例提供的为各目标文件分配共享内存块步骤的流程示意图;
图4是本公开实施例提供的将各目标文件加载至对应的共享内存块步骤的流程示意图;
图5是本公开实施例提供的实现针对所述待更新数据的更新步骤的流程示意图;
图6是本公开实施例提供的另一种数据处理方法的流程示意图;
图7是本公开实施例提供的一种数据处理方法的过程示意图;
图8是本公开实施例提供的利用更新的数据进行数据查询步骤的流程示意图;
图9是本公开实施例提供的一种数据处理装置的框架示意图;
图10是本公开实施例提供的一种数据处理装置的框架示意图;
图11是本公开提供的一种用于实现本公开实施例所提供的方法的设备的硬件结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本公开方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
云计算(cloud computing)指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing)、分布式计算(DistributedComputing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network StorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
下面对本公开涉及的名称进行解释:
数据单元:是指一个键和至少一个值组成的一个内存单元。每个数据单元占用的内存大小等于键和至少一个值占用的内存大小总和。
元数据:是指用来描述一个文件的特征的系统数据。
哈希数(Hashnum):是指原始数据经过哈希函数处理后的文件个数。
共享内存:是指在一段允许多个内核访问的物理空间。
以下介绍本公开一种数据处理方法的具体实施例,该方法的执行主体可以为服务器。其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
图1是本公开实施例提供的一种数据处理方法的流程示意图,图7是本公开实施例提供的一种数据处理方法的过程示意图。本公开提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。如图1和7所示,该方法可以包括:
S101:当接收到数据更新请求指令时,获取待更新数据对应的全量更新数据;所述全量更新数据包括多个目标文件、以及与多个所述目标文件对应的元数据文件,不同的目标文件对应不同的哈希值。
其中,待更新数据是指KV系统中需要进行更新的数据,其以键值形式映射存储于KV系统中。由于KV系统中存储有海量数据,这些海量数据可以根据服务类型、业务类型、所属地域、所属服务区等可划分为多块待更新数据。在触发对某一块数据更新时,通常希望能够更新该块待更新数据中的全部数据,得到更新后的全量数据。
全量更新数据是待更新数据对应的已经进行离线更新的全部数据。这里的全量更新数据是指对待更新数据对应的全量更新数据的第一原始数据进行数据预处理所得的数据。可选地,数据预处理包括但不限于为哈希操作、数据分片等。全量更新数据可以包括多个目标文件、以及与多个所述目标文件对应的元数据文件,其中,不同的目标文件对应不同的哈希值。
仅作为示例,在获取到待更新数据对应的全量更新数据的第一原始数据之后,可以对该第一原始数据对key进行哈希操作,分成多个目标文件和与该多个目标文件一一对应的元数据文件。每个目标文件中排列多个数据单元,每个数据单元可以是一个key和至少一个value组成的一个内存单元。元数据文件中可以记录着每个目标文件的位置、数据单元的格式和目标文件总数。当然,元数据文件中记录着内容包括但不限于此,例如还可记录数据单元数量、目标文件的总大小等等。
举例而言,图2是本公开实施例提供的多个目标文件的结构示意图。如图2所示,对原始数据进行哈希操作,Hash成100份(即hashnum=100),hash函数可以为key%100,从而得到100个目标文件。可选地,每个目标文件中数据单元可以是按照key值的大小进行排序的,例如按照key值从小到大的顺序排列。每个目标文件的排列结结构紧凑,排列着多个数据单元。如图2所示,这里示意着每个数据单元由一个key和两个value组成的一个内存单元。每个目标文件对应不同的哈希值,例如第1个目标文件对应hash=0,第2个目标文件对应hash=1,......第100个目标文件对应hash=99。
仅作为示例,与图2中的多个目标文件对应的元数据文件内容可以至少包括如下:
file:/data/0.data fields:uint64,uint32,uint64 hashnum:100
file:/data/1.data fields:uint64,uint32,uint64 hashnum:100
......
file:/data/99.data fields:uint64,uint32,uint64 hashnum:100
上述的元数据文件中可以依次记录着每个目标文件的位置(比如file:/data/0.data等)、数据单元的格式(比如fields:uint64,uint32,uint64等)和目标文件总数(比如hashnum:100)。其中,fields:uint64,uint32,uint64,也即1个key的数据类型为uint64,2个value的数据类型分别为uint32和uint64。通过数据单元的格式可以计算每个数据单元的大小和个数。以数据单元的格式为fields:uint64,uint32,uint64为例,key占用sizeof(uint64)=8字节,value1占用sizeof(uint32)=4字节,value2占用sizeof(uint64)=8字节,则一个数据单元占用8+4+8=20字节,数据单元个数=文件总大小/一个单元占用的空间大小。
S103:基于所述元数据文件,在预先创建的共享内存区中,为各目标文件分别顺序分配共享内存块;所述共享内存区中存储有每个所分配的共享内存块的块序号与对应的目标文件的哈希值的对应关系。
可选地,可以向系统提前申请分配一个共享内存区,该共享内存区可以被划分为多个共享内存块。共享内存块的大小和数量可以预先设定,也可根据元数据文件来确定得到。
在一可选实施例中,如图3所示,所述基于所述元数据文件,在预先创建的共享内存区中,为各目标文件分别顺序分配共享内存块可以包括:
S301:基于所述元数据文件中各目标文件的属性信息,确定待划分的共享内存块的大小和块总数。
可选地,目标文件的属性信息可以包括数据单元的格式和目标文件总数,还可以包括数据单元数量、目标文件的总大小等。根据元数据文件中所记录的数据单元的格式和数据单元数量、或者目标文件的总大小,确定每个待划分的共享内存块的大小。根据元数据文件中目标文件总数N,确定每个待划分的共享内存块的块总数M。每个共享内存块对应存储一个目标文件,则M大于等于N。当然,为了节省内存开销,M和N的数值可以相等,每个共享内存块的大小可以不小于对应存储的目标文件的大小。
S303:根据所确定的共享内存块的大小和块总数,将预先创建的共享内存区划分为多个共享内存块。
可选地,在确定每个共享内存块的大小和块总数之后,即可在预先创建的共享内存区划分为多个共享内存块。每个共享内存块的大小可以相同。
此外,可选地,在共享内存区中除了需要划分多个共享内存块之外,还可划分一个存储块,利用该存储块用于存储目标文件和对应共享内存块的对应关系。
S305:获取每个目标文件的哈希值,对所述多个目标文件进行哈希值大小排序。
可选地,可以按照哈希值从大到小的顺序,对多个目标文件进行排序。或者,也可按照哈希值从小到大的顺序,对多个目标文件进行排序。当然,在其他实施方式中,还可以按照其他预设哈希值排序规则对多个目标文件进行排序。
S307:基于排序结果和所述共享内存区中各共享内存块的先后顺序,依次为各目标文件分别分配对应的共享内存块。
可选地,在共享内存区域划分共享内存块时,每个共享内存块可以有先后顺序,该先后顺序可以为划分时间顺序或者内存地址位置顺序等。与此同时,可以根据各共享内存块的先后顺序为每个共享内存块进行编号,每个共享内存块分别对应一个块序号。根据多个目标文件的排序结果以及各共享内存块的先后顺序,依次为各目标文件分别对应顺序分配一个共享内存块。
在一些可选实施方式中,可以基于排序结果和所述共享内存区中各共享内存块的先后顺序,依次为各目标文件分别分配对应的至少一个共享内存块。例如,每个目标文件分别对应分配有两个共享内存块,或者每个目标文件分别对应分配的共享内存块的数量不完全相同,例如按照预设的分配规律。示例性地,该预设的分配规律可以为周期性分配规律,比如,第一个目标文件对应分配1个共享内存块,第二个目标文件对应分配2个共享内存块,第三个目标文件对应分配1个共享内存块,第四个目标文件对应分配2个共享内存块等等。或者,该预设的分配规律可以为递增或递减分配规律,比如后t个目标文件对应分配的共享内存块的数量比前t个目标文件对应分配的共享内存块的数量多s个,其中t和s均为正整数。具体的,若t=2,s=1,也即第一个目标文件和第二目标文件分别对应分配1个共享内存块,第三个目标文件和第四个目标文件分别对应分配2个共享内存块,第五个目标文件和第六个目标文件分别对应分配3个共享内存块等等。通过依次为各目标文件分别分配对应的至少一个共享内存块,可以适配多种类型和大小的数据存储和更新,提高数据处理方法的灵活性。
S105:基于所述对应关系以及所述元数据文件,将各目标文件加载至对应的共享内存块中。
其中,所述目标文件包括至少一个具有键值对结构的数据单元,每个共享内存块可以包括块序号存储子区、键值存储子区和数值存储子区。
在一可选实施例中,如图4所示,所述基于所述对应关系以及所述元数据文件,将各目标文件加载至对应的共享内存块中可以包括:
S401:基于所述元数据文件中各目标文件的属性信息,确定待加载的目标文件的存储位置;
S403:基于每个目标文件的哈希值以及所述对应关系,确定对应的共享内存块的块序号;
S405:获取所确定的块序号对应的共享内存块的块指针;
S407:根据所述待加载的目标文件的存储位置、所述块指针以及每个目标文件中各数据单元的键大小顺序,将每个目标文件中各数据单元分别顺序加载至对应的共享内存块中的键值存储子区和数值存储子区。
可选地,通过目标文件的存储位置可以拉取目标文件的各数据单元对应的数据,接着通过共享内存块的块指针将目标文件的各数据单元指向对应共享内存块,并根据每个目标文件中各数据单元的键大小顺序,依次将每个目标文件中各数据单元中的key和value分别顺序加载至对应的共享内存块中的键值存储子区和数值存储子区,从而可提高数据处理效率。
S107:将指向所述待更新数据的当前存储区的指针,调整为指向所述共享内存区中各共享内存块,以实现针对所述待更新数据的更新。
在一可选实施例中,如图5和7所示,所述将指向所述待更新数据的当前存储区的指针,调整为指向所述共享内存区中各共享内存块,以实现针对所述待更新数据的更新可以包括:
S501:获取所述待更新数据中每个数据单元所指向当前存储区的指针的至少一个第一指针数值;
S503:获取指向所述共享内存区中各共享内存块的指针的至少一个第二指针数值;
S505:基于所述待更新数据中每个数据单元的哈希值以及所述对应关系,将所述待更新数据中每个数据单元的第一指针数值分别调整为对应的第二指针数值,以实现针对所述待更新数据的更新。
其中,所述当前存储区包括共享存储、本地存储、磁盘存储、缓存存储中的至少一种。可选地,该当前存储区也可为云存储或其它可行的存储。
本公开采用将离线更新数据文件载入共享内存,通知KV系统切换共享内存指针来实现数据的全量更新,更新所需时间为将数据文件加载进内存的时间,极大缩短了更新时间。通过将目标文件加载进共享内存,实现了逐块切换和一次写入。另外,采用将数据分成多个目标文件,通过逐个文件更新,减少更新时对系统内存的要求和计算压力,更新效率高,同时也有利于提高查询速度,解决了相关技术在数据更新时更新速度慢,以及并发更新导致系统压力大和系统响应延迟等不足。
在一可选实施例中,所述将指向所述待更新数据的当前存储区的指针,调整为指向所述共享内存区中各共享内存块之后,所述方法还包括:
S109:当检测到所述待更新数据中的所有数据单元对应的第一指针数据均被调整为第二指针数值时,释放存储有所述待更新数据的当前存储区。
上述实施例,通过检测到待更新数据中的所有数据单元对应的第一指针数据均被调整为第二指针数值时,也即完成了待更新数据的当前存储区中所有指针切换。之后,通过释放存储有所述待更新数据的当前存储区,也即释放掉待更新数据的原存储空间,避免内存泄露。
在一可选实施例中,如图6所示,所述方法还可以包括:
S601:获取所述全量更新数据中每个目标文件的哈希值以及预设调整值,所述预设调整值为自然数;
S603:对所述每个目标文件的哈希值和预设调整值进行相同的大小排序;
S605:将相同排序序号的目标文件的哈希值和预设调整值取和值,得到调整后的序号;
S607:将调整后的序号作为共享内存块的块序号。
相应的,所述基于所述对应关系以及所述元数据文件,将各目标文件加载至对应的共享内存块中包括:
S609:基于所述共享内存块的块序号、预设调整值以及所述元数据文件,将各目标文件加载至对应的共享内存块中。
其中,预设调整值的数量可以为匹配目标文件的数量,多个预设调整值的数值可以两两互不相同,也可以部分相同。该进行相同的大小排序是指对每个目标文件的哈希值的排序方式和对预设调整值的排序方式相同,例如分别均按照从大到小的顺序进行排序、或者分别均按照从小到大的顺序进行排序等等。
上述实施例,通过预设调整值和目标文件的哈希值来确定共享内存块的块序号,可以直接基于共享内存块的块序号和预设调整值来确定目标文件的哈希值,省去了根据每个所分配的共享内存块的块序号与对应的目标文件的哈希值的对应关系查找步骤,减少更新耗时,从而进一步提高数据更新效率。
图8是本公开实施例提供的利用更新的数据进行数据查询步骤的流程示意图。请参见图8所示,所述方法还包括:
S801:当接收到数据查询请求指令时,提取所述数据查询请求中携带的待查询数据的关键字符。
可选地,终端向服务器发送数据查询请求指令,该数据查询请求中携带的待查询数据的关键字符。服务器响应于该数据查询请求指令时,提取所述数据查询请求中携带的待查询数据的关键字符。之后,服务器可以基于该关键字进行索引查询,以向终端反馈查询结果。
这里的终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本公开在此不做限制。
S803:根据所述关键字符对应的哈希值以及所述对应关系,从所述共享内存区中确定目标共享内存块。
其中,对应关系为每个所分配的共享内存块的块序号与对应的目标文件的哈希值的映射关系。在获取到关键字符对应的哈希值后,可以根据共享内存区中存储有该对应关系,确定与该关键字符对应的哈希值对应的共享内存块的块序号,从而根据确定的块序号从共享内存区中找出对应的目标共享内存块。
可选地,所述根据所述关键字符对应的哈希值以及所述对应关系,从所述共享内存区中确定目标共享内存块包括:
S8031:根据所述关键字符的键,利用哈希算法确定所述关键字符对应的哈希值;
S8033:基于所述关键字符对应的哈希值以及所述对应关系,确定目标共享内存块的块序号;
S8035:获取所述块序号对应的块指针,定位至所述目标共享内存块;
S8037:从所述共享内存区中确定所述目标共享内存块。
S805:将所述关键字符对应的键作为查询对象,在所述目标共享内存块中进行查找,返回所述待查询数据的查找结果。
可选地,服务器在确定目标共享内存块之后,可以根据数据查询请求中携带的待查询数据的关键字符对应的键在该目标共享内存块进行二分查找,若查找到匹配的键,则将该匹配的键key对应的value作为待查询数据的查找结果,返回至终端,并展示在终端的界面上。若没有查找到匹配的键则返回空。
关于二分查找算法,以C库的bsearch函数举例:
void*bsearch(const void*key,const void*base,size_t nmem,size_t size,int(*comp)(cosnt void*,const void*))
其中,key--指向要查找的元素的指针;
base--指向进行查找的数组的第一个对象的指针,即内存块的起始地址;
nitems--base所指向的数组中元素的个数。即数据单元的个数;
size--数组中每个元素的大小,以字节为单位,即数据单元所占内大小,此例中为20字节;
compar--用来比较两个元素的函数,即比较数据单元的key字段。
在一可选实施例中,本公开实施例提供的数据处理方法,除了支持上述key为一个值的数据单元,还支持key对应的值为数组,比如,key1,value11,value12;key1,value13,value14,即key1对应的值为一个数组,第一个元素为value11,value12;第二个元素为value13,value14。在具体实现中,目标文件保持按key单调递增;查询时,二分查找找到一个数据单元之后,判断前一个数据单元的key是否也等于目标key,直到key!=目标key为止,则找到了第一个key=目标key的数据单元;然后向后判断,直到key!=目标key为止,则找到了最后一个key=目标key的数据单元;这样就找出所有key=目标key的数据单元,组成一个数组返回。
上述实施例,在接收到数据查询请求指令时,通过提取该数据查询请求中携带的待查询数据的关键字符,并基于该关键字符对应的哈希值,从共享内存区中确定目标共享内存块,接着在该目标共享内存块中查找关键字符对应的查找结果。从而实现了同步全量数据更新和数据查询,提高了数据查询的实时性和查询速度,也减少了数据查询时计算量。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
请参考图9,其示出了本公开实施例提供的一种数据处理装置的结构框图。该装置具有实现上述方法示例中的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。所述数据处理装置可以包括:
获取模块910,用于当接收到数据更新请求指令时,获取待更新数据对应的全量更新数据;所述全量更新数据包括多个目标文件、以及与多个所述目标文件对应的元数据文件,不同的目标文件对应不同的哈希值;
分配模块920,用于基于所述元数据文件,在预先创建的共享内存区中,为各目标文件分别顺序分配共享内存块;所述共享内存区中存储有每个所分配的共享内存块的块序号与对应的目标文件的哈希值的对应关系;
加载模块930,用于基于所述对应关系以及所述元数据文件,将各目标文件加载至对应的共享内存块中;
调整模块940,用于将指向所述待更新数据的当前存储区的指针,调整为指向所述共享内存区中各共享内存块,以实现针对所述待更新数据的更新。
在一可选实施例,所述分配模块920可以包括:
基于所述元数据文件中各目标文件的属性信息,确定待划分的共享内存块的大小和块总数;
根据所确定的共享内存块的大小和块总数,将预先创建的共享内存区划分为多个共享内存块;
获取每个目标文件的哈希值,对所述多个目标文件进行哈希值大小排序;
基于排序结果和所述共享内存区中各共享内存块的先后顺序,依次为各目标文件分别分配对应的共享内存块。
在一可选实施例,所述目标文件包括至少一个具有键值对结构的数据单元,每个共享内存块包括块序号存储子区、键值存储子区和数值存储子区。所述加载模块1030可以包括:
基于所述元数据文件中各目标文件的属性信息,确定待加载的目标文件的存储位置;
基于每个目标文件的哈希值以及所述对应关系,确定对应的共享内存块的块序号;
获取所确定的块序号对应的共享内存块的块指针;
根据所述待加载的目标文件的存储位置、所述块指针以及每个目标文件中各数据单元的键大小顺序,将每个目标文件中各数据单元分别顺序加载至对应的共享内存块中的键值存储子区和数值存储子区。
在一可选实施例,调整模块940可以包括:
获取所述待更新数据中每个数据所指向当前存储区的指针的至少一个第一指针数值;
获取指向所述共享内存区中各共享内存块的指针的多个第二指针数值;
基于所述待更新数据中每个数据的哈希值以及所述对应关系,将所述待更新数据中每个数据的第一指针数值分别调整为对应的第二指针数值,以实现针对所述待更新数据的更新。
在一可选实施例,所述装置还可以包括:
当检测到所述待更新数据中的所有数据对应的第一指针数据均被调整为第二指针数值时,释放存储有所述待更新数据的当前存储区;
其中,所述当前存储区包括共享存储、本地存储、磁盘存储、缓存存储中的至少一种。
在一可选实施例,所述装置还可以包括:
获取所述全量更新数据中每个目标文件的哈希值以及预设调整值,所述预设调整值为自然数;
对所述每个目标文件的哈希值和预设调整值进行相同的大小排序;
将相同排序序号的目标文件的哈希值和预设调整值取和值,得到调整后的序号;
将调整后的序号作为共享内存块的块序号;
相应的,所述加载模块可以包括:
基于所述共享内存块的块序号、预设调整值以及所述元数据文件,将各目标文件加载至对应的共享内存块中。
在一可选实施例,如图10所示,所述装置还可以包括:
指令接收模块950,用于当接收到数据查询请求指令时,提取所述数据查询请求中携带的待查询数据的关键字符;
目标块确定模块960,用于根据所述关键字符对应的哈希值以及所述对应关系,从所述共享内存区中确定目标共享内存块;
查询模块970,用于将所述关键字符对应的键作为查询对象,在所述目标共享内存块中进行查找,返回所述待查询数据的查找结果。
在一可选实施例,所述目标块确定模块可以包括:
根据所述关键字符的键,利用哈希算法确定所述关键字符对应的哈希值;
基于所述关键字符对应的哈希值以及所述对应关系,确定目标共享内存块的块序号;
获取所述块序号对应的块指针,定位至所述目标共享内存块;
从所述共享内存区中确定目标共享内存块。
上述实施例中提供的装置可执行本公开实施例中的对应方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的方法。
本公开实施例提供了一种计算机设备,该设备可以包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例任一所述的数据处理方法。
本公开实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行上述方法实施例任一所述的数据处理方法。
本公开实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本实施例上述任一所述的数据处理方法。
进一步地,图11示出了一种用于实现本公开实施例所提供的方法的设备的硬件结构示意图,所述设备可以为计算机终端、移动终端或其它设备,所述设备还可以参与构成或包含本公开实施例所提供的装置。如图11所示,计算机终端11可以包括一个或多个(图中采用112a、112b,……,112n来示出)处理器112(处理器112可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器114、以及用于通信功能的传输装置116。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图11所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端11还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。
应当注意到的是上述一个或多个处理器112和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端11(或移动设备)中的其他元件中的任意一个内。如本公开实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器114可用于存储应用软件的软件程序以及模块,如本公开实施例中所述的方法对应的程序指令/数据存储装置,处理器112通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种神经网络处理方法。存储器114可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器114可进一步包括相对于处理器112远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端11。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置116用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端11的通信供应商提供的无线网络。在一个实例中,传输装置116包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置116可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端11(或移动设备)的用户界面进行交互。
需要说明的是:上述本公开实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本公开特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本公开中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
当接收到数据更新请求指令时,获取待更新数据对应的全量更新数据;所述全量更新数据包括多个目标文件、以及与多个所述目标文件对应的元数据文件,不同的目标文件对应不同的哈希值;
基于所述元数据文件,在预先创建的共享内存区中,为各目标文件分别顺序分配共享内存块;所述共享内存区中存储有每个所分配的共享内存块的块序号与对应的目标文件的哈希值的对应关系;
基于所述对应关系以及所述元数据文件,将各目标文件加载至对应的共享内存块中;
将指向所述待更新数据的当前存储区的指针,调整为指向所述共享内存区中各共享内存块,以实现针对所述待更新数据的更新。
2.根据权利要求1所述的方法,其特征在于,所述基于所述元数据文件,在预先创建的共享内存区中,为各目标文件分别顺序分配共享内存块包括:
基于所述元数据文件中各目标文件的属性信息,确定待划分的共享内存块的大小和块总数;
根据所确定的共享内存块的大小和块总数,将预先创建的共享内存区划分为多个共享内存块;
获取每个目标文件的哈希值,对所述多个目标文件进行哈希值大小排序;
基于排序结果和所述共享内存区中各共享内存块的先后顺序,依次为各目标文件分别分配对应的共享内存块。
3.根据权利要求1所述的方法,其特征在于,所述目标文件包括至少一个具有键值对结构的数据单元,每个共享内存块包括块序号存储子区、键值存储子区和数值存储子区;
所述基于所述对应关系以及所述元数据文件,将各目标文件加载至对应的共享内存块中包括:
基于所述元数据文件中各目标文件的属性信息,确定待加载的目标文件的存储位置;
基于每个目标文件的哈希值以及所述对应关系,确定对应的共享内存块的块序号;
获取所确定的块序号对应的共享内存块的块指针;
根据所述待加载的目标文件的存储位置、所述块指针以及每个目标文件中各数据单元的键大小顺序,将每个目标文件中各数据单元分别顺序加载至对应的共享内存块中的键值存储子区和数值存储子区。
4.根据权利要求1所述的方法,其特征在于,所述将指向所述待更新数据的当前存储区的指针,调整为指向所述共享内存区中各共享内存块,以实现针对所述待更新数据的更新包括:
获取所述待更新数据中每个数据所指向当前存储区的指针的至少一个第一指针数值;
获取指向所述共享内存区中各共享内存块的指针的多个第二指针数值;
基于所述待更新数据中每个数据的哈希值以及所述对应关系,将所述待更新数据中每个数据的第一指针数值分别调整为对应的第二指针数值,以实现针对所述待更新数据的更新。
5.根据权利要求4所述的方法,其特征在于,所述将指向所述待更新数据的当前存储区的指针,调整为指向所述共享内存区中各共享内存块之后,所述方法还包括:
当检测到所述待更新数据中的所有数据对应的第一指针数据均被调整为第二指针数值时,释放存储有所述待更新数据的当前存储区;
其中,所述当前存储区包括共享存储、本地存储、磁盘存储、缓存存储中的至少一种。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述全量更新数据中每个目标文件的哈希值以及预设调整值,所述预设调整值为自然数;
对所述每个目标文件的哈希值和预设调整值进行相同的大小排序;
将相同排序序号的目标文件的哈希值和预设调整值取和值,得到调整后的序号;
将调整后的序号作为共享内存块的块序号;
相应的,所述基于所述对应关系以及所述元数据文件,将各目标文件加载至对应的共享内存块中包括:
基于所述共享内存块的块序号、预设调整值以及所述元数据文件,将各目标文件加载至对应的共享内存块中。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到数据查询请求指令时,提取所述数据查询请求中携带的待查询数据的关键字符;
根据所述关键字符对应的哈希值以及所述对应关系,从所述共享内存区中确定目标共享内存块;
将所述关键字符对应的键作为查询对象,在所述目标共享内存块中进行查找,返回所述待查询数据的查找结果。
8.根据权利要求7所述的方法,其特征在于,所述根据所述关键字符对应的哈希值以及所述对应关系,从所述共享内存区中确定目标共享内存块包括:
根据所述关键字符的键,利用哈希算法确定所述关键字符对应的哈希值;
基于所述关键字符对应的哈希值以及所述对应关系,确定目标共享内存块的块序号;
获取所述块序号对应的块指针,定位至所述目标共享内存块;
从所述共享内存区中确定所述目标共享内存块。
9.一种数据处理装置,其特征在于,所述装置包括:
获取模块,用于当接收到数据更新请求指令时,获取待更新数据对应的全量更新数据;所述全量更新数据包括多个目标文件、以及与多个所述目标文件对应的元数据文件,不同的目标文件对应不同的哈希值;
分配模块,用于基于所述元数据文件,在预先创建的共享内存区中,为各目标文件分别顺序分配共享内存块;所述共享内存区中存储有每个所分配的共享内存块的块序号与对应的目标文件的哈希值的对应关系;
加载模块,用于基于所述对应关系以及所述元数据文件,将各目标文件加载至对应的共享内存块中;
调整模块,用于将指向所述待更新数据的当前存储区的指针,调整为指向所述共享内存区中各共享内存块,以实现针对所述待更新数据的更新。
10.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-8任一所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011117386.6A CN112148693A (zh) | 2020-10-19 | 2020-10-19 | 一种数据处理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011117386.6A CN112148693A (zh) | 2020-10-19 | 2020-10-19 | 一种数据处理方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112148693A true CN112148693A (zh) | 2020-12-29 |
Family
ID=73953340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011117386.6A Pending CN112148693A (zh) | 2020-10-19 | 2020-10-19 | 一种数据处理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148693A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112616024A (zh) * | 2020-12-31 | 2021-04-06 | 深兰科技(上海)有限公司 | Usb摄像头数据获取方法、装置、电子设备和存储介质 |
CN112862067A (zh) * | 2021-01-14 | 2021-05-28 | 支付宝(杭州)信息技术有限公司 | 基于隐私保护利用业务模型进行业务处理的方法和装置 |
CN113259166A (zh) * | 2021-05-27 | 2021-08-13 | 长扬科技(北京)有限公司 | 一种日志告警处理方法和装置 |
CN113469215A (zh) * | 2021-05-28 | 2021-10-01 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113741822A (zh) * | 2021-11-05 | 2021-12-03 | 腾讯科技(深圳)有限公司 | 数据存储方法、数据读取方法及相关装置 |
-
2020
- 2020-10-19 CN CN202011117386.6A patent/CN112148693A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112616024A (zh) * | 2020-12-31 | 2021-04-06 | 深兰科技(上海)有限公司 | Usb摄像头数据获取方法、装置、电子设备和存储介质 |
CN112862067A (zh) * | 2021-01-14 | 2021-05-28 | 支付宝(杭州)信息技术有限公司 | 基于隐私保护利用业务模型进行业务处理的方法和装置 |
CN113259166A (zh) * | 2021-05-27 | 2021-08-13 | 长扬科技(北京)有限公司 | 一种日志告警处理方法和装置 |
CN113469215A (zh) * | 2021-05-28 | 2021-10-01 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113469215B (zh) * | 2021-05-28 | 2022-07-08 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113741822A (zh) * | 2021-11-05 | 2021-12-03 | 腾讯科技(深圳)有限公司 | 数据存储方法、数据读取方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148693A (zh) | 一种数据处理方法、装置及存储介质 | |
US10853242B2 (en) | Deduplication and garbage collection across logical databases | |
Konstantinou et al. | On the elasticity of NoSQL databases over cloud management platforms | |
US9372880B2 (en) | Reclamation of empty pages in database tables | |
CN110347651B (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
US11514028B2 (en) | Hybrid data storage and load system with ROWID lookup | |
CN106407207B (zh) | 一种实时新增数据更新方法和装置 | |
CN112800095A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN107408132B (zh) | 跨越多个类型的存储器移动分层数据对象的方法和系统 | |
CN111917834A (zh) | 一种数据同步方法、装置、存储介质及计算机设备 | |
CN111241177A (zh) | 数据采集方法、系统及网络设备 | |
CN111651424B (zh) | 一种数据处理方法、装置、数据节点及存储介质 | |
CN113687964A (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN110381136B (zh) | 一种数据读取方法、终端、服务器及存储介质 | |
CN112084173A (zh) | 数据迁移方法和装置及存储介质 | |
US10896056B2 (en) | Cluster expansion method and apparatus, electronic device and storage medium | |
CN114610680A (zh) | 分布式文件系统元数据管理方法、装置、设备及存储介质 | |
Zhou et al. | Sfmapreduce: An optimized mapreduce framework for small files | |
CN105426119A (zh) | 一种存储设备及数据处理方法 | |
CN112445776A (zh) | 基于Presto的动态分桶方法、系统、设备及可读存储介质 | |
WO2023197904A1 (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN111427920A (zh) | 数据采集方法、装置、系统、计算机设备及存储介质 | |
CN115964002A (zh) | 一种电能表终端档案管理方法、装置、设备及介质 | |
CN113297226B (zh) | 数据存储方法、数据读取方法、装置、电子设备及介质 | |
US10146791B2 (en) | Open file rebalance |
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 |