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';
4

1 回答 1

2

好吧,老实说,无索引邻接 基本上是一个营销流行语。我同意,您的示例既简单又可行,但是使用图形数据库可以让您在 mysql 上执行不太容易处理的查询(而且最重要的是性能非常差)。Fe如果你想知道图中两个顶点之间的最短路径,你不能使用mysql来做到这一点。

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

GRAPH_SHORTEST_PATH("yourGraph", "StartVertex", "EndVertex")

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

于 2014-12-29T10:12:22.267 回答