圖資料庫|Nebula Graph v3.1.0 效能報告

語言: CN / TW / HK

本文首發於 Nebula Graph Community 公眾號

Nebula Graph v3.1.0 效能報告

本文系 Nebula Graph 發行版 v3.1.0 的效能測試報告。

本文目錄

  • 測試環境
  • 測試資料
    • 關於 LDBC-SNB
  • 測試說明
  • 測試用例和結果
    • MatchTest1
    • MatchTest2
    • MatchTest3
    • MatchTest4
    • MatchTest5
  • 3.1.0 vs 3.0.0(Baseline)
    • MatchTest1
    • MatchTest2
    • MatchTest3
    • MatchTest4
    • MatchTest5

測試結論

在 v3.1.0 版本中,查詢和資料匯入效能基本上和 v3.0.0 持平(參考:v3.0.0 效能報告🔗 )。MATCH 語句針對屬性讀取做了優化,本次測試新增了相應的用例,效能對比 v3.0.0 有大幅提升。

測試環境

伺服器和壓測機皆為物理機

Nebula Graph v3.1.0 效能測試報告

  • 注意:伺服器設定 CPU 為 Performance 模式。

測試資料

測試資料採用 LDBC-SNB SF100 資料集,SF100 資料集大小為 100G,共有 282,386,021 個點以及 1,775,513,185 條邊。測試用的圖空間分割槽數為 24,副本數為 3。

關於 LDBC-SNB

關聯資料基準委員會(LDBC,Linked Data Benchmark Council),是圖(Graph)和 RDF 資料管理的基準指南制定者。社交網路基準(SNB,Social Network Benchmark)是關聯資料基準委員會(LDBC)開發的軟體基準(Benchmark)之一。關於 LDBC-SNB 資料集,具體請參考以下文件:

測試說明

  1. 壓測工具使用基於 Go 語言的 k6,具體請參閱 k6 官方網站;客戶端使用的是 nebula-go
  2. 圖表中橫座標軸的 “50_vu”、“100_vu” 等中的 “vu” 表示的是 k6 使用的概念 “virtual user”,即效能測試中的併發數;50_vu 表示 50 個併發使用者,100_vu 表示 100 個併發使用者,以此類推…
  3. 效能基線使用正式釋出的 3.0.0 版本
  4. ResponseTime = Latency(服務端處理時長)+網路回傳結果時長+客戶端反序列化結果時長
  5. 引數說明
    • QPS 即吞吐率
    • Latency 即服務端耗時
    • ResponseTime 即客戶端耗時

測試用例和結果

僅包括本次新增的 match 測試用例

  • QPS 即吞吐率
  • Latency 即服務端耗時
  • ResponseTime 即客戶端耗時

MatchTest1

match (v:Person) where id(v) == {} return count(v.Person.firstName)

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

MatchTest2

match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' return length(v.Person.browserUsed) + length(v2.Person.gender)

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

MatchTest3

match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' with v, v2 as v3 return length(v.Person.browserUsed) + (v3.Person.gender)

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

MatchTest4

MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} OPTIONAL MATCH (n)<-[:KNOWS]-(l) RETURN length(m.Person.lastName) AS n1, length(n.Person.lastName) AS n2, l.Person.creationDate AS n3 ORDER BY n1, n2, n3 LIMIT 10

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

MatchTest5

MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} MATCH (n)-[:KNOWS]-(l) WITH m AS x, n AS y, l RETURN x.Person.firstName AS n1, y.Person.firstName AS n2, CASE WHEN l.Person.firstName is not null THEN l.Person.firstName WHEN l.Person.gender is not null THEN l.Person.birthday ELSE 'null' END AS n3 ORDER BY n1, n2, n3 LIMIT 10

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

v3.1.0 vs v3.0.0(Baseline)

以下資料選取 P99 值。

MatchTest1

match (v:Person) where id(v) == {} return count(v.Person.firstName)

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

MatchTest2

match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' return length(v.Person.browserUsed) + length(v2.Person.gender)

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

MatchTest3

match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' with v, v2 as v3 return length(v.Person.browserUsed) + (v3.Person.gender)

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

MatchTest4

MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} OPTIONAL MATCH (n)<-[:KNOWS]-(l) RETURN length(m.Person.lastName) AS n1, length(n.Person.lastName) AS n2, l.Person.creationDate AS n3 ORDER BY n1, n2, n3 LIMIT 10

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

MatchTest5

MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} MATCH (n)-[:KNOWS]-(l) WITH m AS x, n AS y, l RETURN x.Person.firstName AS n1, y.Person.firstName AS n2, CASE WHEN l.Person.firstName is not null THEN l.Person.firstName WHEN l.Person.gender is not null THEN l.Person.birthday ELSE 'null' END AS n3 ORDER BY n1, n2, n3 LIMIT 10

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

Nebula Graph v3.1.0 效能測試報告

以上,歡迎你前往 GitHub 體驗 v3.1.0 版本,GitHub 地址:https://github.com/vesoft-inc/nebula/releases/tag/v3.1.0

交流圖資料庫技術?加入 Nebula 交流群請先填寫下你的 Nebula 名片,Nebula 小助手會拉你進群~~