CN104615677B - 一种图数据存取方法及系统 - Google Patents
一种图数据存取方法及系统 Download PDFInfo
- Publication number
- CN104615677B CN104615677B CN201510028305.8A CN201510028305A CN104615677B CN 104615677 B CN104615677 B CN 104615677B CN 201510028305 A CN201510028305 A CN 201510028305A CN 104615677 B CN104615677 B CN 104615677B
- Authority
- CN
- China
- Prior art keywords
- data
- attribute
- vertex
- information
- value
- 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.)
- Expired - Fee Related
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/90—Details of database functions independent of the retrieved data types
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种图数据存取方法及系统。所述图数据存取方法包括:将待存储的图数据信息分成边数据信息与顶点数据信息;其中,边数据信息包括边所连接的顶点标识符;顶点数据信息包括一个或多个顶点属性信息,顶点属性信息包括顶点属性数据的定位信息以及顶点属性解析信息的定位信息,顶点属性数据的定位信息用于确定所述顶点属性数据的位置,顶点属性解析信息的定位信息用于确定顶点属性解析信息的位置;顶点属性解析信息用于对顶点属性数据进行解析,以获取顶点属性的值;顶点属性解析信息包括顶点属性的类型以及顶点属性在顶点属性数据中的取值方式;分别存储边数据信息与顶点数据信息。本发明的技术方案能够提高图数据的存取效率。
Description
技术领域
本发明涉及一种计算机技术,特别是涉及一种图数据存取方法及系统。
背景技术
图是计算机科学中最常用的一类抽象数据结构,在结构和语义方面比线性表和树更复杂,在数据与数据关系上更具有一般性表示能力。虽然图的应用和处理技术已经发展了很长时间,但随着信息规模的不断增长,图的规模日益扩大,如何对大规模图进行高效处理成为新的挑战。目前采用云计算环境进行大规模图的存储和处理具有优势。基于云计算环境的图存储系统大致可分为两种:一种是以GFS、HDFS为代表的分布式文件系统;另一种是以BigTable、Hbase为代表的NoSQL分布式数据库。
具体来说,以HDFS为代表的分布式文件系统提供了一个统一的文件系统视图,并通过将图顶点、边数据作为文件直接存放。但对图数据的管理依赖于人工或半自动的数据管理,虽具有强大的存储能力,但数据管理效率较低。另一方面,NoSQL数据库采用的数据模型主要有文档存储、列族存储、Key-Value存储模型、图存储模型。文档存储模型与分布式文件系统类似,比较适合存储系统日志等非结构化数据,但不太适合以邻接矩阵、邻接表组织的图数据,其将数据作为统一的文档形式存储,为支持灵活性导致的处理效率的降低也会成为大规模图数据管理的性能瓶颈。列族存储模型比较适合对某一列进行随机查询,但是对于穷举式遍历,反而不如传统的面向行的存储模式。与上述存储模型相比,Key-Value模型通过将数据组织为主键-数据的映射关系,非常适合通过主键进行查询和遍历,但对复杂的条件查询支持度不高。因此,Key-Value模型可很好地支持通过id为条件的单个顶点查询或图遍历操作,但对某个属性的检索只能通过全表扫描完成,性能不高。在实际运用中,应用对图存储的要求不仅仅局限于对单个节点的数据获取,而是对图的拓扑结构,如最短路径、连通性等具有检索要求,而在这方面Key-Value则不能很好地支持。
最后,图存储模型的相关研究还不完善,只有少数分布式图数据库如Neo4j等采用了图存储模型。这种模型由于其本身的适配性能很好地支持对图拓扑结构的检索,但很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案,典型模型如Neo4j不能保持与已有云计算环境如Hadoop的兼容性,从而不能很好地利用云计算环境的可扩展性、容错性等方面的特性。
鉴于此,如何找到一种方法提高对大量图数据信息的存取性能成为了本领域技术人员亟待解决的问题。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种图数据存取方法及系统,用于解决现有技术中在云计算环境下对图数据的存取性能不高的问题。
为实现上述目的及其他相关目的,本发明提供一种图数据存取方法,所述图数据存取方法包括:将待存储的图数据信息分成边数据信息与顶点数据信息;其中,所述边数据信息包括边所连接的顶点标识符;所述顶点数据信息包括一个或多个顶点属性信息,所述顶点属性信息包括顶点属性数据的定位信息以及顶点属性解析信息的定位信息,所述顶点属性数据的定位信息用于确定所述顶点属性数据的位置,所述顶点属性解析信息的定位信息用于确定所述顶点属性解析信息的位置;所述顶点属性解析信息用于对所述顶点属性数据进行解析,以获取所述顶点属性的值;所述顶点属性解析信息包括所述顶点属性的类型以及所述顶点属性在所述顶点属性数据中的取值方式;分别存储所述边数据信息与所述顶点数据信息。
可选地,所述顶点属性数据的定位信息包括标识符或指针的形式;所述顶点属性解析信息的定位信息包括标识符或指针的形式。
可选地,所述顶点属性解析信息还包括分隔符信息,所述顶点属性数据以所述分隔符分割成多个顶点属性列,所述顶点属性的取值方式为:在所述顶点属性在所述顶点属性数据中相应顺序的所述顶点属性列中进行取值;当所述分隔符为空时,所述顶点属性解析信息包括字节取值范围,所述顶点属性的取值方式为:在所属顶点属性数据的所述字节取值范围中进行取值。
可选地,所述顶点属性的取值方式还包括对所述顶点属性数据中获取的值进行进一步解析处理,所述进一步解析处理包括计算平均值。
可选地,所属顶点属性解析信息以XML格式定义。
可选地,所述图数据存取方法还包括:读取所述图数据的边数据信息;通过所述边数据信息的顶点标识符定位所述顶点数据信息;读取所述顶点数据信息,根据所述顶点属性解析信息对所述顶点属性数据进行解析,获取所述顶点数据信息的顶点属性值。
可选地,所述边数据信息包括一个或多个边属性信息,所述边属性信息包括边属性数据的定位信息以及边属性解析信息的定位信息,所述边属性数据的定位信息用于确定所述边属性数据的位置,所述边属性解析信息的定位信息用于确定所述边属性解析信息的位置;所述边属性解析信息用于对所述边属性数据进行解析,以获取所述边属性的值;所述边属性解析信息包括所述边属性的类型以及所述边属性在所述边属性数据中的取值方式。
可选地,所述边属性数据的定位信息包括标识符或指针的形式;所述边属性解析信息的定位信息包括标识符或指针的形式。
可选地,所述边属性解析信息还包括分隔符信息,所述边属性数据以所述分隔符分割成多个边属性列,所述边属性的取值方式为:在所述边属性在所述边属性数据中相应顺序的所述边属性列中进行取值;当所述分隔符为空时,所述边属性解析信息包括字节取值范围,所述边属性的取值方式为:在所属边属性数据的所述字节取值范围中进行取值。
可选地,所述边属性的取值方式还包括对所述边属性数据中获取的值进行进一步解析处理,所述进一步解析处理包括计算平均值。
可选地,所属边属性解析信息以XML格式定义。
可选地,所述图数据存取方法还包括:读取所述图数据的边数据信息;通过所述边数据信息的顶点标识符定位所述顶点数据信息;读取所述顶点数据信息,根据所述顶点属性解析信息对所述顶点属性数据进行解析,获取所述顶点数据信息的顶点属性值;读取所述边属性信息,根据所述边属性解析信息对所述边属性数据进行解析,获取所述边数据信息的边属性值。
本发明还提供一种图数据存取系统,所述图数据存取系统包括图数据分解模块以及图数据存储模块;其中,所述图数据分解模块用于将待存储的图数据信息分成边数据信息与顶点数据信息;其中,所述边数据信息包括边所连接的顶点标识符;所述顶点数据信息包括一个或多个顶点属性信息,所述顶点属性信息包括顶点属性数据的定位信息以及顶点属性解析信息的定位信息,所述顶点属性数据的定位信息用于确定所述顶点属性数据的位置,所述顶点属性解析信息的定位信息用于确定所述顶点属性解析信息的位置;所述顶点属性解析信息用于对所述顶点属性数据进行解析,以获取所述顶点属性的值;所述顶点属性解析信息包括所述顶点属性的类型以及所述顶点属性在所述顶点属性数据中的取值方式;所述图数据存储模块用于分别存储所述边数据信息与所述顶点数据信息。
可选地,所述顶点属性数据的定位信息包括标识符或指针的形式;所述顶点属性解析信息的定位信息包括标识符或指针的形式。
可选地,所述顶点属性解析信息还包括分隔符信息,所述顶点属性数据以所述分隔符分割成多个顶点属性列,所述顶点属性的取值方式为:在所述顶点属性在所述顶点属性数据中相应顺序的所述顶点属性列中进行取值;当所述分隔符为空时,所述顶点属性解析信息包括字节取值范围,所述顶点属性的取值方式为:在所属顶点属性数据的所述字节取值范围中进行取值。
可选地,所述顶点属性的取值方式还包括对所述顶点属性数据中获取的值进行进一步解析处理,所述进一步解析处理包括计算平均值。
可选地,所属顶点属性解析信息以XML格式定义。
可选地,所述边数据信息包括一个或多个边属性信息,所述边属性信息包括边属性数据的定位信息以及边属性解析信息的定位信息,所述边属性数据的定位信息用于确定所述边属性数据的位置,所述边属性解析信息的定位信息用于确定所述边属性解析信息的位置;所述边属性解析信息用于对所述边属性数据进行解析,以获取所述边属性的值;所述边属性解析信息包括所述边属性的类型以及所述边属性在所述边属性数据中的取值方式。
可选地,所述边属性数据的定位信息包括标识符或指针的形式;所述边属性解析信息的定位信息包括标识符或指针的形式。
可选地,所述边属性解析信息还包括分隔符信息,所述边属性数据以所述分隔符分割成多个边属性列,所述边属性的取值方式为:在所述边属性在所述边属性数据中相应顺序的所述边属性列中进行取值;当所述分隔符为空时,所述边属性解析信息包括字节取值范围,所述边属性的取值方式为:在所属边属性数据的所述字节取值范围中进行取值。
可选地,所述边属性的取值方式还包括对所述边属性数据中获取的值进行进一步解析处理,所述进一步解析处理包括计算平均值。
可选地,所属边属性解析信息以XML格式定义。
可选地,所述图数据信息还包括索引信息,所述索引信息包括:对所述顶点数据信息的索引和/或对所述边数据信息的索引。
可选地,所述图数据存取系统还包括图数据读取模块,所述图数据读取模块用于读取所述图数据信息,所述读取所述图数据信息包括:读取所述图数据的边数据信息;通过所述边数据信息的顶点标识符定位所述顶点数据信息;读取所述图数据的顶点数据信息,根据所述数据字典对所述顶点属性数据进行解析,获取所述顶点数据信息的各数据类型的值。
可选地,所述图数据存取系统还包括图数据读取模块,所述图数据读取模块用于读取所述图数据信息,所述读取所述图数据信息包括:读取所述图数据的边数据信息;通过所述边数据信息的顶点标识符定位所述顶点数据信息;读取所述图数据的顶点数据信息,根据所述数据字典对所述顶点属性数据进行解析,获取所述顶点数据信息的各数据类型的值;读取所述边属性信息,根据所述边属性解析信息对所述边属性数据进行解析,获取所述边数据信息的边属性值。
可选地,所述图数据信息还包括索引信息,所述索引信息包括:对所述顶点数据信息的索引和/或对所述边数据信息的索引。
如上所述,本发明的一种图数据存取方法及系统,具有以下有益效果:通过把图数据中的顶点与边分别存储,并把顶点信息或/和边分成属性数据以及对属性数据进行解析的解析信息,所述对属性数据进行解析的解析信息称为数据字典。采用定义数据字典对属性数据进行解析的方式,根据名称和数据类型抽取出有意义的数据。可以根据分隔符或字节范围来获取顶点或/和边的属性值,甚至还可以通过数据字典对属性数据进行进一步处理获得顶点或/和边的属性值,借助数据字典,不需要对属性数据进行任何预处理就可以得到所需要的顶点或/和边属性值,减少了数据清理和预转换的时间。对同时通过对属性数据与数据字典单独存储,可以实现对属性数据以及数据字典的复用,提高了图数据的存储效率,并减少了大量图数据下的存储空间要求。
附图说明
图1显示为本发明的一种图数据存取方法的一实施例的流程示意图。
图2显示为本发明的一种图数据存取系统的一实施例的模块示意图。
图3显示为本发明的一种图数据存取系统的一实施例的模块示意图。
元件标号说明
1 图数据存取系统
11 图数据分解模块
12 图数据存储模块
13 图数据读取模块
S1~S2 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明提供一种图数据存取方法。在一个实施例中,如图1所示,所述图数据存取方法包括:
步骤S1,将待存储的图数据信息分成边数据信息与顶点数据信息;其中,所述边数据信息包括边所连接的顶点标识符;所述顶点数据信息包括一个或多个顶点属性信息,所述顶点属性信息包括顶点属性数据的定位信息以及顶点属性解析信息的定位信息,所述顶点属性数据的定位信息用于确定所述顶点属性数据的位置,所述顶点属性解析信息的定位信息用于确定所述顶点属性解析信息的位置;所述顶点属性解析信息用于对所述顶点属性数据进行解析,以获取所述顶点属性的值;所述顶点属性解析信息包括所述顶点属性的类型以及所述顶点属性在所述顶点属性数据中的取值方式。在一个实施例中,所述顶点属性数据与所述顶点属性解析信息分别存储,所述顶点属性数据的定位信息包括标识符或指针的形式;所述顶点属性解析信息的定位信息包括标识符或指针的形式。
在一个实施例中,所述顶点属性解析信息还包括分隔符信息,所述顶点属性数据以所述分隔符分割成多个顶点属性列,所述顶点属性的取值方式为:在所述顶点属性在所述顶点属性数据中相应顺序的所述顶点属性列中进行取值;当所述分隔符为空时,所述顶点属性解析信息包括字节取值范围,所述顶点属性的取值方式为:在所属顶点属性数据的所述字节取值范围中进行取值。在一个实施例中,所述顶点属性的取值方式还包括对所述顶点属性数据中获取的值进行进一步解析处理,所述进一步解析处理包括计算平均值、求和等数学计算。在一个实施例中,所属顶点属性解析信息以XML格式定义。
在一个实施例中,所述边数据信息包括一个或多个边属性信息,所述边属性信息包括边属性数据的定位信息以及边属性解析信息的定位信息,所述边属性数据的定位信息用于确定所述边属性数据的位置,所述边属性解析信息的定位信息用于确定所述边属性解析信息的位置;所述边属性解析信息用于对所述边属性数据进行解析,以获取所述边属性的值;所述边属性解析信息包括所述边属性的类型以及所述边属性在所述边属性数据中的取值方式。所述边属性数据的定位信息包括标识符或指针的形式;所述边属性解析信息的定位信息包括标识符或指针的形式。
在一个实施例中,所述边属性解析信息还包括分隔符信息,所述边属性数据以所述分隔符分割成多个边属性列,所述边属性的取值方式为:在所述边属性在所述边属性数据中相应顺序的所述边属性列中进行取值;当所述分隔符为空时,所述边属性解析信息包括字节取值范围,所述边属性的取值方式为:在所属边属性数据的所述字节取值范围中进行取值。在一个实施例中,所述边属性的取值方式还包括对所述边属性数据中获取的值进行进一步解析处理,所述进一步解析处理包括计算平均值、求和等数学计算。在一个实施例中,所属边属性解析信息以XML格式定义。
在一个实施例中,所述图数据信息还包括索引信息,所述索引信息包括:对所述顶点数据信息的索引和/或对所述边数据信息的索引。
步骤S2,分别存储所述边数据信息与所述顶点数据信息。具体地,分别存储图数据中的所述边数据信息与所述顶点数据信息。在一个实施例中,还包括分别存储所述顶点属性数据与所述顶点属性解析信息。在一个实施例中,还包括分别存储所述边属性数据与所述边属性解析信息。所述顶点属性解析信息与所述边属性解析信息统称为数据字典。所述数据字典以XML格式定义描述。
在一个实施例中,所述图数据存取方法还包括:读取所述图数据的边数据信息;通过所述边数据信息的顶点标识符定位所述顶点数据信息;读取所述图数据的顶点数据信息,根据所述数据字典对所述顶点属性数据进行解析,获取所述顶点数据信息的各数据类型的值。在一个实施例中,所述图数据存取方法还包括:获取所述边数据的边属性信息。
在一个实施例中,为顶点和边设计了对应的数据字典,以描述每一种类型的顶点(或边)的属性信息。详细来说,每一个数据字典都由一个全局唯一的标示符schema_id,同时以键值对的形式存储其每一个属性的描述信息(其中键是属性名,而值域保存对应的数据类型)。所述数据字典中的一个边属性解析信息如下所示:
所述数据字典中的一个顶点属性解析信息如下所示:
为了支持多种格式的解析,数据层也设计了相应的数据字典,以支持对顶点属性数据/边属性数据的解析。单独存储的顶点属性数据/边属性数据也可称为数据集。考虑到数据可能是结构化、半结构化和非结构化的,那么数据集中的记录可能是基于列分割的数据,也有可能只是二进制串。因此,数据字典需要同时支持基于字节位置的和基于分隔符位置的两种解析方式。该数据是一个非结构化数据,而在如上所示数据字典的顶点属性解析信息示例中,从字节1-8可以抽取出id,其类型是整型;从字节9-50可以抽取出名称,其类型是字符串;从字节51-200可以抽取出m_avg(当月均价),其类型是双精度浮点型。注意到这里的AVG的描述,事实上,数据字典并不限制从Range定义的数据中只能解析出一个数据,如在这个例子中,从字节51-200可以解析出多个double数值,而AVG就用于对这些数值进行聚合(即计算平均值),并将计算之后的值作为该列的值。换句话说,月均价m_avg这一列的值就是将字节51-200的double计算平均值后的值。
在数据层的数据字典中,我们用schema中的id来唯一标示一个顶点数据或边数据,也可以以schema_id描述,并通过seperator记录分隔列的符号,从而从顶点属性数据/边属性数据中得到相应的属性列。考虑到数据可能是结构化数据或非结构化数据(二进制流),上述分隔符仅对结构化数据有效,当数据集为非结构化数据时,分隔符为空。接着,对于每一个属性列,数据字典会记录这个属性列的名称、数据类型。此外,这一列用range来记录其对应于顶点属性数据/边属性数据中的位置。对于结构化数据,这个range就是第几列(利用分隔符可以分出多列);而对于非结构化数据,由于不存在列的概念,这个range就记录开始和结束的字节位置。利用这样的数据字典,我们可以从顶点属性数据/边属性数据中抽取出多列,并根据名称和数据类型抽取出有意义的数据。借助数据字典,我们不需要对原始数据进行任何预处理,这就减少了数据清理和预转换的时间。
利用本发明的设计方案,可以保证了顶点可以保存和表示多种类型的数据。与传统的直接保存真实数据相反,顶点或边利用schema_id来保存数据的描述信息(即顶点属性或边属性的解析信息),而利用指针pointer_list来动态地绑定到真实的数据(顶点属性数据或边属性数据)。因此,具体来说,若我们要从顶点/边中读取某一列的数据,我们首先需要根据schema_id读取数据字典;接着,对数据字典中记录的每一列,我们根据顶点属性数据指针pointer_list中记录的指针,来从底层数据集(顶点属性数据或边属性数据)中读取所需的数据。由于数据字典保存了顶点(或边)每一个属性列的描述信息,程序可通过读取数据字典来完成顶点(或边)的动态解析。考虑到多个顶点(或边)可能是同一个数据字典,为了减少数据冗余度,我们将数据字典进行单独保存,而每一个顶点(或边)仅仅保存数据字典的ID(schema_id)。此外,由于将图的拓扑结构和数据进行了分离,每一个顶点只需要保存拓扑信息。
本发明还提供一种图数据存取系统。在一个实施例中,如图2所示,所述图数据存取系统1包括图数据分解模块11以及图数据存储模块12。其中:
所述图数据分解模块11用于将待存储的图数据信息分成边数据信息与顶点数据信息;其中,所述边数据信息包括边所连接的顶点标识符;所述顶点数据信息包括一个或多个顶点属性信息,所述顶点属性信息包括顶点属性数据的定位信息以及顶点属性解析信息的定位信息,所述顶点属性数据的定位信息用于确定所述顶点属性数据的位置,所述顶点属性解析信息的定位信息用于确定所述顶点属性解析信息的位置;所述顶点属性解析信息用于对所述顶点属性数据进行解析,以获取所述顶点属性的值;所述顶点属性解析信息包括所述顶点属性的类型以及所述顶点属性在所述顶点属性数据中的取值方式。在一个实施例中,所述顶点属性数据与所述顶点属性解析信息分别存储,所述顶点属性数据的定位信息包括标识符或指针的形式;所述顶点属性解析信息的定位信息包括标识符或指针的形式。
在一个实施例中,所述顶点属性解析信息还包括分隔符信息,所述顶点属性数据以所述分隔符分割成多个顶点属性列,所述顶点属性的取值方式为:在所述顶点属性在所述顶点属性数据中相应顺序的所述顶点属性列中进行取值;当所述分隔符为空时,所述顶点属性解析信息包括字节取值范围,所述顶点属性的取值方式为:在所属顶点属性数据的所述字节取值范围中进行取值。在一个实施例中,所述顶点属性的取值方式还包括对所述顶点属性数据中获取的值进行进一步解析处理,所述进一步解析处理包括计算平均值、求和等数学计算。在一个实施例中,所属顶点属性解析信息以XML格式定义。
在一个实施例中,所述边数据信息包括一个或多个边属性信息,所述边属性信息包括边属性数据的定位信息以及边属性解析信息的定位信息,所述边属性数据的定位信息用于确定所述边属性数据的位置,所述边属性解析信息的定位信息用于确定所述边属性解析信息的位置;所述边属性解析信息用于对所述边属性数据进行解析,以获取所述边属性的值;所述边属性解析信息包括所述边属性的类型以及所述边属性在所述边属性数据中的取值方式。所述边属性数据的定位信息包括标识符或指针的形式;所述边属性解析信息的定位信息包括标识符或指针的形式。
在一个实施例中,所述边属性解析信息还包括分隔符信息,所述边属性数据以所述分隔符分割成多个边属性列,所述边属性的取值方式为:在所述边属性在所述边属性数据中相应顺序的所述边属性列中进行取值;当所述分隔符为空时,所述边属性解析信息包括字节取值范围,所述边属性的取值方式为:在所属边属性数据的所述字节取值范围中进行取值。在一个实施例中,所述边属性的取值方式还包括对所述边属性数据中获取的值进行进一步解析处理,所述进一步解析处理包括计算平均值、求和等数学计算。在一个实施例中,所属边属性解析信息以XML格式定义。
在一个实施例中,所述图数据信息还包括索引信息,所述索引信息包括:对所述顶点数据信息的索引和/或对所述边数据信息的索引。
所述图数据存储模块12用于分别存储所述边数据信息与所述顶点数据信息。具体地,所述图数据存储模块12用于分别存储图数据中的所述边数据信息与所述顶点数据信息。在一个实施例中,还包括分别存储所述顶点属性数据与所述顶点属性解析信息。在一个实施例中,所述图数据存储模块12用于还包括分别存储所述边属性数据与所述边属性解析信息。所述顶点属性解析信息与所述边属性解析信息统称为数据字典。所述数据字典以XML格式定义描述。
在一个实施例中,如图3所示,所述图数据存取系统1包括图数据分解模块11、图数据存储模块12以及图数据读取模块13。其中:
所述图数据读取模块13用于读取所述图数据信息,所述读取所述图数据信息包括:读取所述图数据的边数据信息;通过所述边数据信息的顶点标识符定位所述顶点数据信息;读取所述图数据的顶点数据信息,根据所述数据字典对所述顶点属性数据进行解析,获取所述顶点数据信息的各数据类型的值。在一个实施例中,所述图数据读取模块用于读取所述图数据信息,所述读取所述图数据信息包括:读取所述边属性信息,根据所述边属性解析信息对所述边属性数据进行解析,获取所述边数据信息的边属性值。
在一个实施例中,为顶点和边设计了对应的数据字典,以描述每一种类型的顶点(或边)的属性信息。详细来说,每一个数据字典都由一个全局唯一的标示符schema_id,同时以键值对的形式存储其每一个属性的描述信息(其中键是属性名,而值域保存对应的数据类型)。所述数据字典中的一个边属性解析信息如下所示:
所述数据字典中的一个顶点属性解析信息如下所示:
为了支持多种格式的解析,数据层也设计了相应的数据字典,以支持对顶点属性数据/边属性数据的解析。单独存储的顶点属性数据/边属性数据也可称为数据集。考虑到数据可能是结构化、半结构化和非结构化的,那么数据集中的记录可能是基于列分割的数据,也有可能只是二进制串。因此,数据字典可以同时支持基于字节位置的和基于分隔符位置的两种解析方式。该数据是一个非结构化数据,而在如上所示数据字典的顶点属性解析信息示例中,从字节1-8可以抽取出id,其类型是整型;从字节9-50可以抽取出名称,其类型是字符串;从字节51-200可以抽取出m_avg(当月均价),其类型是双精度浮点型。注意到这里的AVG的描述,事实上,数据字典并不限制从Range定义的数据中只能解析出一个数据,如在这个例子中,从字节51-200可以解析出多个double数值,而AVG就用于对这些数值进行聚合(即计算平均值),并将计算之后的值作为该列的值。换句话说,月均价m_avg这一列的值就是将字节51-200的double计算平均值后的值。所述图数据读取模块13完成上述解析过程。
在数据层的数据字典中,我们用schema中的id来唯一标示一个顶点数据或边数据,也可以以schema_id描述,并通过seperator记录分隔列的符号,从而从顶点属性数据/边属性数据中得到相应的属性列。考虑到数据可能是结构化数据或非结构化数据(二进制流),上述分隔符仅对结构化数据有效,当数据集为非结构化数据时,分隔符为空。接着,对于每一个属性列,数据字典会记录这个属性列的名称、数据类型。此外,这一列用range来记录其对应于顶点属性数据/边属性数据中的位置。对于结构化数据,这个range就是第几列(利用分隔符可以分出多列);而对于非结构化数据,由于不存在列的概念,这个range就记录开始和结束的字节位置。利用这样的数据字典,我们可以从顶点属性数据/边属性数据中抽取出多列,并根据名称和数据类型抽取出有意义的数据。借助数据字典,我们不需要对原始数据进行任何预处理,这就减少了数据清理和预转换的时间。
但随着信息规模的不断增长,图的规模日益扩大,基于云计算环境的图存储系统需要存储和处理的图数据信息量变得越来越巨大。采用了本发明的技术方案的图存储系统能够对大规模图数据进行高效存取。在HDFS(Hadoop Distribute File System,Hadoop分布式文件系统)中,可以将本发明的技术方案中的批量的图数据(顶点、边)合并为一个大文件(一个文件内可能含有多个顶点或边的数据)。每个文件都存在于HDFS中,并会根据HDFS文件分块的策略对文件块进行冗余复制,从而保证数据不会随单个节点失效而丢失。这样,HDFS存储的图数据可以在在数据类型上实现动态绑定与适配,从而提高海量异构图数据的存储效率。
综上所述,本发明的一种图数据存取方法及系统通过把图数据中的顶点与边分别存储,并把顶点信息或/和边分成属性数据以及对属性数据进行解析的解析信息,所述对属性数据进行解析的解析信息称为数据字典。采用定义数据字典对属性数据进行解析的方式,根据名称和数据类型抽取出有意义的数据。可以根据分隔符或字节范围来获取顶点或/和边的属性值,甚至还可以通过数据字典对属性数据进行进一步处理获得顶点或/和边的属性值,借助数据字典,不需要对属性数据进行任何预处理就可以得到所需要的顶点或/和边属性值,减少了数据清理和预转换的时间。对同时通过对属性数据与数据字典单独存储,可以实现对属性数据以及数据字典的复用,提高了图数据的存储效率,并减少了大量图数据下的存储空间要求。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (14)
1.一种图数据存取方法,其特征在于,所述图数据存取方法包括:
将待存储的图数据信息分成边数据信息与顶点数据信息;其中,所述边数据信息包括边所连接的顶点标识符;所述顶点数据信息包括一个或多个顶点属性信息,所述顶点属性信息包括顶点属性数据的定位信息以及顶点属性解析信息的定位信息,所述顶点属性数据的定位信息用于确定所述顶点属性数据的位置,所述顶点属性解析信息的定位信息用于确定所述顶点属性解析信息的位置;所述顶点属性解析信息用于对所述顶点属性数据进行解析,以获取所述顶点属性的值;所述顶点属性解析信息包括所述顶点属性的类型以及所述顶点属性在所述顶点属性数据中的取值方式;
存储所述边数据信息与所述顶点数据信息。
2.根据权利要求1所述的一种图数据存取方法,其特征在于:所述顶点属性解析信息还包括分隔符信息,所述顶点属性数据以所述分隔符分割成多个顶点属性列,所述顶点属性的取值方式为:在所述顶点属性在所述顶点属性数据中相应顺序的所述顶点属性列中进行取值;当所述分隔符为空时,所述顶点属性解析信息包括字节取值范围,所述顶点属性的取值方式为:在所属顶点属性数据的所述字节取值范围中进行取值。
3.根据权利要求2所述的一种图数据存取方法,其特征在于:所述顶点属性的取值方式还包括对所述顶点属性数据中获取的值进行进一步解析处理,所述进一步解析处理包括计算平均值。
4.根据权利要求1所述的一种图数据存取方法,其特征在于:所述图数据存取方法还包括:读取所述图数据的边数据信息;通过所述边数据信息的顶点标识符定位所述顶点数据信息;读取所述顶点数据信息,根据所述顶点属性解析信息对所述顶点属性数据进行解析,获取所述顶点数据信息的顶点属性值。
5.根据权利要求1所述的一种图数据存取方法,其特征在于:所述边数据信息包括一个或多个边属性信息,所述边属性信息包括边属性数据的定位信息以及边属性解析信息的定位信息,所述边属性数据的定位信息用于确定所述边属性数据的位置,所述边属性解析信息的定位信息用于确定所述边属性解析信息的位置;所述边属性解析信息用于对所述边属性数据进行解析,以获取所述边属性的值;所述边属性解析信息包括所述边属性的类型以及所述边属性在所述边属性数据中的取值方式。
6.根据权利要求5所述的一种图数据存取方法,其特征在于:所述边属性解析信息还包括分隔符信息,所述边属性数据以所述分隔符分割成多个边属性列,所述边属性的取值方式为:在所述边属性在所述边属性数据中相应顺序的所述边属性列中进行取值;当所述分隔符为空时,所述边属性解析信息包括字节取值范围,所述边属性的取值方式为:在所属边属性数据的所述字节取值范围中进行取值。
7.根据权利要求5所述的一种图数据存取方法,其特征在于:所述图数据存取方法还包括:读取所述图数据的边数据信息;通过所述边数据信息的顶点标识符定位所述顶点数据信息;读取所述顶点数据信息,根据所述顶点属性解析信息对所述顶点属性数据进行解析,获取所述顶点数据信息的顶点属性值;读取所述边属性信息,根据所述边属性解析信息对所述边属性数据进行解析,获取所述边数据信息的边属性值。
8.一种图数据存取系统,其特征在于:所述图数据存取系统包括图数据分解模块以及图数据存储模块;其中:
所述图数据分解模块用于将待存储的图数据信息分成边数据信息与顶点数据信息;其中,所述边数据信息包括边所连接的顶点标识符;所述顶点数据信息包括一个或多个顶点属性信息,所述顶点属性信息包括顶点属性数据的定位信息以及顶点属性解析信息的定位信息,所述顶点属性数据的定位信息用于确定所述顶点属性数据的位置,所述顶点属性解析信息的定位信息用于确定所述顶点属性解析信息的位置;所述顶点属性解析信息用于对所述顶点属性数据进行解析,以获取所述顶点属性的值;所述顶点属性解析信息包括所述顶点属性的类型以及所述顶点属性在所述顶点属性数据中的取值方式;
所述图数据存储模块用于分别存储所述边数据信息与所述顶点数据信息。
9.根据权利要求8所述的一种图数据存取系统,其特征在于:所述顶点属性解析信息还包括分隔符信息,所述顶点属性数据以所述分隔符分割成多个顶点属性列,所述顶点属性的取值方式为:在所述顶点属性在所述顶点属性数据中相应顺序的所述顶点属性列中进行取值;当所述分隔符为空时,所述顶点属性解析信息包括字节取值范围,所述顶点属性的取值方式为:在所属顶点属性数据的所述字节取值范围中进行取值。
10.根据权利要求9所述的一种图数据存取系统,其特征在于:所述顶点属性的取值方式还包括对所述顶点属性数据中获取的值进行进一步解析处理,所述进一步解析处理包括计算平均值。
11.根据权利要求8所述的一种图数据存取系统,其特征在于:所述边数据信息包括一个或多个边属性信息,所述边属性信息包括边属性数据的定位信息以及边属性解析信息的定位信息,所述边属性数据的定位信息用于确定所述边属性数据的位置,所述边属性解析信息的定位信息用于确定所述边属性解析信息的位置;所述边属性解析信息用于对所述边属性数据进行解析,以获取所述边属性的值;所述边属性解析信息包括所述边属性的类型以及所述边属性在所述边属性数据中的取值方式。
12.根据权利要求11所述的一种图数据存取系统,其特征在于:所述边属性解析信息还包括分隔符信息,所述边属性数据以所述分隔符分割成多个边属性列,所述边属性的取值方式为:在所述边属性在所述边属性数据中相应顺序的所述边属性列中进行取值;当所述分隔符为空时,所述边属性解析信息包括字节取值范围,所述边属性的取值方式为:在所属边属性数据的所述字节取值范围中进行取值。
13.根据权利要求8至12中任一权利要求所述的一种图数据存取系统,其特征在于:所述图数据存取系统还包括图数据读取模块,所述图数据读取模块用于读取所述图数据信息,所述读取所述图数据信息包括:读取所述图数据的边数据信息;通过所述边数据信息的顶点标识符定位所述顶点数据信息;读取所述图数据的顶点数据信息,根据数据字典对所述顶点属性数据进行解析,获取所述顶点数据信息的各数据类型的值;其中,所述数据字典为对属性数据进行解析的解析信息;所述属性数据包括边属性数据、顶点属性数据。
14.根据权利要求11至12中任一权利要求所述的一种图数据存取系统,其特征在于:所述图数据存取系统还包括图数据读取模块,所述图数据读取模块用于读取所述图数据信息,所述读取所述图数据信息包括:读取所述图数据的边数据信息;通过所述边数据信息的顶点标识符定位所述顶点数据信息;读取所述图数据的顶点数据信息,根据数据字典对所述顶点属性数据进行解析,获取所述顶点数据信息的各数据类型的值;读取所述边属性信息,根据所述边属性解析信息对所述边属性数据进行解析,获取所述边数据信息的边属性值;其中,所述数据字典为对属性数据进行解析的解析信息;所述属性数据包括边属性数据、顶点属性数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510028305.8A CN104615677B (zh) | 2015-01-20 | 2015-01-20 | 一种图数据存取方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510028305.8A CN104615677B (zh) | 2015-01-20 | 2015-01-20 | 一种图数据存取方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104615677A CN104615677A (zh) | 2015-05-13 |
CN104615677B true CN104615677B (zh) | 2018-02-09 |
Family
ID=53150119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510028305.8A Expired - Fee Related CN104615677B (zh) | 2015-01-20 | 2015-01-20 | 一种图数据存取方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104615677B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325756B (zh) * | 2015-06-15 | 2020-04-24 | 阿里巴巴集团控股有限公司 | 一种数据存储、数据计算方法和设备 |
CN106354729B (zh) * | 2015-07-16 | 2020-01-07 | 阿里巴巴集团控股有限公司 | 一种图数据处理方法、装置和系统 |
CN106227794B (zh) * | 2016-07-20 | 2019-09-17 | 北京航空航天大学 | 时态图数据中动态属性数据的存储方法和装置 |
CN110309334B (zh) * | 2018-04-20 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 图数据库的查询方法、系统、计算机设备和可读存储介质 |
CN108549731A (zh) * | 2018-07-11 | 2018-09-18 | 中国电子科技集团公司第二十八研究所 | 一种基于本体模型的知识图谱构建方法 |
CN109255055B (zh) * | 2018-08-06 | 2020-10-30 | 四川蜀天梦图数据科技有限公司 | 一种基于分组关联表的图数据存取方法和装置 |
CN109344268A (zh) * | 2018-08-14 | 2019-02-15 | 北京奇虎科技有限公司 | 图形数据库写入的方法、电子设备及计算机可读存储介质 |
CN109344269A (zh) * | 2018-08-14 | 2019-02-15 | 北京奇虎科技有限公司 | 图形数据库写入的方法、电子设备及计算机可读存储介质 |
CN109359156B (zh) * | 2018-08-14 | 2021-10-08 | 阿里巴巴(中国)有限公司 | 数据存储结构处理方法和装置 |
CN109446362B (zh) * | 2018-09-05 | 2021-07-23 | 深圳神图科技有限公司 | 基于外存的图数据库结构、图数据存储方法、装置 |
CN111814001B (zh) * | 2019-04-11 | 2024-05-10 | 杭州海康威视数字技术股份有限公司 | 反馈信息的方法和装置 |
CN111158583A (zh) * | 2019-11-25 | 2020-05-15 | 深圳壹账通智能科技有限公司 | 图计算的布尔型变量存储方法、装置、设备及存储介质 |
CN111090760A (zh) * | 2019-11-25 | 2020-05-01 | 贝壳技术有限公司 | 数据存储方法和装置、计算机可读存储介质、电子设备 |
CN111881326A (zh) * | 2020-07-24 | 2020-11-03 | 北京浪潮数据技术有限公司 | 一种图数据存储方法、装置、设备及可读存储介质 |
CN111858610B (zh) * | 2020-07-28 | 2024-08-13 | 贝壳技术有限公司 | 数据行号分配方法和装置、存储介质、电子设备 |
CN112363979B (zh) * | 2020-09-18 | 2023-08-04 | 杭州欧若数网科技有限公司 | 一种基于图数据库的分布式索引方法和系统 |
CN113779286B (zh) * | 2021-11-11 | 2022-02-08 | 支付宝(杭州)信息技术有限公司 | 管理图数据的方法及装置 |
CN113901279B (zh) * | 2021-12-03 | 2022-03-22 | 支付宝(杭州)信息技术有限公司 | 一种图数据库的检索方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004126780A (ja) * | 2002-09-30 | 2004-04-22 | Toshiba Corp | 分析用データ作成方法、データ分析方法、データ分析装置、データ作成プログラムおよびデータ分析プログラム |
CN102682005A (zh) * | 2011-03-10 | 2012-09-19 | 阿里巴巴集团控股有限公司 | 偏好类目的确定方法及装置 |
CN103699623A (zh) * | 2013-12-19 | 2014-04-02 | 百度在线网络技术(北京)有限公司 | 地理编码实现方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040064450A1 (en) * | 2002-09-30 | 2004-04-01 | Kabushiki Kaisha Toshiba | Method for preparing data to be analyzed, data analysis method, data analysis device, data preparation program, data analysis program, data prediction device, data prediction method, data prediction program and computer |
-
2015
- 2015-01-20 CN CN201510028305.8A patent/CN104615677B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004126780A (ja) * | 2002-09-30 | 2004-04-22 | Toshiba Corp | 分析用データ作成方法、データ分析方法、データ分析装置、データ作成プログラムおよびデータ分析プログラム |
CN102682005A (zh) * | 2011-03-10 | 2012-09-19 | 阿里巴巴集团控股有限公司 | 偏好类目的确定方法及装置 |
CN103699623A (zh) * | 2013-12-19 | 2014-04-02 | 百度在线网络技术(北京)有限公司 | 地理编码实现方法和装置 |
Non-Patent Citations (1)
Title |
---|
聚类方法在图像识别中的应用;张维东等;《技术交流》;20091231;第45-47页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104615677A (zh) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104615677B (zh) | 一种图数据存取方法及系统 | |
CN107451225B (zh) | 用于半结构化数据的可缩放分析平台 | |
Kaur et al. | Modeling and querying data in NoSQL databases | |
Faye et al. | A survey of RDF storage approaches | |
US9600507B2 (en) | Index structure for a relational database table | |
Chung et al. | JackHare: a framework for SQL to NoSQL translation using MapReduce | |
CN106708993A (zh) | 基于大数据技术的空间数据存储处理中间件框架实现方法 | |
US8825621B2 (en) | Transformation of complex data source result sets to normalized sets for manipulation and presentation | |
CN103440288A (zh) | 一种大数据存储方法及装置 | |
CN103123650B (zh) | 一种基于整数映射的xml数据库全文索引方法 | |
CN104750681A (zh) | 一种海量数据的处理方法及装置 | |
CN107103032A (zh) | 一种分布式环境下避免全局排序的海量数据分页查询方法 | |
Van et al. | An efficient distributed index for geospatial databases | |
US11507555B2 (en) | Multi-layered key-value storage | |
CN103646051A (zh) | 一种基于列存储的大数据并行处理系统及方法 | |
Khan et al. | Predictive performance comparison analysis of relational & NoSQL graph databases | |
CN107895046A (zh) | 一种异构数据集成平台 | |
Sarlis et al. | Datix: A system for scalable network analytics | |
Hashem et al. | An Integrative Modeling of BigData Processing. | |
Fan et al. | Handling distributed XML queries over large XML data based on MapReduce framework | |
CN103853844A (zh) | 基于Hadoop的关系表非冗余键集合识别方法 | |
Kvet et al. | Data block and tuple identification using master index | |
Haque et al. | Distributed RDF triple store using hbase and hive | |
Khashan et al. | A big data based framework for executing complex query over Covid-19 datasets (Covid-QF) | |
Kanojia et al. | IT Infrastructure for Smart City: Issues and Challenges in Migration from Relational to NoSQL Databases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180209 Termination date: 20210120 |