簡體   English   中英

圖三元組和EAV之間的區別

[英]Difference between Graph Triples and EAV

最近,我開始玩凱萊ArangoDB他們的圖形數據存儲。

在閱讀和觀看有關圖形數據庫的視頻時,我想到了一個問題:是什么使圖形數據庫與普通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';

好吧,說實話,無索引鄰接基本上是一個營銷流行語。 我同意,您的示例很簡單並且可能,但是使用圖形數據庫可以使您執行在mysql上不那么容易處理的查詢(而且大多數情況下執行起來非常糟糕)。 如果您想知道圖中兩個頂點之間的最短路徑,則不能使用mysql來完成。

在ArangoDB中,這是一個簡單的調用:

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

如果您對ArangoDBs圖形模塊提供的各種功能感興趣,我建議您閱讀圖形手冊和示例,我敢肯定,您會發現很多用例,您將很難在mysql中實現相同的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM