CN106227794B - 时态图数据中动态属性数据的存储方法和装置 - Google Patents
时态图数据中动态属性数据的存储方法和装置 Download PDFInfo
- Publication number
- CN106227794B CN106227794B CN201610576897.1A CN201610576897A CN106227794B CN 106227794 B CN106227794 B CN 106227794B CN 201610576897 A CN201610576897 A CN 201610576897A CN 106227794 B CN106227794 B CN 106227794B
- Authority
- CN
- China
- Prior art keywords
- data
- dynamic attribute
- attribute data
- file
- write
- 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
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种时态图数据中动态属性数据的存储方法和装置,该方法包括:接收客户端对时态图数据中动态属性数据的写入操作,写入操作中携带动态属性数据的边或点的身份标识、数据的身份标识、写入值的起始时间和写入值;将动态属性数据写入到对应的内存表中;若内存表中存储的数据大小达到预设阈值,则根据写入值的起始时间,将动态属性数据写入到对应的缓存表或磁盘的文件中;根据基本数据项,将写入到磁盘的文件中的动态属性数据进行存储;其中,磁盘中包括多个文件,相邻两个文件存储的动态属性数据在写入值对应的时间段上连续且不存在交集。实现了对点或边的动态属性数据的单独存储,加快了对动态属性数据的查询速度。
Description
技术领域
本发明实施例涉及数据存储技术领域,尤其涉及一种时态图数据中动态属性数据的存储方法和装置。
背景技术
随着互联网,社交网络,交通网络相关技术的发展,非结构化的数据越来越多的出现在应用之中。它们数据量大,并且不适合使用关系数据库存储。所以非关系类数据库逐渐流行起来。在众多非关系类数据库中,图数据库是非常重要的一部分。
在图数据库中,对时态图数据的存储是一个关键的技术。现有的对时态图数据的存储系统主要有DeltaGraph系统。
DeltaGraph系统采用类似二叉树的结构存储时态图数据。其并不将图数据中的点/边的结构数据和点/边中的动态属性数据区分开来,所以对于每一次对动态属性数据的历史状态的查询时,都必须将需要查询时刻的全部数据的状态恢复好之后,才能返回对动态属性数据的查询结果。使对动态属性数据的查询速度较慢。
发明内容
本发明实施例提供一种时态图数据中动态属性数据的存储方法和装置,解决了现有技术中不能实现对点/边中的动态属性数据单独存储,对动态属性数据的查询速度较慢的技术问题。
本发明实施例提供一种时态图数据中动态属性数据的存储方法,包括:
接收客户端对时态图数据中动态属性数据的写入操作,所述写入操作中携带所述动态属性数据的基本数据项,所述基本数据项包括:边或点的身份标识、数据的身份标识、写入值的起始时间和写入值;
将所述动态属性数据写入到对应的内存表中;
若所述内存表中存储的数据大小达到预设阈值,则根据所述写入值的起始时间,将所述动态属性数据写入到对应的缓存表或磁盘的文件中;
根据所述基本数据项,将写入到磁盘的文件中的动态属性数据进行存储;
其中,磁盘中包括多个文件,相邻两个文件存储的动态属性数据在写入值对应的时间段上连续且不存在交集。
本发明实施例提供一种时态图数据中动态属性数据的存储装置,包括:
接收模块,用于接收客户端对时态图数据中动态属性数据的写入操作,所述写入操作中携带所述动态属性数据的基本数据项,所述基本数据项包括:边或点的身份标识、数据的身份标识、写入值的起始时间和写入值;
写入模块,用于将所述动态属性数据写入到对应的内存表中;
所述写入模块,还用于若所述内存表中存储的数据大小达到预设阈值,则根据所述写入值的起始时间,将所述动态属性数据写入到对应的缓存表或磁盘的文件中;
存储模块,用于根据所述基本数据项,将写入到磁盘的文件中的动态属性数据进行存储;
其中,磁盘中包括多个文件,相邻两个文件存储的动态属性数据在写入值对应的时间段上连续且不存在交集。
本发明实施例提供一种时态图数据中动态属性数据的存储方法和装置,通过接收客户端对时态图数据中动态属性数据的写入操作,写入操作中携带动态属性数据的基本数据项,基本数据项包括:边或点的身份标识、数据的身份标识、写入值的起始时间和写入值;将动态属性数据写入到对应的内存表中;若内存表中存储的数据大小达到预设阈值,则根据写入值的起始时间,将动态属性数据写入到对应的缓存表或磁盘的文件中;根据基本数据项,将写入到磁盘的文件中的动态属性数据进行存储;其中,磁盘中包括多个文件,相邻两个文件存储的动态属性数据在写入值对应的时间段上连续且不存在交集。实现了对点或边的动态属性数据的单独存储,并且在对动态属性数据进行查询时,若动态属性数据为距离当前时间较近的数据,可通过对内存表或缓存表中的动态属性数据进行查询,获取动态属性数据,由于不涉及磁盘访问,耗时很少,加快了对动态属性数据的查询速度。由于在对写入到磁盘的文件中的动态属性数据进行存储时,是根据基本数据项进行存储的,也能够加快对存储到磁盘文件中的动态属性数据的查询速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明时态图数据中动态属性数据的存储方法实施例一的流程图;
图2为实施例一中动态属性数据存储到磁盘中的文件中的示意图;
图3为本发明时态图数据中动态属性数据的存储方法实施例二的流程图;
图4为实施例二的时态图数据中动态属性数据的存储方法的应用场景图;
图5为实施例二中缓存表或磁盘的文件对动态属性数据的存储状态图;
图6为实施例二中磁盘的文件对动态属性数据的存储示意图;
图7为实施例二中数据块的内部组织结构示意图;
图8为实施例二中索引块的内部组织结构示意图;
图9为实施例二中元数据块的内部组织结构示意图;
图10为实施例二中第一元数据信息的存储示意图;
图11为本发明时态图数据中动态属性数据的存储装置实施例一的结构示意图;
图12为本发明时态图数据中动态属性数据的存储装置实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
图1为本发明时态图数据中动态属性数据的存储方法实施例一的流程图,如图1所示,本实施例提供的执行主体为时态图数据中动态属性数据的存储装置,该时态图数据中动态属性数据的存储装置可以集成在计算机或服务器中,可通过软件实现,也可通过软件和硬件结合实现。则本实施例提供的时态图数据中动态属性数据的存储方法包括以下几个步骤。
步骤101,接收客户端对时态图数据中动态属性数据的写入操作。
其中,写入操作中携带动态属性数据的基本数据项,基本数据项包括:边或点的身份标识、数据的身份标识、写入值的起始时间和写入值。
本实施例中,时态图数据为指以图为数据模型,同时图的结构,属性随着时间不断发生变化的数据。动态属性数据是指时态图中的点或边的属性随着时间变化其属性的值不断发生变化的数据。
举例来说,北京市的道路交通网络就是一个时态图数据:每条路可以看做时态图中的边,路口可以看了时态图中的点。而点与点之间由边相连。同时,每条道路在不同的时刻,有不同的拥堵状态,如拥堵,顺畅等。每条道路上汽车的数量也随着时间的变化而变化。而道路的拥堵状态,汽车的数量,可以看做时态图数据中边的属性数据。由于其一直随着时间发生变化,所以叫做动态属性数据。
本实施例中,写入操作可以为新建动态属性数据的操作,也可以为删除动态数据的操作,还可以为修改动态属性数据的操作,本实施例中对此不做限定。
本实施例中,时态图数据可以表示为:G=(V,E),其中V是点的集合,E是边的集合。一个点v=(id,P,DynP)∈V,其中id是在集合V中唯一确定v的身份标识,P是一个静态属性数据的集合,DynP是一个动态属性数据的集合。
一个动态属性数据dp=(name,vlist)∈DynP,其中vlist是一个(t,value)元组的集合,代表着dp从时间t开始的值是value。一个vlist的形式是:<(t1,value1),(t2,value2),(t3,value3),.....,(tn,valuen)>。并且满足ti<ti+1,1≤i<n。元组(ti,valuei)代表着dp在[ti,ti+1)时间段内的值为valuei。对于最后一个元组(tn,valuen),代表着dp的从tn时刻到当前时刻的值为valuen。
一个边e=(id,vs,ve,ty,P,DynP)∈E。其中id是在E中的唯一标识。vs和ve分别代表e的起始顶点和结束顶点。ty表示边的类型。
其中,写入操作中携带的动态属性数据的基本数据项可以表示为:<边或点身份标识,数据的身份标识,写入值的初始时间,写入值>的形式。
步骤102,将动态属性数据写入到对应的内存表中。
本实施例中,若动态属性数据为边的动态属性数据,则写入到边的内存表中,若动态属性数据为点的动态属性数据,则写入到点的内存表中。
其中,写入到内存表的动态属性数据至少包括动态属性数据的基本数据项。还可以包括对应的状态信息。状态信息可以为:有效状态、无效状态、删除状态。
步骤103,若内存表中存储的数据大小达到预设阈值,则根据写入值的起始时间,将动态属性数据写入到对应的缓存表或磁盘的文件中。
其中,本实施例中,对预设阈值进行预先设定,如预设阈值可以为4M,也可以为8M等,本实施例中对此不做限定。
具体地,本实施例中,判断内存表中存储的数据大小是否达到预设阈值,若达到预设阈值,则根据写入值的起始时间,将动态属性数据写入到对应的缓存表或磁盘的文件中。
进一步地,若写入值的起始时间不在当前预设时间段内,则将动态属性数据写入到对应的缓存表中,若写入值的起始时间在当前预设时间段内,则将动态属性数据写入到磁盘中的新生成的文件中。
步骤104,根据基本数据项,将写入到磁盘的文件中的动态属性数据进行存储。
具体地,本实施例中,根据基本数据项的边或点的身份标识、数据的身份标识、写入值的起始时间,这三个信息,将写入到磁盘的文件中的动态属性数据进行存储。
其中,磁盘中包括多个文件,相邻两个文件存储的动态属性数据在写入值对应的时间段上连续且不存在交集。
举例说明,图2为实施例一中动态属性数据存储到磁盘中的文件中的示意图,如图2所示,本实施例中,两个相邻文件中存储的动态属性数据在写入值对应的时间段上连续且不存在交集。文件1中存储的动态属性数据的写入值对应的时间段为t1~t2。文件2中存储的动态属性数据的写入值对应的时间段为t3~ti+4。文件k中存储的动态属性数据的写入值对应的时间段为当前预设时间段。其中,每个动态属性数据在不同写入值的初始时间上对应的写入值v可以相同也可以不同。
需要说明的是,本实施例中,对边的动态属性数据进行存储和对点的动态属性数据的存储是分开进行的,即对于边的动态属性数据具有对应的内存表及磁盘中的文件。对于点的动态属性数据又有另一对应的内存表及磁盘中的文件,两者互不影响。
本实施例提供的时态图数据中动态属性数据的存储方法,通过接收客户端对时态图数据中动态属性数据的写入操作,写入操作中携带动态属性数据的基本数据项,基本数据项包括:边或点的身份标识、数据的身份标识、写入值的起始时间和写入值;将动态属性数据写入到对应的内存表中;若内存表中存储的数据大小达到预设阈值,则根据写入值的起始时间,将动态属性数据写入到对应的缓存表或磁盘的文件中;根据基本数据项,将写入到磁盘的文件中的动态属性数据进行存储;其中,磁盘中包括多个文件,相邻两个文件存储的动态属性数据在写入值对应的时间段上连续且不存在交集。实现了对点或边的动态属性数据的单独存储,并且在对动态属性数据进行查询时,若动态属性数据为距离当前时间较近的数据,可通过对内存表或缓存表中的动态属性数据进行查询,获取动态属性数据,由于不涉及磁盘访问,耗时很少,加快了对动态属性数据的查询速度。由于在对写入到磁盘的文件中的动态属性数据进行存储时,是根据基本数据项进行存储的,也能够加快对存储到磁盘文件中的动态属性数据的查询速度。
图3为本发明时态图数据中动态属性数据的存储方法实施例二的流程图,如图3所示,本实施例在实施例一的基础上,为一更为优选的实施例,则本实施例提供的时态图数据中动态属性数据的存储方法包括以下步骤。
步骤301,接收客户端对时态图数据中动态属性数据的写入操作,写入操作中携带动态属性数据的基本数据项,基本数据项包括:边或点的身份标识、数据的身份标识、写入值的起始时间和写入值。
步骤302,将动态属性数据写入到对应的内存表中。
本实施例中,步骤301-步骤302的实现方式和本发明时态图数据中动态属性数据的存储方法实施例一中步骤101-步骤102的实现方式相同,在此不再一一赘述。
步骤303,判断内存表中存储的数据大小达到预设阈值,若是,则执行步骤304,否则,执行步骤301。
步骤304,将内存表转化为不可变内存表。
本实施例中,内存表和不可变内存表中存储的动态属性数据相同。
步骤305,根据写入值的起始时间,将动态属性数据写入到对应的缓存表或磁盘的文件中。
进一步地,本实施例中,步骤305包括以下步骤。
步骤305a,判断写入值的起始时间是否在当前预设时间段内,若是,则执行步骤305b,否则执行步骤305c。
其中,当前预设时间段即为在新生成的文件中存储动态属性数据中写入值对应的时间段。
进一步地,本实施例中,磁盘中的文件分级进行存储。图4为实施例二的时态图数据中动态属性数据的存储方法的应用场景图。如图4所示,磁盘中的文件分为0-4五个等级。在第0级文件中包括新生成的文件。其中,低层级的文件存储空间小于高层级的文件存储空间。如层级0的文件为4兆大小,层级1的为8兆大小,层级2的为16兆大小,层级3的为32兆大小,层级4的为64兆大小。层级i的文件由两个层级i-1的文件和层级i-1的文件对应的缓存表合并而成。最上层的文件为合并文件,除最上层的文件外的文件为待合并文件。
如图4所示,在内存中包括第一元数据信息,该第一元数据信息为磁盘中的文件的元数据信息,其可以以元数据文件的形式进行存储。
步骤305b,将动态属性数据写入到磁盘中的新生成的文件中。
步骤305c,将动态属性数据写入到对应的缓存表中。
其中,缓存表在内存中,写入到缓存表中的动态属性数据在写入值时间段上与图5中除最后一个待合并的文件的其他待合并文件或合并文件对应。
具体地,本实施例中,图5为实施例二中缓存表或磁盘的文件对动态属性数据的存储状态图。如图5所示,若写入值的起始时间在当前预设时间段内,则将动态属性数据写入到磁盘中的新生成的文件中,该新生成的文件即为图5中的从t8到当前时间的待合并文件。若写入值的起始时间不在当前预设时间段内,则将动态属性数据写入到对应的缓存表中。其中图5中下方的缓存表为与正上方的合并文件或待合并文件一一对应的。从图5中可以看出,相邻两个文件存储的动态属性数据在写入值对应的时间段上连续且不存在交集。
步骤306,根据基本数据项,将写入到磁盘的文件中的动态属性数据进行存储。
进一步地,本实施例中,根据基本数据项,将写入到磁盘的文件中的动态属性数据进行存储具体包括:
步骤306a,根据动态属性数据对应的基本数据项,形成每个动态属性数据的逻辑地址向量。
其中,每个动态属性数据的逻辑地址向量可表示为:<边或点的身份标识、数据的身份标识、写入值的起始时间>。
步骤306b,按照所述逻辑地址向量由大到小的顺序对所述动态属性数据进行存储。
进一步地,本实施例中,边或点的身份标识为边或点的编号,数据的身份标识为数据的编号。
具体地,本实施例中,首先按照逻辑地址向量中边或点的编号对动态属性数据进行排序,在边或点的编号相同时,按照数据的编号对动态属性数据进行排序,在数据的编号相同时,按照写入值的时间进行排序。
进一步地,本实施例中,磁盘的文件中还包括:第二元数据信息和索引信息。
其中,第二元数据信息为磁盘的文件中的动态属性数据的元数据信息。本实施例中,对动态属性的存储是按区块进行的。所以第二元数据信息可以存储在元数据块中,索引信息可以存储在索引块中。动态属性数据存储在数据块中。
图6为实施例二中磁盘的文件对动态属性数据的存储示意图。如图6所示,本实施例中,对动态属性的存储是按区块进行的。每个区块的大小可以为4K,也可以为8K等,本实施例中对此不做限定。在元数据块中存储了文件格式的版本号,索引块区域的起始位置。文件中存储的边或者点的数量,此文件对应的预设起始时间,在最后还可以包括填充区域,以满足元数据块的大小要求。在索引块中存储了动态属性数据对应的逻辑地址向量,关于每个数据块中数据的逻辑地址向量的最大值最小值的信息。在每个数据块中存储了动态属性值集合。它们按照其所属的边或点的编号分组。还包括每个不同边的分组情况及其对应的位置。还包括本数据块的元数据。其中,图6中的边id即为边的身份标识,可以为边的编号。动态属性id即为数据的身份信息,其可以数据的编号。
本实施例中,以存储区块为4K,存储边的动态属性数据对磁盘中的文件的元数据块,索引块和数据块进行说明。图7为实施例二中数据块的内部组织结构示意图,图8为实施例二中索引块的内部组织结构示意图,图9为实施例二中元数据块的内部组织结构示意图。
如图7所示,一个数据块从右向左分为三个区域:分别为边数目区域,边索引区域和边区域。其中,边数目区域记录了此数据块中边的个数。边索引区域,记录了每条边的数据在数据块中的偏移量以及占用的字节数。其中对于一个记录:边的编号占用8byte,位置占用4byte,长度占用4byte。边区域,存储边的动态属性数据。一个边区域是一个动态属性记录的集合,一个动态属性记录包括了:数据编号,占用4byte。写入值的初始时间,占用4byte。值长度,占用30bit。状态位,占用2bit。写入值。其中状态位为00表示此记录是有效状态,为01表示为失效状态,为10表示删除状态。如果为删除状态则在文件合并的时候不参加合并。
如图8所示,一个索引块中的内容是所有数据块的起始逻辑地址向量,以及相应的偏移量。其中,边的编号占用8byte,数据编号占用4byte,写入值初始时间占用4byte。其中边的编号,数据编号,写入值初始时间三个值整体作为数据块的索引键。数据块位置占用4byte。
如图9所示,一个元数据块固定4k大小。其中包括:版本号,索引块位置,4byte。数据块数量,4byte。索引块数量,4byte,起始时间,填充区,使得元数据块严格满足4k大小。
步骤307,判断同层级文件中是否包括两个文件或缓存表中的数据大小是否等于预设阈值,若是,则执行步骤308,否则执行步骤301。
进一步地,本实施例中,由于磁盘中的文件具有层级关系,上一层的文件有下一层的文件和下一层文件对应的缓存表合并形成。所以判断同层级文件中是否包括两个文件或缓存表中的数据大小是否等于预设阈值,以确定是否满足合并条件。
步骤308,将同层级文件中的两个文件及其对应的缓存表进行合并,形成上一级文件。
需要说明的是,对于第0层级的文件,若在生成新文件前,已经存在一个0层级的文件,则在生成新文件时,将第一个0层级的文件及其对应的缓存表以及新生成的文件进行合并。
进一步地,在缓存表中存储的动态属性数据,若写入到缓存表中的动态属性数据具体为删除该动态属性数据,则该还存储该动态属性数据的删除标记。
本实施例中,若缓存表中存在与对应的磁盘中的文件具有相同边或点的身份标识且相同数据的身份标识的动态属性数据且没有删除标记时,只有缓存表中的该动态属性数据参加合并,对应的磁盘中的文件中该动态属性数据略过。以保证进行合并的动态属性数据为修改后的动态属性数据。
若缓存表中存在与对应的磁盘中的文件具有相同边或点的身份标识且相同数据的身份标识的动态属性数据且有删除标记,则在磁盘的文件和缓存表中的该数据均不参加合并。
在形成上一层级的文件后,若同时也具有一个同层级的文件,继续进行合并,直到不满足包括两个文件或缓存表中的数据大小等于预设阈值的合并条件。
进一步地,本实施例中,缓存表中的数据大小是否等于预设阈值时,在磁盘中还生成缓存表的备份文件,以在内存数据丢失时,通过备份文件获得丢失的数据。
本实施例提供的时态图数据中动态属性数据的存储方法,通过接收客户端对时态图数据中动态属性数据的写入操作,将动态属性数据写入到对应的内存表中,判断内存表中存储的数据大小达到预设阈值,若是,则将内存表转化为不可变内存表,根据写入值的起始时间,将动态属性数据写入到对应的缓存表或磁盘的文件中,判断写入值的起始时间是否在当前预设时间段内,若是,将动态属性数据写入到磁盘中的新生成的文件中,若否,则将动态属性数据写入到对应的缓存表中。根据基本数据项,将写入到磁盘的文件中的动态属性数据进行存储,判断同层级文件中是否包括两个文件或缓存表中的数据大小是否等于预设阈值,若是,则将同层级文件中的两个文件及其对应的缓存表进行合并,形成上一级文件。不仅加快了对动态属性数据的查询速度,而且由于采用缓存表对后续写入的动态属性数据进行存储,所以减少了直接存储在磁盘文件中的排序计算,节省了计算资源。并且在满足合并条件时,对同层级文件中的两个文件及其对应的缓存表进行合并,使磁盘的文件中能够对动态属性数据进行完整的存储。
进一步地,本实施例提供的时态图数据中动态属性数据的存储方法,内存中还包括:第一元数据信息,相应地,方法还包括:
接收客户端对所述动态属性数据的查询请求,所述查询请求中携带所述边或点的身份标识、所述数据的身份标识及所述写入值的起始时间;根据所述写入值的起始时间和所述第一元数据信息,获取磁盘中存储查询的动态属性数据的文件;根据所述第二元数据信息、所述边或点的身份标识、所述数据的身份标识及所述写入值的起始时间,获取对应的索引信息;根据所述对应的索引信息,获取所述查询的动态属性数据。
具体地,本实施例中,第一元数据信息为磁盘中的文件的元数据信息,其可以以元数据文件的形式进行存储。图10为第一元数据信息的存储示意图,如图10所示,其为所有合并文件以及待合并文件的文件信息,及其对应的写入值时间段的文件。其中合并文件个数表示磁盘中合并文件的个数,占4byte。待合并文件个数是磁盘中待合并文件的个数,占4byte。之后是每个文件的写入值起始时间和对应的文件名。并按起始时间排列。
其中,文件名的命名规则本实施例中不做限定。如对于待合并文件,以".us"为后缀,以其所属的层级为文件名。例如处于层级1的待合并文件,它的文件名为"00001.us"。对于合并文件,以".st"为后缀,并且按照其写入值起始时间的顺序,也就是生成的顺序从00001开始作为其文件名。
具体地,本实施例中,由于内存中存储了第一元数据信息。则在客户端进行动态属性数据查询时,根据写入值的起始时间和第一元数据信息,获取磁盘中存储查询的动态属性数据的文件;根据第二元数据信息所述边或点的身份标识、所述数据的身份标识及所述写入值的起始时间,获取对应的索引信息;根据对应的索引信息,获取查询的动态属性数据。即通过三次对磁盘的访问即可完成对历史动态属性数据的查询,进一步提高了数据查询的速度。
图11为本发明时态图数据中动态属性数据的存储装置实施例一的结构示意图。该时态图数据中动态属性数据的存储装置包括:接收模块1101,写入模块1102和存储模块1103。
其中,接收模块1101,用于接收客户端对时态图数据中动态属性数据的写入操作,写入操作中携带动态属性数据的基本数据项,基本数据项包括:边或点的身份标识、数据的身份标识、写入值的起始时间和写入值。写入模块1102,用于将动态属性数据写入到对应的内存表中。写入模块1102,还用于若内存表中存储的数据大小达到预设阈值,则根据写入值的起始时间,将动态属性数据写入到对应的缓存表或磁盘的文件中。存储模块1103,用于根据基本数据项,将写入到磁盘的文件中的动态属性数据进行存储。
其中,磁盘中包括多个文件,相邻两个文件存储的动态属性数据在写入值对应的时间段上连续且不存在交集。
本实施例提供的时态图数据中动态属性数据的存储装置可以执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图12为本发明时态图数据中动态属性数据的存储装置实施例二的结构示意图。如图12所示,本实施例提供的装置在实施例一提供的装置的基础上,还包括:判断模块1201、合并模块1202和获取模块1203。
进一步地,写入模块1102,具体用于:
若内存表中存储的数据大小达到预设阈值,则判断写入值的起始时间是否在当前预设时间段内;若写入值的起始时间不在当前预设时间段内,则将动态属性数据写入到对应的缓存表中;若写入值的起始时间在当前预设时间段内,则将动态属性数据写入到磁盘中的新生成的文件中。
进一步地,判断模块1201,用于判断同层级文件中是否包括两个文件或缓存表中的数据大小是否等于预设阈值。合并模块1202,用于若同层级文件中包括两个文件或缓存表中的数据大小等于预设阈值,则将同层级文件中的两个文件及其对应的缓存表进行合并,形成上一层级文件。
进一步地,存储模块1103,具体用于:
根据动态属性数据对应的基本数据项,形成每个动态属性数据的逻辑地址向量;按照逻辑地址向量由大到小的顺序对动态属性数据进行存储。
进一步地,本实施例提供的装置中,内存中还包括:第一元数据信息,磁盘的文件中还包括:第二元数据信息和索引信息。
相应地,接收模块1101,用于用于接收客户端对动态属性数据的查询请求,查询请求中携带边或点的身份标识、数据的身份标识及写入值的起始时间。获取模块1203,用于根据写入值的起始时间和第一元数据信息,获取磁盘中存储查询的动态属性数据的文件,根据第二元数据信息、边或点的身份标识、数据的身份标识及写入值的起始时间,获取对应的索引信息,根据对应的索引信息,获取查询的动态属性数据。
本实施例的装置可以执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种时态图数据中动态属性数据的存储方法,其特征在于,包括:
接收客户端对时态图数据中动态属性数据的写入操作,所述写入操作中携带所述动态属性数据的基本数据项,所述基本数据项包括:边或点的身份标识、数据的身份标识、写入值的起始时间和写入值;
将所述动态属性数据写入到对应的内存表中;
若所述内存表中存储的数据大小达到预设阈值,则根据所述写入值的起始时间,将所述动态属性数据写入到对应的缓存表或磁盘的文件中;
根据所述基本数据项,将写入到磁盘的文件中的动态属性数据进行存储;
其中,磁盘中包括多个文件,相邻两个文件存储的动态属性数据在写入值对应的时间段上连续且不存在交集;
还包括:判断同层级文件中是否包括两个文件或缓存表中的数据大小是否等于预设阈值;
若同层级文件中包括两个文件或缓存表中的数据大小等于预设阈值,则将同层级文件中的两个文件及其对应的缓存表进行合并,形成上一层级文件。
2.根据权利要求1所述的方法,其特征在于,所述若所述内存表中存储的数据大小达到预设阈值,则根据所述写入值的起始时间,将所述动态属性数据写入到对应的缓存表或磁盘的文件中具体包括:
若所述内存表中存储的数据大小达到预设阈值,则判断所述写入值的起始时间是否在当前预设时间段内;
若所述写入值的起始时间不在当前预设时间段内,则将所述动态属性数据写入到对应的缓存表中;
若所述写入值的起始时间在当前预设时间段内,则将所述动态属性数据写入到磁盘中的新生成的文件中。
3.根据权利要求1所述的方法,其特征在于,所述根据所述基本数据项,将写入到磁盘的文件中的动态属性数据进行存储具体包括:
根据所述动态属性数据对应的基本数据项,形成每个动态属性数据的逻辑地址向量;
按照所述逻辑地址向量由大到小的顺序对所述动态属性数据进行存储。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述内存中还包括:第一元数据信息,磁盘的文件中还包括:第二元数据信息和索引信息;
相应地,所述方法还包括:
接收客户端对所述动态属性数据的查询请求,所述查询请求中携带所述边或点的身份标识、所述数据的身份标识及所述写入值的起始时间;
根据所述写入值的起始时间和所述第一元数据信息,获取磁盘中存储查询的动态属性数据的文件;
根据所述第二元数据信息、所述边或点的身份标识、所述数据的身份标识及所述写入值的起始时间,获取对应的索引信息;
根据所述对应的索引信息,获取所述查询的动态属性数据。
5.一种时态图数据中动态属性数据的存储装置,其特征在于,包括:
接收模块,用于接收客户端对时态图数据中动态属性数据的写入操作,所述写入操作中携带所述动态属性数据的基本数据项,所述基本数据项包括:边或点的身份标识、数据的身份标识、写入值的起始时间和写入值;
写入模块,用于将所述动态属性数据写入到对应的内存表中;
所述写入模块,还用于若所述内存表中存储的数据大小达到预设阈值,则根据所述写入值的起始时间,将所述动态属性数据写入到对应的缓存表或磁盘的文件中;
存储模块,用于根据所述基本数据项,将写入到磁盘的文件中的动态属性数据进行存储;
其中,磁盘中包括多个文件,相邻两个文件存储的动态属性数据在写入值对应的时间段上连续且不存在交集;
所述装置还包括:判断模块和合并模块;
所述判断模块,用于判断同层级文件中是否包括两个文件或缓存表中的数据大小是否等于预设阈值;
所述合并模块,用于若同层级文件中包括两个文件或缓存表中的数据大小等于预设阈值,则将同层级文件中的两个文件及其对应的缓存表进行合并,形成上一层级文件。
6.根据权利要求5所述的装置,其特征在于,所述写入模块,具体用于:
若所述内存表中存储的数据大小达到预设阈值,则判断所述写入值的起始时间是否在当前预设时间段内;若所述写入值的起始时间不在当前预设时间段内,则将所述动态属性数据写入到对应的缓存表中;若所述写入值的起始时间在当前预设时间段内,则将所述动态属性数据写入到磁盘中的新生成的文件中。
7.根据权利要求5所述的装置,其特征在于,所述存储模块,具体用于:
根据所述动态属性数据对应的基本数据项,形成每个动态属性数据的逻辑地址向量;按照所述逻辑地址向量由大到小的顺序对所述动态属性数据进行存储。
8.根据权利要求5-7任一项所述的装置,其特征在于,所述内存中还包括:第一元数据信息,磁盘的文件中还包括:第二元数据信息和索引信息;
相应地,所述装置还包括:获取模块;
所述接收模块,用于接收客户端对所述动态属性数据的查询请求,所述查询请求中携带所述边或点的身份标识、所述数据的身份标识及所述写入值的起始时间;
所述获取模块,用于根据所述写入值的起始时间和所述第一元数据信息,获取磁盘中存储查询的动态属性数据的文件,根据所述第二元数据信息、所述边或点的身份标识、所述数据的身份标识及所述写入值的起始时间,获取对应的索引信息,根据所述对应的索引信息,获取所述查询的动态属性数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610576897.1A CN106227794B (zh) | 2016-07-20 | 2016-07-20 | 时态图数据中动态属性数据的存储方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610576897.1A CN106227794B (zh) | 2016-07-20 | 2016-07-20 | 时态图数据中动态属性数据的存储方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227794A CN106227794A (zh) | 2016-12-14 |
CN106227794B true CN106227794B (zh) | 2019-09-17 |
Family
ID=57531775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610576897.1A Active CN106227794B (zh) | 2016-07-20 | 2016-07-20 | 时态图数据中动态属性数据的存储方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227794B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066535A (zh) * | 2017-03-03 | 2017-08-18 | 中国人民解放军海军大连舰艇学院 | 一种基于时态和关键词查询的检索方法和系统 |
CN109165217A (zh) * | 2018-08-03 | 2019-01-08 | 北京涛思数据科技有限公司 | 一种时序数据的高效存储方法 |
CN109710782B (zh) * | 2018-11-30 | 2023-11-28 | 武汉烽火众智智慧之星科技有限公司 | 卡口图片管理优化方法 |
CN111275373A (zh) * | 2018-12-05 | 2020-06-12 | 北京京东尚科信息技术有限公司 | 提升机的效率获取方法、系统、设备及可读存储介质 |
CN109872128A (zh) * | 2019-02-01 | 2019-06-11 | 北京众图识人科技有限公司 | 可处理复杂关系的身份管理系统及方法 |
CN110795569B (zh) * | 2019-10-08 | 2021-06-15 | 北京百度网讯科技有限公司 | 知识图谱的向量表示生成方法、装置及设备 |
CN114519125A (zh) * | 2020-11-19 | 2022-05-20 | 北京达佳互联信息技术有限公司 | 数据写入方法、装置及服务器 |
CN114186100A (zh) * | 2021-10-08 | 2022-03-15 | 支付宝(杭州)信息技术有限公司 | 数据存储及查询方法、装置及数据库系统 |
CN113722520B (zh) * | 2021-11-02 | 2022-05-03 | 支付宝(杭州)信息技术有限公司 | 图数据的查询方法及装置 |
CN113901279B (zh) * | 2021-12-03 | 2022-03-22 | 支付宝(杭州)信息技术有限公司 | 一种图数据库的检索方法和装置 |
CN117033397B (zh) * | 2023-10-08 | 2023-12-26 | 北京泰利思诺信息技术股份有限公司 | 一种历史数据低存储占用查询的管理方法及系统 |
CN117785889A (zh) * | 2024-02-22 | 2024-03-29 | 支付宝(杭州)信息技术有限公司 | 一种针对图数据库的索引管理方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101170433A (zh) * | 2006-10-25 | 2008-04-30 | 中兴通讯股份有限公司 | 数据库入库方法 |
CN103324642A (zh) * | 2012-03-23 | 2013-09-25 | 日电(中国)有限公司 | 为数据建立索引的系统和方法以及数据查询方法 |
CN104615677A (zh) * | 2015-01-20 | 2015-05-13 | 同济大学 | 一种图数据存取方法及系统 |
CN104731864A (zh) * | 2015-02-26 | 2015-06-24 | 国家计算机网络与信息安全管理中心 | 一种海量非结构化数据的数据存储方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9218438B2 (en) * | 2013-08-28 | 2015-12-22 | Bank Of America Corporation | Computing architecture for storing a graph database based on temporal aspects of its edges |
-
2016
- 2016-07-20 CN CN201610576897.1A patent/CN106227794B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101170433A (zh) * | 2006-10-25 | 2008-04-30 | 中兴通讯股份有限公司 | 数据库入库方法 |
CN103324642A (zh) * | 2012-03-23 | 2013-09-25 | 日电(中国)有限公司 | 为数据建立索引的系统和方法以及数据查询方法 |
CN104615677A (zh) * | 2015-01-20 | 2015-05-13 | 同济大学 | 一种图数据存取方法及系统 |
CN104731864A (zh) * | 2015-02-26 | 2015-06-24 | 国家计算机网络与信息安全管理中心 | 一种海量非结构化数据的数据存储方法 |
Non-Patent Citations (1)
Title |
---|
高速公路时空数据一体化建模方法研究;侯晓利;《中国优秀硕士学位论文全文数据库信息科技辑》;20150915;正文第16-21、33-44页 |
Also Published As
Publication number | Publication date |
---|---|
CN106227794A (zh) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227794B (zh) | 时态图数据中动态属性数据的存储方法和装置 | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
CN104978151B (zh) | 基于应用感知的重复数据删除存储系统中的数据重构方法 | |
CN104408111B (zh) | 一种删除重复数据的方法及装置 | |
CN106776967B (zh) | 基于时序聚合算法的海量小文件实时存储方法及装置 | |
US8229968B2 (en) | Data caching for distributed execution computing | |
CN104881466B (zh) | 数据分片的处理以及垃圾文件的删除方法和装置 | |
CN104331453B (zh) | 一种分布式文件系统及分布式文件系统的构建方法 | |
CN110058822A (zh) | 一种磁盘阵列横向拓展方法 | |
CN104156380A (zh) | 一种分布式存储器哈希索引方法及系统 | |
CN102831222A (zh) | 一种基于重复数据删除的差量压缩方法 | |
CN106911743B (zh) | 小文件的写聚合、读聚合方法及系统和客户端 | |
CN106663047A (zh) | 用于优化的签名比较和数据复制的系统和方法 | |
CN106095807B (zh) | 一种分布式文件系统纠删码缓存装置及其缓存方法 | |
CN109344157A (zh) | 读写分离方法、装置、计算机设备及存储介质 | |
CN103942301B (zh) | 一种面向多数据类型访问应用的分布式文件系统 | |
CN109800260A (zh) | 高并发数据存储方法、装置、计算机设备和存储介质 | |
WO2015007155A1 (zh) | 一种数据存储方法及装置 | |
CN108282522A (zh) | 基于动态路由的数据存储访问方法及系统 | |
CN106970958A (zh) | 一种流文件的查询与存储方法和装置 | |
CN106469123A (zh) | 一种基于nvdimm的写缓存分配、释放方法及其装置 | |
CN106909554A (zh) | 一种数据库文本表数据的加载方法及装置 | |
CN110222030A (zh) | 数据库动态扩容的方法、存储介质 | |
CN107368545B (zh) | 一种基于Merkle Tree变形算法的去重方法及装置 | |
CN113297136A (zh) | 一种面向lsm树的键值存储方法和存储系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |