CN112528090B - 图数据的存储方法和存储装置 - Google Patents
图数据的存储方法和存储装置 Download PDFInfo
- Publication number
- CN112528090B CN112528090B CN202011459723.XA CN202011459723A CN112528090B CN 112528090 B CN112528090 B CN 112528090B CN 202011459723 A CN202011459723 A CN 202011459723A CN 112528090 B CN112528090 B CN 112528090B
- Authority
- CN
- China
- Prior art keywords
- node
- edge
- data
- internal
- mapping relationship
- 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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (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
本公开涉及一种图数据的存储方法和存储装置,涉及知识图谱和深度学习领域。方法包括:获取待存储的图数据,图数据包括多个节点中的每个节点的节点数据,其中每个节点的节点数据包括该节点的节点ID;针对每个节点,分配相应的节点内部ID,其中,每个节点的节点内部ID对应于该节点的节点ID;基于所分配的节点内部ID,为所述图数据生成映射数据;存储所生成的映射数据。
Description
技术领域
本公开涉及知识图谱和深度学习领域,具体涉及一种图数据的存储方法和存储装置、计算机设备、计算机可读存储介质以及计算机程序产品。
背景技术
图属于计算机科学中常用的一种抽象数据结构,其由节点和边组成。在图结构中,节点之间的关系是任意的,任何两个节点之间都有可能存在着边关系。通常,用节点表示事物,用连接两个节点的边表示相应的两个事物之间的关系。
图数据库是以图的方式存储数据,并且可以实现节点与关系之间的各种查询,其在知识图谱、社交网络、电子商务、金融风控等场景下都有广泛的应用。然而,现有的图数据库无法支持大规模、深度且高效的图检索。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
根据本公开的第一方面,提供了一种图数据的存储方法,包括:获取待存储的图数据,所述图数据包括多个节点中的每个节点的节点数据,其中每个节点的节点数据包括该节点的节点ID;针对所述多个节点中的每个节点,分配相应的节点内部ID,其中,所述每个节点的节点内部ID对应于该节点的节点ID;基于所分配的节点内部ID,为所述图数据生成映射数据;存储所生成的映射数据。
根据本公开的第二方面,提供了一种图数据的存储装置,包括:获取模块,所述获取模块被配置为获取待存储的图数据,所述图数据包括多个节点中的每个节点的节点数据,其中每个节点的节点数据包括该节点的节点ID;内部ID分配模块,所述内部ID分配模块被配置为针对所述多个节点中的每个节点,分配相应的节点内部ID,其中,所述每个节点的节点内部ID对应于该节点的节点ID;生成模块,所述生成模块被配置为基于所分配的节点内部ID,为所述图数据生成映射数据;存储模块,所述存储模块被配置为存储所生成的映射数据。
根据本公开的第三方面,提供了一种计算机设备,包括:数据库、处理器以及存储在所述数据库上的计算机程序,其中,所述处理器被配置为执行所述计算机程序以实现本公开第一方面所述的方法的步骤。
根据本公开的第四方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现本公开第一方面所述的方法的步骤。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现本公开第一方面所述的方法的步骤。
根据本公开的一个或多个实施例,通过在图数据存储时引入内部ID,并基于该内部ID构建关系索引,从而实现深度且高效的图检索。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相应的附图标记指代类似但不一定相应的要素。
图1示出了根据本公开的一个实施例的图数据的场景示意图;
图2示出了根据本公开的一个实施例的图数据的存储方法的流程图;
图3示出了根据本公开的一个实施例的图数据的分布式存储方法的流程图;
图4示出了根据本公开的一个实施例的图数据的存储装置的结构框图;
图5示出了根据本公开的一个实施例的可以在其中实施本文描述的分布式存储方法的示例性系统的示意图;
图6是示出能够用于实现本公开的实施例的示例性计算机系统的结构框图。
具体实施方式
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
在本公开中,“节点”是指图中的对象,带有唯一识别该对象的ID以及若干属性,并且可带有标签;“边”用于连接两节点,带有唯一识别该边的ID以及若干属性,并且可带有方向和标签(即,边类型);边的“方向”是指在有向图中由边的起始节点指向边的终止节点的方向,相对起始节点而言,该边即为“出边”,相对终止节点而言,该边即为“入边”。
在现有技术中,传统的图数据库多为单机模式,无法实现大规模、深度且高效的图检索。另外,现有的图数据库中,节点和边的ID具有多种形式,在对节点和边进行存储时,不仅要存储节点和边的ID,还需要存储ID的长度和类型,相应地,在进行检索的时候也需要先对ID进行解析,然后才能利用该ID检索。因此,现有图数据库还存在着存储数据量大、存储和检索效率低下等问题。
本公开通过在图数据存储时引入内部ID,并基于该内部ID构建关系索引,以降低数据的存储量并且提高存储和检索的效率,从而实现大规模、深度且高效的图检索。
下面将结合附图详细描述本公开的实施例。
图1示出了根据本公开的一个实施例的图数据的场景示意图。图1中的图数据为知识图谱,但是应该理解,本公开的图数据的存储方法可用于各种适用图数据的场景中,例如,社交网络、电子商务、金融风控、电网等场景。图1展示了基于人物关系以及人物作品关系构建的关系网络,其中,不同的实体(例如,人物、作品)构成了图1中不同的节点,实体之间的关系构成了节点之间的连线。例如,节点“李白”、“贺知章”和“汪伦”为人物实体,该人物实体带有“籍贯”、“生卒年”等属性数据。节点“赠汪伦”和“静夜思”为作品实体,该作品实体带有“题材”、“创作时间”等属性数据。人物实体之间通过“朋友关系”进行连接。人物实体和作品实体之间通过“创作”、“相关人物”进行连接。此外,边“朋友关系1”和“朋友关系2”(以下统称为边“朋友关系”)、“创作1”和“创作2”(以下统称为边“创作”)、“相关人物”也带有属性数据,例如,边的两端的节点ID、边类型等,其中,边“朋友关系1”和“朋友关系2”的边类型均为“朋友”。
图2示出了根据本公开的一个实施例的图数据的存储方法的流程图。图数据的存储方法2000包括:步骤S201、获取待存储的图数据,图数据包括多个节点中的每个节点的节点数据,其中每个节点的节点数据包括该节点的节点ID;步骤S202、针对该多个节点中的每个节点,分配相应的节点内部ID,其中,每个节点的节点内部ID对应于该节点的节点ID;步骤S203、基于所分配的节点内部ID,为图数据生成映射数据;步骤S204、存储所生成的映射数据。通过上述方式,可以降低数据的存储量并且提高存储和检索的效率,从而实现大规模、深度且高效的图检索。
在图1的图数据的场景下,使用上述方法对节点“李白”和边“创作”相关的图数据进行存储。例如,获取相关的图数据,例如,节点“李白”、“赠汪伦”、“静夜思”以及边“创作”;为节点“李白”、“赠汪伦”、“静夜思”分配节点内部ID;基于上述内部ID,为节点“李白”和边“创作”相关的图数据生成映射数据。
在一些实施例中,每个节点的节点数据还包括节点属性数据。另外,图数据还包括至少一个边中的每个边的边数据,每个边的边数据包括该边的边ID和边属性数据。
在一些实施例中,节点属性数据是指节点所代表的实体相关的一些属性信息,例如,人物节点中的性别、籍贯、出生年月等。边属性数据包括边的两端的节点ID、边类型、边类型ID以及方向标识。其中,方向标识可包括出边标识和入边标识。
在一些实施例中,映射数据包括每个节点的节点内部ID与相应的节点数据之间的第一映射关系以及每个节点的节点内部ID与相应的边数据之间的第二映射关系。例如,在图1的图数据的场景下,为节点“李白”和边“创作”相关的图数据生成映射数据包括:“李白”的节点内部ID与“李白”的节点数据之间的第一映射关系,“李白”的节点内部ID与“创作1”和“创作2”的边数据之间的第二映射关系。
在一些实施例中,映射数据还包括边的边ID与相应的边属性数据之间的映射关系。
在一些实施例中,第一映射关系包括节点的节点内部ID与相应的节点ID之间的映射关系以及节点的节点内部ID与相应的节点属性数据之间的映射关系。例如,在图1的场景下,节点“李白”的第一映射关系包括:“李白”的节点内部ID与“李白”的节点ID之间的映射关系;“李白”的节点内部ID与“李白”的节点属性数据(例如,“籍贯”、“朝代”等)之间的映射关系。在一些示例中,第一映射关系中的节点属性数据通过行编码方式进行组织。
在一些实施例中,第二映射关系包括节点的节点内部ID与以下各项中的至少一项之间的映射关系:与该节点相关的至少一个边的边ID;与该节点相关的至少一个边的除该节点外的其他节点的节点内部ID。也就是说,第二映射关系可以为该节点的节点内部ID和与该节点相关的至少一个边的边ID之间的映射关系,或者和与该节点相关的至少一个边的除该节点外的其他节点的节点内部ID之间的映射关系,或者和上述二者的对应组合之间的映射关系。其中,优选地,第二映射关系为节点的节点内部ID与以下两项形成的数据对之间的映射关系:与该节点相关的至少一个边中的每个边的边ID以及该边除该节点外的另一节点的节点内部ID。例如,在图1的场景下,“李白”的第二映射关系包括“李白”的节点内部ID与“创作1”的边ID和“赠汪伦”的节点内部ID的数据对、“创作2”的边ID和“静夜思”的节点内部ID的数据对之间的映射关系。通过这种优选的方式,可以在根据边的信息进行检索时,只要在第二映射关系中检索到边ID,就可直接获得该边相关的另一节点(目标节点)的节点ID信息,而无需再根据边ID对边属性数据(例如,边两端的节点ID)进行检索,由此可以提高图检索的效率。
在一些实施例中,为了进一步降低数据的存储量并提高存储和检索的效率,在执行方法2000中的步骤S203之前,还可针对每个边,分配相应的边内部ID,其中,每个边的边内部ID对应于该边的边ID,并且基于所分配的节点内部ID和边内部ID,为图数据生成映射数据。例如,在图1的图数据的场景下,除了为节点分配节点内部ID外,还为边“创作”、“朋友关系”等分配边内部ID,并且基于“李白”的节点内部ID和“创作”、“朋友关系”的边内部ID,为节点“李白”相关的图数据生成映射数据。通过上述方式,可以降低数据的存储量并且提高存储和检索的效率,从而实现大规模、深度且高效的图检索。
在一些实施例中,在为边分配边内部ID之后,可以用边内部ID替代映射数据中相应的边ID。例如,第二映射关系可包括节点的节点内部ID与以下各项中的至少一项之间的映射关系:与该节点相关的至少一个边的边内部ID;与该节点相关的至少一个边中除该节点外的其他节点的节点内部ID。也就是说,第二映射关系可以为节点的节点内部ID和与该节点相关的至少一个边的边内部ID之间的映射关系,或者和与该节点相关的至少一个边的除该节点外的其他节点之间的映射关系,或者和上述二者的对应组合之间的映射关系。优选地,第二映射关系包括节点的内部ID与以下两项形成的数据对之间的映射关系:与该节点相关的至少一个边中的每个边的边内部ID以及该边的除该节点外的另一节点的节点内部ID。例如,“李白”的第二映射关系包括“李白”的节点内部ID与“创作1”的边内部ID和“赠汪伦”的节点内部ID的数据对、“创作2”的边内部ID和“静夜思”的节点内部ID的数据对之间的映射关系。通过上述方式,可以降低数据的存储量并且提高存储和检索的效率,从而实现大规模、深度且高效的图检索。
在一些实施例中,图数据的映射数据还可包括每个边的边内部ID与相应的边数据之间的第三映射关系。在一些示例中,该第三映射关系包括边的边内部ID与相应的边ID之间的映射关系以及边的边内部ID与相应的边属性数据之间的映射关系。例如,边“创作1”的第三映射关系包括“创作1”的边内部ID与“创作1”的边ID之间的映射关系以及“创作1”的边内部ID与“创作1”的边属性数据的映射关系。在一些示例中,第三映射关系中的边属性数据通过行编码方式进行组织。
在一些实施例中,为了进一步降低数据的存储量并提高存储和检索的效率,在执行方法2000中的步骤S203之前,还可为每个边类型分配边类型内部ID,边类型内部ID对应于相应的边类型ID,并且基于所分配的节点内部ID和边类型内部ID,为图数据生成映射数据。例如,在图1的场景下,边“朋友关系1”“朋友关系2”的边类型为“朋友”。可以为边类型“朋友”分配一个边类型内部ID,并且基于“李白”的节点内部ID和“朋友”的边类型内部ID,为节点“李白”和与边类型为“朋友”的边相关的图数据生成映射数据。通过上述方式,可以降低数据的存储量并且提高存储和检索的效率,从而实现大规模、深度且高效的图检索。
在一些实施例中,在为边类型分配边类型内部ID之后,第二映射关系可包括节点的节点内部ID和相应的边类型内部ID的组合和与该节点相关的具有相应的边类型的至少一个边的边数据之间的映射关系。在一些实施例中,该第二映射关系包括节点的内部ID和相应的边类型内部ID的组合与以下各项中的至少一项之间的映射关系:与该节点相关的具有相应的边类型的至少一个边的边内部ID;与该节点相关的具有相应的边类型的至少一个边的除该节点外的其他节点的节点内部ID。例如,在图1的图数据的场景下,“李白”的第二映射关系可以为“李白”的节点内部ID和“朋友”的边类型内部ID的组合与“朋友关系1”的边内部ID和“贺知章”的节点内部ID的数据对、“朋友关系2”的边内部ID和“汪伦”的节点内部ID的数据对之间的映射关系。通过建立边类型与边之间的映射关系,可以为图数据增加边类型相关的检索功能,从而实现高效且深度的图检索。
在一些实施例中,为了增加基于边的方向的检索功能,可以将第二映射关系设置为节点的节点内部ID和相应的方向标识的组合和与该节点相关的具有相应的方向标识的至少一个边的边数据之间的映射关系,其中,方向标识包括出边标识和入边标识。在一些实施例中,该第二映射关系包括该节点的内部ID和相应的方向标识的组合与以下各项中的至少一项之间的映射关系:与该节点相关的具有相应方向标识的至少一个边的边内部ID;与该节点相关的具有相应方向标识的至少一个边的除该节点外的其他节点的节点内部ID。例如,“李白”的第二映射关系可以为“李白”的节点内部ID和出边标识的组合与“贺知章”的节点内部ID、“汪伦”的节点内部ID、“赠汪伦”的节点内部ID、“静夜思”的节点内部ID之间的映射关系。通过建立边类型与边之间的映射关系,可以为图数据增加边类型相关的检索功能,从而实现高效且深度的图检索。
在一些实施例中,上述为节点、边以及边类型所分配的内部ID可以包括固定长度的整型数据和字符串中的至少一项。
在一些实施例中,可以将上述生成的图数据的映射数据存储于各种类型的数据库,例如关系数据库、键值数据库,对象数据库或由文件系统支持的常规存储库。
在一些实施例中,可以将上述生成的映射数据以键值对的方式存储于分布式键值数据库中,其中,分布式键值数据库可例如为hbase、Mongodb、MySQL、Cassandra等,以实现容量的扩充,进而实现大规模的图检索和计算。
在一些实施例中,为了保证图数据存储的一致性和完整性,也可以将上述生成的映射数据以键值对的方式存储到支持事务的分布式键值数据库中。其中,支持事务的分布式键值数据库可例如为Cassandra等。此时,每个节点相关的映射数据(即,第一映射关系、第二映射关系和/或第三映射关系)是作为一个事务进行存储的。这样,针对图数据中的一个点、边的操作将作为一个整体转换为一个键值事务的操作,从而保证图数据存储和检索的完整性、一致性和准确性。
图3示出了根据本公开的一个实施例的图数据的分布式存储方法的流程图。方法3000包括如下步骤:
步骤S301:获取待存储的图数据;
所获取的图数据包括多个节点中的每个节点的节点数据以及至少一个边中的每个边的边数据,边连接多个节点中的两个节点,其中每个节点的节点数据包括该节点的节点ID以及节点属性数据,其中每个边的边数据包括该边的边ID以及边属性数据,边属性数据包括边类型和方向标识。
步骤S302-1:为每个节点分配相应的节点内部ID;
步骤S302-2:为每个边分配相应的边内部ID;
步骤S302-3:为每个边类型分配边类型内部ID;
应注意的是,在一些实施例中,步骤S302-1、步骤S302-2、步骤S302-3可以先后执行,例如,可以依次执行步骤S302-1、步骤S302-2、步骤S302-3,也可以依次执行步骤S302-3、步骤S302-2、步骤S302-1,但是应理解,本公开不限于此。
步骤S303:基于所分配的节点内部ID、边内部ID以及边类型内部ID,为图数据生成映射数据。
映射数据包括每个节点的节点内部ID与相应的节点数据之间的第一映射关系、每个节点的节点内部ID与相应的边数据之间的第二映射关系以及每个边的边内部ID与相应的边数据之间的第三映射关系。具体地,该第一映射关系为节点的节点内部ID与该节点的节点ID之间的映射关系、节点的节点内部ID与该节点的节点属性数据之间的映射关系以及边类型内部ID与相应的边类型ID之间的映射关系;该第二映射关系为节点的节点内部ID与相应的边类型内部ID以及相应的方向标识的组合与以下各项中的至少一项之间的映射关系:与该节点相关的、具有相应的边类型的且具有相应的方向标识的至少一个边的边内部ID;该至少一个边中除该节点外的其他节点的节点内部ID;该第三映射关系为边的边内部ID与该边的边ID之间的映射关系以及边的边内部ID与相应的边属性数据之间的映射关系。
步骤S304:将上述映射数据分节点存入支持事务的分布式键值数据库中。
将映射数据分节点存储是指将每个节点相关的映射数据(即,第一映射关系、第二映射关系和第三映射关系)作为一个事务分别存入支持事务的分布式键值数据库中。
图4示出了根据本公开的实施例的图数据的存储装置的结构框图。存储装置4000包括:获取模块401,该获取模块被配置为获取待存储的图数据,图数据包括多个节点中的每个节点的节点数据,其中每个节点的节点数据包括该节点的节点ID;内部ID分配模块402,该内部ID分配模块被配置为针对多个节点中的每个节点,分配相应的节点内部ID,其中,每个节点的节点内部ID对应于该节点的节点ID;生成模块403,该生成模块被配置为基于所分配的节点内部ID,为图数据生成映射数据;存储模块404,该存储模块被配置为存储所生成的映射数据。
图5示出了根据本公开的一个实施例可以将本文描述的各种方法和装置在其中实施的示例性系统5000的示意图。系统5000包括服务器510以及分布式数据库520。
在本公开的实施例中,服务器510可以运行执行本公开的图数据的存储方法的一个或多个服务或软件应用。服务器510可以包括一个或多个通用计算机、专用服务器计算机(例如PC(个人计算机)服务器、UNIX服务器、中端服务器)、刀片式服务器、大型计算机、服务器群集或任何其他适当的布置和/或组合。服务器510可以包括运行虚拟操作系统的一个或多个虚拟机,或者涉及虚拟化的其他计算架构(例如可以被虚拟化以维护服务器的虚拟存储设备的逻辑存储设备的一个或多个灵活池)。在各种实施例中,服务器510可以运行提供下文所描述的功能的一个或多个服务或软件应用。
分布式数据库520可以存储由服务器510生成的映射数据。分布式数据存储库520可以驻留在各种位置。例如,由服务器510使用的数据存储库可以在服务器510本地,或者可以远离服务器510且可以经由基于网络或专用的连接与服务器510通信。这些数据库中的一个或多个可以响应于命令而存储、更新和检索到数据库以及来自数据库的数据。
分布式数据库520中包括分散在多台独立设备上的存储单元5201-1…5201-n。存储单元5201-1…5201-n经由组织单元5202统一管理和调配,组织单元5202可以获知各个存储单元中存储的数据信息并且为服务器510的待存储的图数据的映射数据分配相应的存储单元。
根据本公开的另一方面,还提供一种计算机设备,包括数据库、处理器及存储在数据库上的计算机程序,处理器被配置为执行该计算机程序以实现上述图数据的存储方法的步骤。
根据本公开的又一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述图数据的存储方法的步骤。
根据本公开的又一方面,还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述图数据的存储方法的步骤。
图6是示出能够用于实现本公开的实施例的示例性计算机系统的结构框图。下面结合图6,描述适于用来实现本公开的实施例的计算机系统600。应该明白的是,图6示出的计算机系统600仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统6000可以包括处理装置(例如,中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有计算机系统6000操作所需的各种程序和数据。处理装置601、ROM 602、以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、摄像头、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD,Liquid Crystal Display)、扬声器、振动器等的输出装置607;包括例如闪存(Flash Card)等的存储装置608;以及通信装置609。通信装置609可以允许计算机系统6000与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的计算机系统6000,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图6中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例提供一种计算机可读存储介质,其存储计算机程序,该计算机程序包含用于执行图2所示的方法2000的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,实现本公开的实施例的装置中限定的上述功能。
需要说明的是,本公开的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(Radio Frequency,射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述计算机系统6000中所包含的;也可以是单独存在,而未装配入该计算机系统6000中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该计算设备执行时,使得该计算机系统:获取待存储的图数据;针对所述多个节点中的每个节点,分配相应的节点内部ID;基于所分配的节点内部ID,为所述图数据生成映射数据;存储所生成的映射数据。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能、和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开的实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器,包括获取模块、内部ID分配模块、生成模块以及存储模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种图数据的存储方法,包括:
获取待存储的图数据,所述图数据包括多个节点中的每个节点的节点数据以及至少一个边中的每个边的边数据,其中,每个节点的节点数据包括该节点的节点ID,并且每个边的边数据包括该边的边ID和边属性数据;
针对所述多个节点中的每个节点,分配相应的节点内部ID,其中,所述每个节点的节点内部ID对应于该节点的节点ID;
针对所述至少一个边中的每个边,分配相应的边内部ID,所述每个边的边内部ID对应于该边的边ID;
基于所分配的节点内部ID和边内部ID,为所述图数据生成映射数据,其中,所述映射数据包括所述每个节点的节点内部ID与相应的节点数据之间的第一映射关系、所述每个节点的节点内部ID与相应的边数据之间的第二映射关系以及所述每个边的边内部ID与相应的边数据之间的第三映射关系;以及
存储所生成的映射数据。
2.根据权利要求1所述的存储方法,其中,所述第三映射关系包括:该边的边内部ID与相应的边ID之间的映射关系以及该边的边内部ID与相应的边属性数据之间的映射关系。
3.根据权利要求1所述的存储方法,其中,所述第二映射关系包括该节点的节点内部ID与以下各项中的至少一项之间的映射关系:与该节点相关的至少一个边的边内部ID;与该节点相关的至少一个边中除该节点外的其他节点的节点内部ID。
4.根据权利要求1所述的存储方法,其中,所述边属性数据还包括边类型以及边类型ID。
5.根据权利要求4所述的存储方法,其中,所述方法还包括为每个边类型分配边类型内部ID,所述边类型内部ID对应于相应的边类型ID,并且基于所分配的节点内部ID和边类型内部ID,为所述图数据生成映射数据。
6.根据权利要求5所述的存储方法,其中,所述第二映射关系包括:该节点的节点内部ID和相应的边类型内部ID的组合和与该节点相关的具有相应的边类型的至少一个边的边数据之间的映射关系。
7.根据权利要求1所述的存储方法,其中,所述边属性数据还包括方向标识,并且所述第二映射关系包括:该节点的节点内部ID和相应的方向标识的组合和与该节点相关的具有相应的方向标识的至少一个边的边数据之间的映射关系。
8.根据权利要求1所述的存储方法,其中,每个节点的节点数据还包括节点属性数据,所述第一映射关系包括:该节点的节点内部ID与相应的节点ID之间的映射关系以及该节点的节点内部ID与相应的节点属性数据之间的映射关系。
9.根据权利要求1至8中任一项所述的存储方法,其中,所分配的内部ID包括固定长度的整型数据和字符串中的至少一项。
10.根据权利要求1至8中任一项所述的存储方法,其中,将所述映射数据以键值对的方式存储于分布式键值数据库中。
11.根据权利要求10所述的存储方法,其中,所述分布式键值数据库为支持事务的分布式键值数据库,并且将所述每个节点的第一映射关系和第二映射关系作为一个事务进行存储。
12.一种图数据的存储装置,包括:
获取模块,所述获取模块被配置为获取待存储的图数据,所述图数据包括多个节点中的每个节点的节点数据以及至少一个边中的每个边的边数据,其中,每个节点的节点数据包括该节点的节点ID,并且每个边的边数据包括该边的边ID和边属性数据;
内部ID分配模块,所述内部ID分配模块被配置为:
针对所述多个节点中的每个节点,分配相应的节点内部ID,其中,所述每个节点的节点内部ID对应于该节点的节点ID;以及
针对所述至少一个边中的每个边,分配相应的边内部ID,所述每个边的边内部ID对应于该边的边ID;
生成模块,所述生成模块被配置为基于所分配的节点内部ID和边内部ID,为所述图数据生成映射数据,其中,所述映射数据包括所述每个节点的节点内部ID与相应的节点数据之间的第一映射关系、所述每个节点的节点内部ID与相应的边数据之间的第二映射关系以及所述每个边的边内部ID与相应的边数据之间的第三映射关系;以及
存储模块,所述存储模块被配置为存储所生成的映射数据。
13.一种计算机设备,包括:
数据库、处理器以及存储在所述数据库上的计算机程序,
其中,所述处理器被配置为执行所述计算机程序以实现权利要求1-11中任一项所述的方法的步骤。
14.一种非暂态计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1-11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011459723.XA CN112528090B (zh) | 2020-12-11 | 2020-12-11 | 图数据的存储方法和存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011459723.XA CN112528090B (zh) | 2020-12-11 | 2020-12-11 | 图数据的存储方法和存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112528090A CN112528090A (zh) | 2021-03-19 |
CN112528090B true CN112528090B (zh) | 2023-08-04 |
Family
ID=74999151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011459723.XA Active CN112528090B (zh) | 2020-12-11 | 2020-12-11 | 图数据的存储方法和存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112528090B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468275A (zh) * | 2021-07-28 | 2021-10-01 | 浙江大华技术股份有限公司 | 图数据库的数据导入方法和装置、存储介质及电子设备 |
CN113609318B (zh) * | 2021-10-09 | 2022-03-22 | 北京海致星图科技有限公司 | 一种图数据处理方法、装置、电子设备以及存储介质 |
CN114189518A (zh) * | 2021-10-11 | 2022-03-15 | 支付宝(杭州)信息技术有限公司 | 应用于计算机集群的通信方法及通信装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108600321A (zh) * | 2018-03-26 | 2018-09-28 | 中国科学院计算技术研究所 | 一种基于分布式内存云的图数据存储方法和系统 |
CN110609924A (zh) * | 2019-08-15 | 2019-12-24 | 深圳壹账通智能科技有限公司 | 基于图数据的全量关系计算方法、装置、设备及存储介质 |
CN111090760A (zh) * | 2019-11-25 | 2020-05-01 | 贝壳技术有限公司 | 数据存储方法和装置、计算机可读存储介质、电子设备 |
CN111274455A (zh) * | 2020-01-15 | 2020-06-12 | 北京燧昀科技有限公司 | 图数据处理方法、装置、电子设备及计算机可读介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8676857B1 (en) * | 2012-08-23 | 2014-03-18 | International Business Machines Corporation | Context-based search for a data store related to a graph node |
US9323864B2 (en) * | 2013-08-14 | 2016-04-26 | International Business Machines Corporation | Method and apparatus for identifying the optimal schema to store graph data in a relational store |
US10719557B2 (en) * | 2018-01-16 | 2020-07-21 | Palantir Technologies Inc. | Concurrent automatic adaptive storage of datasets in graph databases |
-
2020
- 2020-12-11 CN CN202011459723.XA patent/CN112528090B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108600321A (zh) * | 2018-03-26 | 2018-09-28 | 中国科学院计算技术研究所 | 一种基于分布式内存云的图数据存储方法和系统 |
CN110609924A (zh) * | 2019-08-15 | 2019-12-24 | 深圳壹账通智能科技有限公司 | 基于图数据的全量关系计算方法、装置、设备及存储介质 |
CN111090760A (zh) * | 2019-11-25 | 2020-05-01 | 贝壳技术有限公司 | 数据存储方法和装置、计算机可读存储介质、电子设备 |
CN111274455A (zh) * | 2020-01-15 | 2020-06-12 | 北京燧昀科技有限公司 | 图数据处理方法、装置、电子设备及计算机可读介质 |
Non-Patent Citations (1)
Title |
---|
"面向局域检索的时变图数据存储与查询模型";赵萍等;《计算机科学》;第46卷(第10期);第186-194页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112528090A (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112528090B (zh) | 图数据的存储方法和存储装置 | |
US11093216B2 (en) | Automatic discovery of microservices from monolithic applications | |
CN109559234B (zh) | 一种区块链状态数据的存储方法、设备和存储介质 | |
US9553771B1 (en) | Bloom filter index for device discovery | |
US10915532B2 (en) | Supporting a join operation against multiple NoSQL databases | |
US11281721B2 (en) | Augmenting relational database engines with graph query capability | |
US11030402B2 (en) | Dictionary expansion using neural language models | |
US10216802B2 (en) | Presenting answers from concept-based representation of a topic oriented pipeline | |
US20150193531A1 (en) | Modeling and visualizing level-based hierarchies | |
CN110569218B (zh) | 一种ext文件系统离线修改方法、装置及存储介质 | |
US10380257B2 (en) | Generating answers from concept-based representation of a topic oriented pipeline | |
US10007879B2 (en) | Authoring system for assembling clinical knowledge | |
US11734241B2 (en) | Efficient spatial indexing | |
CN113918659A (zh) | 数据操作方法、装置、存储介质及电子设备 | |
CN113344074A (zh) | 模型训练方法、装置、设备及存储介质 | |
CN111046085B (zh) | 数据的溯源处理方法及装置、介质和设备 | |
CN109840072B (zh) | 信息处理方法和装置 | |
US20230153300A1 (en) | Building cross table index in relational database | |
CN111552715B (zh) | 用户查询方法和装置 | |
US10884646B2 (en) | Data management system for storage tiers | |
CN113626650A (zh) | 业务处理方法、装置和电子设备 | |
CN116210210A (zh) | 使用机器学习的左移位拓扑构建和信息增强 | |
CN111782834A (zh) | 图像检索的方法、装置、设备及计算机可读存储介质 | |
CN112988778A (zh) | 一种处理数据库查询脚本的方法和装置 | |
CN116820354B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |