图三元组和EAV之间的区别

问题描述 投票:0回答:1

最近我开始使用 cayleyArangoDB 来构建他们的图形数据存储。

在阅读和观看有关图数据库的视频时,一个问题突然出现在我的脑海中:是什么让图数据库与普通 SQL 中的典型(且可怕的)EAV 存储如此不同(且“很棒”)?

在此演示文稿中,出现以下引文:

图形数据库是任何提供无索引邻接的存储系统

但是无索引邻接到底是什么意思呢?这对性能或设计有何影响?

使用以下架构,幻灯片中列出的所有查询都是可能的并且超级简单:

CREATE TABLE "graph" (
    "subject" TEXT NOT NULL,
    "predicate" TEXT NOT NULL,
    "object" TEXT NOT NULL
);

-- Give me all the vertex that go from "A":
SELECT "object" FROM "graph" WHERE "subject" = 'A';

-- Give me all the pairs connected by "C":
SELECT "subject", "object" FROM "graph" WHERE "predicate" = 'C';

-- Give me all the vertex that go to "B":
SELECT "subject" FROM "graph" WHERE "object" = 'B';

-- Give me all the vertex that go to "B" through "C":
SELECT "subject" FROM "graph" WHERE "object" = 'B' AND "predicate" = 'C';
graph-databases entity-attribute-value arangodb cayley
1个回答
2
投票

无索引邻接是一个营销流行语。

我同意你的例子既简单又可行,但是使用图形数据库可以让你执行 MySQL 无法很好处理的查询。例如,如果您想知道图中两个顶点之间的最短路径,则无法使用 MySQL 来实现。

在 ArangoDB 中,这是一个简单的调用:

GRAPH_SHORTEST_PATH(“yourGraph”,“StartVertex”,“EndVertex”)

如果您对ArangoDB的图形模块提供的各种功能感兴趣,我推荐图形手册和示例。我很确定您会发现很多用例,您很难在 MySQL 中实现相同的目标。

© www.soinside.com 2019 - 2024. All rights reserved.