【问题标题】:Difference between Graph Triples and EAV图三元组和 EAV 之间的区别
【发布时间】:2014-12-24 02:39:27
【问题描述】:

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

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

在这个presentation 中,出现了以下引用:

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

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

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

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】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-18
      • 2016-05-15
      • 2015-07-16
      • 2015-09-07
      • 2010-11-01
      • 2019-01-23
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多