postgresql apache时代的顶点和边?

gkn4icbw  于 2023-04-11  发布在  PostgreSQL
关注(0)|答案(6)|浏览(163)

我一直在Apache Age上工作,有一个问题在我的脑海中。Apache Age中的顶点和边是如何存储的,即Age使用什么样的数据结构来存储顶点和边,以及如何实际上分别检索所有的顶点和边?

ivqmmu1c

ivqmmu1c1#

AGE使用两种类型的表来存储图形数据,即顶点表和边表。顶点表包含每个顶点的属性,而边表包含每个边的属性。而下划线的架构使用PostgreSQL的关系数据库管理系统来存储和管理图形数据。PostgreSQL使用B树(和一些其他)索引来快速从表中检索数据,这使得查询大型图相对快速和高效。

ia2d9nvy

ia2d9nvy2#

Apache AGE基本上以表的形式存储顶点和边,其中每个顶点由表中的一行表示,并且行中的每列表示顶点的属性。类似地,每个边由单独表中的一行表示,并且行中的每列表示边的属性。
您可以使用以下命令简单地检索所有顶点:

SELECT * FROM cypher('graph_name', $$
MATCH (v)
RETURN v
$$) as (v agtype);

对于边,您可以使用relationships()命令来获取边及其关系。例如:

SELECT * FROM cypher('graph', $$
MATCH p = (v)-[*]->(b)
RETURN relationships(p)
$$) as (v agtype);
fjaof16o

fjaof16o3#

除了han和Aditya的答案之外,还可以使用以下SQL查询检索AGE存储为PostgreSQL表的顶点和边

SELECT * FROM "<graph_name>"._ag_label_vertex;

SELECT * FROM "<graph_name>"._ag_label_edges;
rslzwgfq

rslzwgfq4#

首先要存储所有的顶点和边,你有以下方法,你可以尝试其中任何一种:

  1. Vertx检查床
    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;
    如果有任何疑问请随时联系我们。
mfpqipee

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中运行。

ergxz8rk

ergxz8rk6#

在Apache Age中,顶点和边使用称为属性图模型的数据结构存储在图数据库中。
在这个模型中,顶点被表示为节点,边被表示为节点之间的关系。每个节点和关系都可以具有存储为键值对的属性。
ApacheAge提供了一种名为Cypher的查询语言,可用于从图数据库中检索顶点和边。
要检索所有顶点,可以使用以下Cypher查询:

MATCH (n)
RETURN n

同样,对于所有边,您可以使用以下Cypher查询:

MATCH ()-[r]-()
RETURN r

相关问题