我一直在Apache Age上工作,有一个问题在我的脑海中。Apache Age中的顶点和边是如何存储的,即Age使用什么样的数据结构来存储顶点和边,以及如何实际上分别检索所有的顶点和边?
ivqmmu1c1#
AGE使用两种类型的表来存储图形数据,即顶点表和边表。顶点表包含每个顶点的属性,而边表包含每个边的属性。而下划线的架构使用PostgreSQL的关系数据库管理系统来存储和管理图形数据。PostgreSQL使用B树(和一些其他)索引来快速从表中检索数据,这使得查询大型图相对快速和高效。
ia2d9nvy2#
Apache AGE基本上以表的形式存储顶点和边,其中每个顶点由表中的一行表示,并且行中的每列表示顶点的属性。类似地,每个边由单独表中的一行表示,并且行中的每列表示边的属性。您可以使用以下命令简单地检索所有顶点:
SELECT * FROM cypher('graph_name', $$ MATCH (v) RETURN v $$) as (v agtype);
对于边,您可以使用relationships()命令来获取边及其关系。例如:
relationships()
SELECT * FROM cypher('graph', $$ MATCH p = (v)-[*]->(b) RETURN relationships(p) $$) as (v agtype);
fjaof16o3#
除了han和Aditya的答案之外,还可以使用以下SQL查询检索AGE存储为PostgreSQL表的顶点和边
SELECT * FROM "<graph_name>"._ag_label_vertex;
和
SELECT * FROM "<graph_name>"._ag_label_edges;
rslzwgfq4#
首先要存储所有的顶点和边,你有以下方法,你可以尝试其中任何一种:
mfpqipee5#
这里有一个非常实用的方法来理解这一点。让我们像这样定义一些顶点和边:
SELECT * FROM cypher('test_graph',$$ CREATE (C_Major: scale { notes: ['C', 'D', 'E', 'F', 'G', 'A', 'B'], tonic: 'C', mode: 'Ionian' }), (G_Major: scale { notes: ['G', 'A', 'B', 'C', 'D', 'E', 'F#'], tonic: 'G', mode: 'Ionian' }), (C_Major)-[modulates: modulation {type: 'phrase'}]->(G_Major) RETURN C_Major, modulates, G_Major $$) as (C_Major agtype, modulates agtype, G_Major agtype);
在定义它们之后,尝试以下命令:
\dt test_graph.*
\d test_graph.scale
\d test_graph.modulation
这些将显示顶点和边在关系数据库中保存的方式和内容。对于检索顶点和边:
\d test_graph._ag_label_vertex
\d test_graph._ag_label_edge
使用\d+修改每个命令也会显示该类型(顶点或边)的子表。这些命令用于在RDB中运行。
\d+
ergxz8rk6#
在Apache Age中,顶点和边使用称为属性图模型的数据结构存储在图数据库中。在这个模型中,顶点被表示为节点,边被表示为节点之间的关系。每个节点和关系都可以具有存储为键值对的属性。ApacheAge提供了一种名为Cypher的查询语言,可用于从图数据库中检索顶点和边。要检索所有顶点,可以使用以下Cypher查询:
MATCH (n) RETURN n
同样,对于所有边,您可以使用以下Cypher查询:
MATCH ()-[r]-() RETURN r
6条答案
按热度按时间ivqmmu1c1#
AGE使用两种类型的表来存储图形数据,即顶点表和边表。顶点表包含每个顶点的属性,而边表包含每个边的属性。而下划线的架构使用PostgreSQL的关系数据库管理系统来存储和管理图形数据。PostgreSQL使用B树(和一些其他)索引来快速从表中检索数据,这使得查询大型图相对快速和高效。
ia2d9nvy2#
Apache AGE基本上以表的形式存储顶点和边,其中每个顶点由表中的一行表示,并且行中的每列表示顶点的属性。类似地,每个边由单独表中的一行表示,并且行中的每列表示边的属性。
您可以使用以下命令简单地检索所有顶点:
对于边,您可以使用
relationships()
命令来获取边及其关系。例如:fjaof16o3#
除了han和Aditya的答案之外,还可以使用以下SQL查询检索AGE存储为PostgreSQL表的顶点和边
和
rslzwgfq4#
首先要存储所有的顶点和边,你有以下方法,你可以尝试其中任何一种:
1.边缘表
1.索引你可以使用任何一个来存储它们。现在,对于所有顶点和边的检索,我们可以使用SQL查询。
检索顶点的查询:
SELECT * FROM vertex_table;
检索边的查询:
SELECT * FROM edge_table;
现在,如果我们有连接ID 1和ID 2的顶点,我们可以检索所有边,如下所示
SELECT * FROM edge_table WHERE source = 1 AND destination = 2;
如果有任何疑问请随时联系我们。
mfpqipee5#
这里有一个非常实用的方法来理解这一点。
让我们像这样定义一些顶点和边:
在定义它们之后,尝试以下命令:
这些将显示顶点和边在关系数据库中保存的方式和内容。
对于检索顶点和边:
使用
\d+
修改每个命令也会显示该类型(顶点或边)的子表。这些命令用于在RDB中运行。ergxz8rk6#
在Apache Age中,顶点和边使用称为属性图模型的数据结构存储在图数据库中。
在这个模型中,顶点被表示为节点,边被表示为节点之间的关系。每个节点和关系都可以具有存储为键值对的属性。
ApacheAge提供了一种名为Cypher的查询语言,可用于从图数据库中检索顶点和边。
要检索所有顶点,可以使用以下Cypher查询:
同样,对于所有边,您可以使用以下Cypher查询: