CN106708825B - 一种数据文件处理方法及*** - Google Patents

一种数据文件处理方法及*** Download PDF

Info

Publication number
CN106708825B
CN106708825B CN201510454768.0A CN201510454768A CN106708825B CN 106708825 B CN106708825 B CN 106708825B CN 201510454768 A CN201510454768 A CN 201510454768A CN 106708825 B CN106708825 B CN 106708825B
Authority
CN
China
Prior art keywords
data
data file
shared drive
file
directory
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
CN201510454768.0A
Other languages
English (en)
Other versions
CN106708825A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201510454768.0A priority Critical patent/CN106708825B/zh
Publication of CN106708825A publication Critical patent/CN106708825A/zh
Application granted granted Critical
Publication of CN106708825B publication Critical patent/CN106708825B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据文件处理方法及***,其中该方法包括:获取磁盘上的数据文件,其中数据文件以共享内存的数据结构进行存放;采用内存映射的方式将数据文件加载到共享内存中,并对共享内存进行初始化;基于该加载过程记录数据更新信息,数据更新信息包括数据文件的文件名以及第一时间信息,所述第一时间信息为加载过程加载时的时间;根据数据更新信息对数据文件进行读取处理。本发明实施例通过将磁盘上明文数据结构的数据文件以共享内存的数据结构进行存放,并将其加载到共享内存中,提高了加载效率;支持一处加载、多处使用,即通过共享内存,实现多个进程使用同一份共享内存数据,大大降低了额外的内存占用。

Description

一种数据文件处理方法及***
技术领域
本发明属于通信技术领域,尤其涉及一种数据文件处理方法及***。
背景技术
随着互联网技术的迅速发展,在搜索业务中的检索串分析和纠错、个性化推荐业务中的推荐服务等大量的服务中都需要有大量的数据来支持决策。表现在程序中,则是线上服务需要加载大量的数据,每次处理需要进行大量的查表操作。同时,需要按照一定的频率对数据进行更新,以适应变化。更新的频率可以是实时(秒级)、准实时(分钟级)或者定时(天级)更新。
现有技术中,通常每个服务进程都自行负责数据的加载和更新,一般是进程读取数据文件,并自己构建内存数据结构,为了支持不停服更新,一般的做法是,启动一个独立线程进行数据更新,在更新过程中维持旧的数据不变,待新数据加载完成后,删除老数据。
在对现有技术的研究和实践过程中,本发明的发明人发现,现有技术中内存数据只能在单个进程中使用,如果多个进程需要使用相同数据,则需要分别加载、分别更新,从而会导致额外的内存占用;并且该数据为明文数据结构,加载时间较长,从而导致加载效率不高。
发明内容
本发明的目的在于提供一种数据文件处理方法及***,旨在提高数据文件处理准确率以及召回率。
为解决上述技术问题,本发明实施例提供以下技术方案:
一种数据文件处理方法,其中包括:
获取磁盘上的数据文件,其中所述数据文件以共享内存的数据结构进行存放;
采用内存映射的方式将所述数据文件加载到所述共享内存中,并对所述共享内存进行初始化;
基于该加载过程记录数据更新信息,所述数据更新信息包括数据文件的文件名以及第一时间信息,所述第一时间信息为所述加载过程加载时的时间;
根据所述数据更新信息对数据文件进行读取处理。
为解决上述技术问题,本发明实施例还提供以下技术方案:
一种数据文件处理***,其中包括:
数据管理模块,用于获取磁盘上的数据文件,其中所述数据文件以共享内存的数据结构进行存放;采用内存映射的方式将所述数据文件加载到所述共享内存中,并对所述共享内存进行初始化;基于该加载过程记录数据更新信息,所述数据更新信息包括数据文件的文件名以及第一时间信息,所述第一时间信息为所述加载过程加载时的时间;
数据读取模块,用于根据所述数据更新信息对数据文件进行读取处理。
相对于现有技术,本实施例,先将数据文件以共享内存的数据结构存放在磁盘上,并将采用内存映射的方式将所述数据文件加载到所述共享内存中,并记录更新信息,以实现对数据文件进行加载处理,进而根据所述数据更新信息对数据文件进行更新和加载,以便进程共同使用共享内存中的数据;本发明实施例通过将磁盘上明文数据结构的数据文件以共享内存的数据结构进行存放,并将其加载到共享内存中,提高了加载效率;支持一处加载、多处使用,即通过共享内存,实现多个进程使用同一份共享内存数据,大大降低了额外的内存占用。
附图说明
下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技 术方案及其它有益效果显而易见。
图1a是本发明实施例提供的数据文件处理方法的场景示意图;
图1b为本发明实施例提供的数据文件处理方法的流程示意图;
图2为本发明实施例提供的数据文件处理方法的流程示意图;
图3为本发明实施例提供的数据文件的数据结构示意;
图4为本发明实施例提供的数据文件处理***的结构示意图;
图5为本发明实施例提供的服务器的结构示意图。
具体实施方式
请参照图式,其中相同的组件符号代表相同的组件,本发明的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本发明具体实施例,其不应被视为限制本发明未在此详述的其它具体实施例。
在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有述明。因此,这些步骤及操作将有数次提到由计算机执行,本文所指的计算机执行包括了由代表了以一结构化型式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存***中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实***置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
本发明的原理使用许多其它泛用性或特定目的运算、通信环境或组态来进行操作。所熟知的适合用于本发明的运算***、环境与组态的范例可包括(但不限于)手持电话、个人计算机、服务器、多处理器***、微电脑为主的***、主架构型计算机、及分布式运算环境,其中包括了任何的上述***或装置。
本文所使用的术语「模块」可看做为在该运算***上执行的软件对象。本 文所述的不同组件、模块、引擎及服务可看做为在该运算***上的实施对象。而本文所述的装置及方法优选的以软件的方式进行实施,当然也可在硬件上进行实施,均在本发明保护范围之内。
本发明实施例提供一种数据文件处理方法及***。
参见图1a,该图为本发明实施例所提供的数据文件处理***的场景示意图,该数据文件处理***具体可以集成在服务器等设备中,该数据文件处理***可以具体包括数据管理模块,主要用于获取磁盘上的数据文件,其中所述数据文件以共享内存的数据结构进行存放;其中,共享内存的数据结构可以包括数组、散列表、双数组单词查找树等等,其后采用内存映射的方式将所述数据文件加载到所述共享内存中,并对所述共享内存进行初始化;基于该加载过程记录数据更新信息,所述数据更新信息包括数据文件的文件名以及第一时间信息,所述第一时间信息为所述加载过程加载时的时间;当然,该数据管理模块还可以进一步的用于对数据文件进行更新处理等;加载/更新
此外,该数据文件处理***还可以具体包括数据读取模块,主要是用于根据所述数据更新信息对数据文件进行更新和加载,以便进程共同使用共享内存中的数据;另外,该数据文件处理***还可以具体包括******,也可称为更新检测模块,主要是用于对磁盘上的数据文件进行更新检测,以使数据管理模块进行更新和加载处理,数据读取模块根据数据更新信息进行更新和加载。
以下将分别进行详细说明。
第一实施例
在本实施例中,将从数据文件处理的角度进行描述,该数据文件处理***具体可以集成在服务器等设备中。
一种数据文件处理方法,包括:获取磁盘上的数据文件,其中该数据文件以共享内存的数据结构进行存放;采用内存映射的方式将该数据文件加载到共享内存中,并对该共享内存进行初始化;基于该加载过程记录数据更新信息, 该数据更新信息包括数据文件的文件名以及第一时间信息,该第一时间信息为该加载过程加载时的时间;根据该数据更新信息对数据文件进行读取处理。
请参阅图1b,图1b是本发明第一实施例提供的数据文件处理方法的流程示意图。该方法包括:
在步骤S101中,获取磁盘上的数据文件,其中该数据文件以共享内存的数据结构进行存放。
可以理解的是,在进行数据文件加载时,可以先对磁盘上的数据文件进行预处理,例如:以共享内存的数据结构将数据文件保存在磁盘中,其中,共享内存的数据结构包括但不限于数组、散列表、双数组单词查找树(trie)等,此处对其不作具体限定。
在步骤S102中,采用内存映射的方式将该数据文件加载到该共享内存中,并对该共享内存进行初始化。
例如,此处初始化的操作可以具体指对内存数据中的锁进行初始化操作,主要针对同时有读写(如对部分数据进行修改)需求的内存数据,需要在内存数据结构中设计锁(如读写锁、顺序锁等)来保证正确访问。
可选的,在对该共享内存进行初始化之后,还可以对磁盘上的数据文件进行实时的更新检测,例如,具体可以如下:
(1)在检测时确定出存在有需要更新的数据文件时,将该需要更新的数据文件复制到更新目录下;
(2)将该更新目录下的数据文件加载到共享内存中,并对该共享内存进行初始化;
(3)将数据目录下的数据文件移动到备份目录;将该更新目录下的数据文件移动到该数据目录下。
在数据文件加载更新之后,还可以对原有的数据文件映射进行删除。
需要说明的是,本发明实施例中,该更新目录、该数据目录以及该备份目录是提前设置的,且这三个目录在同一文件***中,以保证数据文件在移动时 文件***索引节点(inode)保持不变,从而保持内存映射关系;该索引节点可以用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。
进一步可选的,可以通过循环冗余校验码或者报文摘要算法(MD5,Message-Digest Algorithm 5)等方式对数据文件进行更新检测,此处不作具体描述。
在步骤S103中,基于该加载过程记录数据更新信息,该数据更新信息包括数据文件的文件名以及第一时间信息,该第一时间信息为该加载过程加载时的时间。
通过对磁盘数据文件的数据结构进行改变,将该数据文件加载到共享内存中,并记录相关的数据更新信息,从而数据管理的模块也完成了数据加载的过程。
在步骤S104中,根据该数据更新信息对数据文件进行读取处理。
比如:在数据管理的模块记录了数据更新信息之后,使用数据的模块可以按照预设时间间隔,对该数据更新信息进行读取和检测;若确定出数据更新信息中指示有目的数据文件的更新信息,则采用内存映射的方式将数据文件加载到该共享内存中,并记录该使用数据的模块映射加载时的时间为第二时间信息。
可以理解的是,由于步骤S102已执行了初始化操作,因此该使用数据的模块不需要再做额外操作,操作***可以保证同一个数据文件映射到相同的共享内存中,从而使用数据的模块也完成了数据加载的过程。
由上述可知,本实施例提供的数据文件处理方法,先将数据文件以共享内存的数据结构存放在磁盘上,并将采用内存映射的方式将该数据文件加载到该共享内存中,并记录更新信息,以实现对数据文件进行加载处理,进而根据该数据更新信息对数据文件进行更新和加载,以便进程共同使用共享内存中的数据;本发明实施例通过将磁盘上明文数据结构的数据文件以共享内存的数据结构进行存放,并将其加载到共享内存中,提高了加载效率;支持一处加载、多处使用,即通过共享内存,实现多个进程使用同一份共享内存数据,大大降低 了额外的内存占用。
第二实施例
根据第一实施例所描述的方法,以下将举例作进一步详细说明。
该数据文件处理***中包括:数据管理模块、数据使用模块以及更新检测模块;首先,数据管理模块已将磁盘上的数据文件映射到共享内存,记录该过程的数据更新信息。其次,数据使用模块也根据数据更新信息将数据文件映射到共享内存;数据加载完成后,更新检测模块可进一步实时的对磁盘文件进行更新检测,以使数据管理模块和数据读取模块根据数据进行更新和加载。
其中***在更新加载中涉及到的数据包括:磁盘上的数据文件、共享内存数据和所记录的数据更新信息,以及用来检查文件正确性的循环冗余校验文件(CRC,CyclicRedundancy Check)和指示更新的标识(flag)文件等。
以下将进行详细说明。
如图2所示,一种数据文件处理方法,具体流程可以如下:
在步骤S201中,更新检测模块对磁盘上的数据文件进行更新检测。
其中,更新检测的方式包括但不限于crc校验、md5sum校验。校验成功后触发步骤“将需要更新的数据文件复制到更新目录下”。
需要说明的是,数据文件以共享内存的数据结构存放在磁盘上,也可称为存放数据的磁盘文件;***需要将数据规整成可以直接在共享内存中使用的格式,也就是共享内存数据的磁盘存储形式。
例如,可具体如下:
以二进制文件形式存放在磁盘上,通过内存映射的方式映射到共享内存。其内容可以是任何共享内存数据结构。包括但不限于数组、散列表、双数组trie树等。下面以散列表为例,其数据结构可如图3所示,散列表数据结构可以包括:
(1)头部信息HEADER,存放散列表的元数据。例如数据类型、版本号、 控制多进程访问的锁,散列表统计信息等。
(2)散列桶BUCKET,内容是指向NODE数组的索引。
(3)节点NODE,内容包括指向下一个节点的索引、key(键)。指向CHUNK数组的索引,对于值是变长的散列表,还包括值的长度。
(4)数据块CHUNK,定长散列直接存放值,变长散列还存放一个指向下一个CHUNK的索引。
容易想到的是,此处仅以散列表数据结构为例进行分析说明,不构成对本发明的限定。
在步骤S202中,当确定出存在有需要更新的数据文件时,更新检测模块将该需要更新的数据文件复制到更新目录下。
与此同时,更新检测模块可以将需要更新的数据文件的文件名写入flag文件,以便数据管理模块可以周期性的检查flag文件,读取其中的文件名。
在步骤S203中,数据管理模块将该更新目录下的数据文件加载到共享内存中,并对该共享内存进行初始化。
在步骤S204中,数据管理模块将数据目录下的数据文件移动到备份目录。
在步骤S205中,数据管理模块将该更新目录下的数据文件移动到该数据目录下。
可以理解的是,步骤S203至步骤S205为数据管理模块更新数据文件的一种较为优选的方式。
需要说明的是,本发明实施例中,该更新目录、该数据目录以及该备份目录是提前设置的,且这三个目录在同一文件***中,以保证数据文件在移动时文件***索引节点(inode)保持不变,从而保持内存映射关系;该索引节点可以用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。
进一步的,数据管理模块可采用内存映射的方式将该更新目录下的数据文件加载到共享内存中,其中,可具体的:内存映射就是指由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存映射的物理存储器来自一个已经存在于磁盘上的文件,而且在对该文件进行操作之前必须首先对文件进行映射。使用内存映射处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射在处理大数据量的文件时能起到相当重要的作用。
另外,数据管理模块将该更新目录下的数据文件加载到共享内存中,就是对“共享内存数据”进行更新,其中,共享内存数据存放在共享内存中,可以由多个进程共同使用的数据。数据的含义由进程解释。例如,定长/变长散列表,一般的key-value存储结构,trie树等。其加载一般是通过直接将“数据文件”映射到内存,并做必要的初始化操作完成。
在步骤S206中,数据管理模块删除数据文件更新前的数据文件映射,并更新该数据更新信息。
其中,该数据更新信息包括数据文件的文件名以及第一时间信息,该第一时间信息为数据管理模块将数据文件加载到共享内存时的当前时间。
可以理解的是,数据更新信息是存放在共享内存中的,以记录“共享内存数据”的更新情况。一般采用数据文件的文件名+更新时间的形式。
例如:在数据管理模块确定数据文件有更新时,将数据文件映射到共享内存的同时记录加载时的时间点为“TT”,由于数据管理模块会周期性的检查flag文件,因此会读取到当前更新的数据文件对应的文件名为“AA”,则记录数据更新信息为“AA+TT”。
在步骤S207中,数据读取模块按照预设时间间隔,对该数据更新信息进行读取。
在步骤S208中,若读取的数据更新信息中所指示的第一时间信息中的时间晚于第二时间信息中的时间,则数据读取模块确定数据文件有更新。
在步骤S209中,数据读取模块将该数据目录下已更新的数据文件映射到该 共享内存并进行等待。
在步骤S210中,数据读取模块当等待时间超过预设时间阈值时,删除数据文件更新前的数据文件映射。
可以理解的是,步骤S207至步骤S210为数据读取模块根据数据管理模块记录的数据更新信息进行数据文件更新和加载的一种较为优选的方式。
比如,数据读取模块周期性检查数据更新信息,通过读取更新信息中的时间信息来判断是否需要更新数据。如果发现数据更新信息中所指示的第一时间信息中的时间晚于第二时间信息中的时间,则数据读取模块确定数据文件有更新,也就是说,若记录的时间信息中,数据管理模块更新数据文件时记录的第一时间信息中的时间为“8:00”,而数据读取模块上一次加载数据文件是记录的第二时间信息中的时间为“7:00”,则可确定出数据文件有更新,数据读取模块需要对更新的数据文件进行更新加载。
数据读取模块更新加载数据文件,可具体如下:
比如:将数据目录下的已经更新的数据文件映射到共享内存,由于这个时候会同时存在两个映射,旧数据文件和新数据文件同时在共享内存中。这是因为当前旧数据文件还有访问,所以不能立刻解除旧数据文件的内存映射。加载完后进行等待,等待若干秒,解除旧的数据文件的映射,如2~30S,以确保旧数据文件不再被使用。
此处需要说明的是,各功能模块(如数据管理模块和数据读取模块)各自管理自己的共享内存,直到所有功能模块都解除了旧的数据文件映射后,旧的数据文件才会***作***回收掉。该处理***中,数据管理模块要负责加载、初始化和更新写入,这些操作都是排他性的,需要由一个进程来做。数据读取模块则可作为另一个进程,用于读取数据。
可以理解的是,该实施例主要针对数据管理模块和数据读取模块的更新过程进行分析,在该实施例中没有详述的部分,如,数据管理模块将数据文件加载到共享内存,并进行初始化的部分内容,可以参见第一实施例针对数据文件 处理方法的详细描述,此处不再赘述。
由上述可知,本实施例提供的数据文件处理方法,数据管理模块先将数据文件以共享内存的数据结构存放在磁盘上,并将采用内存映射的方式将该数据文件加载到该共享内存中,并记录更新信息,以实现对数据文件进行更新和加载处理,进而数据读取模块根据该数据更新信息对数据文件进行更新和加载,以便进程共同使用共享内存中的数据;本发明实施例通过将磁盘上明文数据结构的数据文件以共享内存的数据结构进行存放,并将其加载到共享内存中,提高了加载效率;支持一处加载、多处使用,即通过共享内存,实现多个进程使用同一份共享内存数据,大大降低了额外的内存占用。
第三实施例
为便于更好的实施本发明实施例提供的数据文件处理方法,本发明实施例还提供一种基于上述数据文件处理方法的***。其中名词的含义与上述数据文件处理的方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图4,图4为本发明实施例提供的数据文件处理***的结构示意图,可以具体包括数据管理模块401以及数据读取模块402。
其中,该数据管理模块401,用于将磁盘上的数据文件映射到共享内存中,并对该共享内存进行初始化;基于该加载过程记录数据更新信息,以实现对数据文件的加载处理。可具体如下:
数据管理模块401获取磁盘上的数据文件,其中该数据文件以共享内存的数据结构进行存放;采用内存映射的方式将该数据文件加载到该共享内存中,并对该共享内存进行初始化;基于该加载过程记录数据更新信息,该数据更新信息包括数据文件的文件名以及第一时间信息,该第一时间信息为该加载过程加载时的时间。
例如,此处初始化的操作可以具体指对内存数据中的锁进行初始化操作,主要针对同时有读写(如对部分数据进行修改)需求的内存数据,需要在内存 数据结构中设计锁(如读写锁、顺序锁等)来保证正确访问。
该数据管理模块401用于根据该数据更新信息对数据文件进行读取处理,可具体的,数据管理模块401根据数据更新信息对数据文件进行更新和加载,以便进程共同使用共享内存中的数据。
比如:在数据管理的模块记录了数据更新信息之后,数据读取模块402可以按照预设时间间隔,对该数据更新信息进行读取和检测;若确定出数据更新信息中指示有目的数据文件的更新信息,则采用内存映射的方式将数据文件加载到该共享内存中,并记录该数据读取模块402映射加载时的时间为第二时间信息。
可以理解的是,由于数据管理模块401已执行了初始化操作,因此该使用数据的模块不需要再做额外操作,操作***可以保证同一个数据文件映射到相同的共享内存中,从而使用数据的模块也完成了数据加载的过程。
可选的,该数据管理模块401,在获取磁盘上的数据文件之前,还可以用于以共享内存的数据结构将数据文件保存在磁盘中,该共享内存的数据结构包括数组、散列表、双数组单词查找树。
可以理解的是,在进行数据文件加载时,可以先对磁盘上的数据文件进行预处理,例如:以共享内存的数据结构将数据文件保存在磁盘中,其中,共享内存的数据结构包括但不限于数组、散列表、双数组单词查找树(trie)等,此处对其不作具体限定。
以二进制文件形式存放在磁盘上,通过内存映射的方式映射到共享内存。其内容可以是任何共享内存数据结构。包括但不限于数组、散列表、双数组trie树等。下面以散列表为例,其数据结构可如图3所示,散列表数据结构可以包括:
(1)头部信息HEADER,存放散列表的元数据。例如数据类型、版本号、控制多进程访问的锁,散列表统计信息等。
(2)散列桶BUCKET,内容是指向NODE数组的索引。
(3)节点NODE,内容包括指向下一个节点的索引、key(键)。指向CHUNK数组的索引,对于值是变长的散列表,还包括值的长度。
(4)数据块CHUNK,定长散列直接存放值,变长散列还存放一个指向下一个CHUNK的索引。
容易想到的是,此处仅以散列表数据结构为例进行分析说明,不构成对本发明的限定。
可选的,在对该共享内存进行初始化之后,还可以对磁盘上的数据文件进行实时的更新检测,例如,具体可以如下:
如图4所示,该***还可以包括更新检测模块403,用于对磁盘上的数据文件进行更新检测;其中,更新检测的方式包括但不限于crc校验、md5sum校验。当确定出存在有需要更新的数据文件时,将该需要更新的数据文件复制到更新目录下;
该数据管理模块401,还可以用于将该更新目录下的数据文件加载到共享内存中,并对该共享内存进行初始化;将数据目录下的数据文件移动到备份目录;将该更新目录下的数据文件移动到该数据目录下。
在数据文件加载更新之后,还可以对原有的数据文件映射进行删除。
比如:该数据管理模块401,在将该更新目录下的数据文件移动到该数据目录下之后,还可以用于删除数据文件更新前的数据文件映射。该数据管理模块401,在删除数据文件更新前的数据文件映射之后,还可以用于更新该数据更新信息。
需要说明的是,本发明实施例中,该更新目录、该数据目录以及该备份目录是提前设置的,且这三个目录在同一文件***中,以保证数据文件在移动时文件***索引节点(inode)保持不变,从而保持内存映射关系;该索引节点可以用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。
进一步可选的,可以通过循环冗余校验码或者报文摘要算法MD5等方式对数据文件进行更新检测,此处不作具体描述。
进一步的,数据管理模块401可采用内存映射的方式将该更新目录下的数据文件加载到共享内存中,其中,可具体的:内存映射就是指由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数(CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存映射的物理存储器来自一个已经存在于磁盘上的文件,而且在对该文件进行操作之前必须首先对文件进行映射。使用内存映射处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射在处理大数据量的文件时能起到相当重要的作用。
另外,数据管理模块401将该更新目录下的数据文件加载到共享内存中,就是对“共享内存数据”进行更新,其中,共享内存数据存放在共享内存中,可以由多个进程共同使用的数据。数据的含义由进程解释。例如,定长/变长散列表,一般的key-value存储结构,trie树等。其加载一般是通过直接将“数据文件”映射到内存,并做必要的初始化操作完成。
此时,该数据读取模块402,还可以用于按照预设时间间隔,对该数据更新信息进行读取;若确定出数据更新信息中指示有目的数据文件的更新信息,则采用内存映射的方式将数据文件加载到该共享内存中,并记录加载时的时间为第二时间信息。
更进一步的,该数据读取模块402,在对该数据更新信息进行读取之后,还用于若读取的数据更新信息中所指示的第一时间信息中的时间晚于第二时间信息中的时间,则确定数据文件有更新;将该数据目录下已更新的数据文件映射到该共享内存并进行等待;当等待时间超过预设时间阈值时,删除数据文件更新前的数据文件映射。
此处需要说明的是,各功能模块(如数据管理模块401和数据读取模块402)各自管理自己的共享内存,直到所有功能模块都解除了旧的数据文件映射后,旧的数据文件才会***作***回收掉。该处理***中,数据管理模块要负责加 载、初始化和更新写入,这些操作都是排他性的,需要由一个进程来做。数据读取模块则可作为另一个进程,用于读取数据。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,比如,可参见第二实施例,以上各个模块的具体实施可参见前面的方法实施例,在此不再赘述。
由上述可知,本实施例提供的数据文件的处理***,先将数据文件以共享内存的数据结构存放在磁盘上,并将采用内存映射的方式将该数据文件加载到该共享内存中,并记录更新信息,以实现对数据文件进行加载处理,进而根据该数据更新信息对数据文件进行更新和加载,以便进程共同使用共享内存中的数据;本发明实施例通过将磁盘上明文数据结构的数据文件以共享内存的数据结构进行存放,并将其加载到共享内存中,提高了加载效率;支持一处加载、多处使用,即通过共享内存,实现多个进程使用同一份共享内存数据,大大降低了额外的内存占用。
第四实施例
本发明实施例还提供一种服务器,其中可以集成本发明实施例的数据文件处理***,如图5所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器501、一个或一个以上计算机可读存储介质的存储器502、射频(Radio Frequency,RF)电路503、电源504、输入单元505、以及显示单元506等部件。本领域技术人员可以理解,图5中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器501是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行服务器的各种功能和处理数据,从而对 服务器进行整体监控。可选的,处理器501可包括一个或多个处理核心;优选的,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。
存储器502可用于存储软件程序以及模块,处理器501通过运行存储在存储器502的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器502还可以包括存储器控制器,以提供处理器501对存储器502的访问。
RF电路503可用于收发信息过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器501处理;另外,将涉及上行的数据发送给基站。通常,RF电路503包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路503还可以通过无线通信与网络和其他设备通信。该无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***(GSM,Global System of Mobilecommunication)、通用分组无线服务(GPRS,General Packet Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband CodeDivision Multiple Access)、长期演进(LTE,Long Term Evolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
服务器还包括给各个部件供电的电源504(比如电池),优选的,电源可以通过电源管理***与处理器501逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源504还可以包括一个或一个以上的直 流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元505,该输入单元505可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
该服务器还可包括显示单元506,该显示单元506可用于显示由用户输入的信息或提供给用户的信息以及服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元508可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。
具体在本实施例中,服务器中的处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能,如下:
获取磁盘上的数据文件,其中该数据文件以共享内存的数据结构进行存放;
采用内存映射的方式将该数据文件加载到该共享内存中,并对该共享内存进行初始化;
基于该加载过程记录数据更新信息,该数据更新信息包括数据文件的文件名以及第一时间信息,该第一时间信息为该加载过程加载时的时间;
根据该数据更新信息对数据文件进行读取处理。
优选的,该处理器501还可以用于:获取磁盘上的数据文件之前,
以共享内存的数据结构将数据文件保存在磁盘中,该共享内存的数据结构包括数组、散列表、双数组单词查找树。
优选的,该处理器501还可以用于,将该数据文件加载到该共享内存中,并对该共享内存进行初始化之后:
对磁盘上的数据文件进行更新检测;当确定出存在有需要更新的数据文件 时,将该需要更新的数据文件复制到更新目录下;将该更新目录下的数据文件加载到共享内存中,并对该共享内存进行初始化;将数据目录下的数据文件移动到备份目录;将该更新目录下的数据文件移动到该数据目录下,其中,该更新目录、该数据目录以及该备份目录在同一文件***中。
基于此,该处理器501还可以用于删除数据文件更新前的数据文件映射。
优选的,该处理器501还可以用于,删除数据文件更新前的数据文件映射之后:
更新该数据更新信息;按照预设时间间隔,对该数据更新信息进行读取;若确定出数据更新信息中指示有目的数据文件的更新信息,则采用内存映射的方式将数据文件加载到该共享内存中,并记录加载时的时间为第二时间信息。
基于此,该处理器501还可以用于:对该数据更新信息进行读取之后,若读取的数据更新信息中所指示的第一时间信息中的时间晚于第二时间信息中的时间,则确定数据文件有更新;将该数据目录下已更新的数据文件映射到该共享内存并进行等待;当等待时间超过预设时间阈值时,删除数据文件更新前的数据文件映射。
由上述可知,本实施例提供的服务器中,先将数据文件以共享内存的数据结构存放在磁盘上,并将采用内存映射的方式将所述数据文件加载到所述共享内存中,并记录更新信息,以实现对数据文件进行加载处理,进而根据所述数据更新信息对数据文件进行更新和加载,以便进程共同使用共享内存中的数据;本发明实施例通过将磁盘上明文数据结构的数据文件以共享内存的数据结构进行存放,并将其加载到共享内存中,提高了加载效率;支持一处加载、多处使用,即通过共享内存,实现多个进程使用同一份共享内存数据,大大降低了额外的内存占用。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对数据文件处理方法的详细描述,此处不再赘述。
本发明实施例提供的所述数据文件处理***,譬如为计算机、平板电脑、 具有触摸功能的手机等等,所述数据文件处理***与上文实施例中的数据文件处理方法属于同一构思,在所述数据文件处理***上可以运行所述数据文件处理方法实施例中提供的任一方法,其具体实现过程详见所述数据文件处理方法实施例,此处不再赘述。
需要说明的是,对本发明所述数据文件处理方法而言,本领域普通测试人员可以理解实现本发明实施例所述数据文件处理方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,所述计算机程序可存储于一计算机可读取存储介质中,如存储在终端的存储器中,并被该终端内的至少一个处理器执行,在执行过程中可包括如所述数据文件处理方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)等。
对本发明实施例的所述数据文件处理***而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,所述存储介质譬如为只读存储器,磁盘或光盘等。
以上对本发明实施例所提供的一种数据文件处理方法及***进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (7)

1.一种数据文件处理方法,其特征在于,包括:
获取磁盘上的数据文件,其中所述数据文件以共享内存的数据结构进行存放;
采用内存映射的方式将所述数据文件加载到所述共享内存中,并对所述共享内存进行初始化;基于该加载过程记录数据更新信息,所述数据更新信息包括数据文件的文件名以及第一时间信息,所述第一时间信息为所述加载过程加载时的时间;
根据所述数据更新信息对数据文件进行读取处理;
对磁盘上的数据文件进行更新检测;当确定出存在有需要更新的数据文件时,将所述需要更新的数据文件复制到更新目录下;将所述更新目录下的数据文件加载到共享内存中,并对所述共享内存进行初始化;将数据目录下的数据文件移动到备份目录;将所述更新目录下的数据文件移动到所述数据目录下,其中,所述更新目录、所述数据目录以及所述备份目录在同一文件***中;删除数据文件更新前的数据文件映射;更新所述数据更新信息;
按照预设时间间隔,对所述数据更新信息进行读取;若确定出数据更新信息中指示有目的数据文件的更新信息,则采用内存映射的方式将数据文件加载到所述共享内存中,并记录加载时的时间为第二时间信息。
2.根据权利要求1所述的数据文件处理方法,其特征在于,所述获取磁盘上的数据文件之前,还包括:
以共享内存的数据结构将数据文件保存在磁盘中,所述共享内存的数据结构包括数组、散列表、双数组单词查找树。
3.根据权利要求1所述的数据文件处理方法,其特征在于,所述对所述数据更新信息进行读取之后,还包括:
若读取的数据更新信息中所指示的第一时间信息中的时间晚于第二时间信息中的时间,则确定数据文件有更新;
将所述数据目录下已更新的数据文件映射到所述共享内存并进行等待;
当等待时间超过预设时间阈值时,删除数据文件更新前的数据文件映射。
4.一种数据文件处理***,其特征在于,包括:
数据管理模块,用于获取磁盘上的数据文件,其中所述数据文件以共享内存的数据结构进行存放;采用内存映射的方式将所述数据文件加载到所述共享内存中,并对所述共享内存进行初始化;基于该加载过程记录数据更新信息,所述数据更新信息包括数据文件的文件名以及第一时间信息,所述第一时间信息为所述加载过程加载时的时间;
数据读取模块,用于根据所述数据更新信息对数据文件进行读取处理;
更新检测模块,用于对磁盘上的数据文件进行更新检测;当确定出存在有需要更新的数据文件时,将所述需要更新的数据文件复制到更新目录下;
所述数据管理模块,还用于将所述更新目录下的数据文件加载到共享内存中,并对所述共享内存进行初始化;将数据目录下的数据文件移动到备份目录;将所述更新目录下的数据文件移动到所述数据目录下,其中,所述更新目录、所述数据目录以及所述备份目录在同一文件***中;删除数据文件更新前的数据文件映射,更新所述数据更新信息;
所述数据读取模块,还用于按照预设时间间隔,对所述数据更新信息进行读取;若确定出数据更新信息中指示有目的数据文件的更新信息,则采用内存映射的方式将数据文件加载到所述共享内存中,并记录加载时的时间为第二时间信息。
5.根据权利要求4所述的数据文件处理***,其特征在于,所述数据管理模块,在获取磁盘上的数据文件之前,还用于以共享内存的数据结构将数据文件保存在磁盘中,所述共享内存的数据结构包括数组、散列表、双数组单词查找树。
6.根据权利要求4所述的数据文件处理***,其特征在于,所述数据读取模块,在对所述数据更新信息进行读取之后,还用于若读取的数据更新信息中所指示的第一时间信息中的时间晚于第二时间信息中的时间,则确定数据文件有更新;将所述数据目录下已更新的数据文件映射到所述共享内存并进行等待;当等待时间超过预设时间阈值时,删除数据文件更新前的数据文件映射。
7.一种计算机可读存储介质,其存储有计算机程序,其中,所述计算机程序可被处理器执行以实现如权利要求1至3任一项所述的方法。
CN201510454768.0A 2015-07-29 2015-07-29 一种数据文件处理方法及*** Active CN106708825B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510454768.0A CN106708825B (zh) 2015-07-29 2015-07-29 一种数据文件处理方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510454768.0A CN106708825B (zh) 2015-07-29 2015-07-29 一种数据文件处理方法及***

Publications (2)

Publication Number Publication Date
CN106708825A CN106708825A (zh) 2017-05-24
CN106708825B true CN106708825B (zh) 2019-09-27

Family

ID=58894947

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510454768.0A Active CN106708825B (zh) 2015-07-29 2015-07-29 一种数据文件处理方法及***

Country Status (1)

Country Link
CN (1) CN106708825B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107908798A (zh) * 2017-12-20 2018-04-13 浙江煮艺文化科技有限公司 一种数据文件的处理方法及***
CN108958732A (zh) * 2018-06-28 2018-12-07 上海恺英网络科技有限公司 一种基于php的数据加载方法及设备
CN109359005B (zh) * 2018-09-14 2022-04-19 厦门天锐科技股份有限公司 一种跨进程的数据采集处理方法
CN109542911B (zh) * 2018-12-03 2021-10-29 郑州云海信息技术有限公司 一种元数据组织方法、***、设备及计算机可读存储介质
CN110716939B (zh) * 2019-10-16 2023-05-09 深圳市网心科技有限公司 数据管理方法、电子设备、***及介质
CN111158611A (zh) * 2020-03-26 2020-05-15 长春师范大学 一种新能源汽车控制器内存管理方法
CN113806593A (zh) * 2020-06-17 2021-12-17 新疆金风科技股份有限公司 风电场的通信异常检测方法、装置以及场站控制器
CN111736973A (zh) * 2020-06-24 2020-10-02 北京奇艺世纪科技有限公司 一种服务启动方法、装置、服务器及存储介质
CN113110944A (zh) * 2021-03-31 2021-07-13 北京达佳互联信息技术有限公司 信息查找方法、装置、服务器、可读存储介质及程序产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101082928A (zh) * 2007-06-25 2007-12-05 腾讯科技(深圳)有限公司 一种数据库访问的方法及数据库映射***
CN101296157A (zh) * 2007-04-26 2008-10-29 北京师范大学珠海分校 多网卡协同通信方法
CN101551808A (zh) * 2009-05-13 2009-10-07 山东中创软件商用中间件股份有限公司 支持多进程的嵌入式的树型数据库技术
CN101986649A (zh) * 2010-11-29 2011-03-16 深圳天源迪科信息技术股份有限公司 应用于电信行业计费***的共享数据中心
CN102890679A (zh) * 2011-07-20 2013-01-23 中兴通讯股份有限公司 一种数据版本的处理方法及***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101296157A (zh) * 2007-04-26 2008-10-29 北京师范大学珠海分校 多网卡协同通信方法
CN101082928A (zh) * 2007-06-25 2007-12-05 腾讯科技(深圳)有限公司 一种数据库访问的方法及数据库映射***
CN101551808A (zh) * 2009-05-13 2009-10-07 山东中创软件商用中间件股份有限公司 支持多进程的嵌入式的树型数据库技术
CN101986649A (zh) * 2010-11-29 2011-03-16 深圳天源迪科信息技术股份有限公司 应用于电信行业计费***的共享数据中心
CN102890679A (zh) * 2011-07-20 2013-01-23 中兴通讯股份有限公司 一种数据版本的处理方法及***

Also Published As

Publication number Publication date
CN106708825A (zh) 2017-05-24

Similar Documents

Publication Publication Date Title
CN106708825B (zh) 一种数据文件处理方法及***
US11281632B2 (en) Object information processing method and apparatus, and storage medium
US11093472B2 (en) Using an LSM tree file structure for the on-disk format of an object storage platform
US8745063B2 (en) Hashing with hardware-based reorder using duplicate values
KR102127522B1 (ko) 감사 수행 서버, 데이터베이스 서버 및 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램
US9436693B1 (en) Dynamic network access of snapshotted versions of a clustered file system
US11176099B2 (en) Lockless synchronization of LSM tree metadata in a distributed system
WO2015078370A1 (en) Method, device, node and system for managing file in distributed data warehouse
US10310904B2 (en) Distributed technique for allocating long-lived jobs among worker processes
CN105468642A (zh) 数据的存储方法及装置
CN102984357B (zh) 一种联系人信息管理方法及装置
CN110737682A (zh) 一种缓存操作方法、装置、存储介质和电子设备
US9928178B1 (en) Memory-efficient management of computer network resources
CN109710185A (zh) 数据处理方法及装置
CN111177143B (zh) 键值数据存储方法、装置、存储介质与电子设备
CN101983376A (zh) 访问装置、信息记录装置、信息记录***、文件管理方法和程序
US8296270B2 (en) Adaptive logging apparatus and method
US20160139980A1 (en) Erasure-coding extents in an append-only storage system
CN112363871A (zh) 一种数据回档方法、装置及存储介质
US10210067B1 (en) Space accounting in presence of data storage pre-mapper
CN109597707A (zh) 克隆卷数据拷贝方法、装置及计算机可读存储介质
US20220342888A1 (en) Object tagging
EP3343395A1 (en) Data storage method and apparatus for mobile terminal
CN115705151A (zh) 用于管理设备本地存储器的***、方法和装置
KR102214697B1 (ko) 데이터베이스 관리 시스템에서 데이터 저장을 위한 공간 관리를 제공하는 컴퓨터 프로그램

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