關於圖數據庫HugeGraph的百萬,千萬,億量級測試


 

1、Hugegraph測試硬件

1.1、本機硬件

本機測試hugeGraph版本:0.10.4

后置存儲數據庫:rocksdb,1TB的普通硬盤

1.2、測試服務器硬件

測試服務器hugegraph版本:0.9.2,服務器分配16G空間,16核

后置存儲數據庫cassandra:3.11.0,存儲空間未限制,普通硬盤

2、基准測試

2.1、數據加載

加載功能:hugegraph自帶的原生的導入工具,其schema定義其數據類型,索引和邊標簽屬性,struct定義邊。

加載大量數據時間和速度:主要是測試百萬,千萬,億級別的加載速度。

2.2、查詢性能

查詢響應時間——針對於多度查詢

查詢響應時間——針對於遍歷所有路徑查詢

查詢響應時間——針對於最短路徑查詢

3、測試報告

3.1、本機和測試flink寫入速度

測試

寫入速度

硬件情況

 

本地流程

前期數據量少大概4000條/分鍾(數據量大概10多萬)后期數據量大的寫入未進行測試。

Intel® Core™ i5-9400 CPU @ 2.90GHz × 6,RocksDB后置數據庫存儲內存1TB

 

 

 

測試flink

前期數據量比較少大概寫入2624條/分鍾(3h38m-571988)

后期數據量多了大概寫入1200/分鍾(3d2h-5292999)

hugeGraph的16G,16核,Cassandra后置數據庫存儲內存未做限制

服務器上的寫入速度小於本地寫入速度原因:

1、服務器硬件

2、網絡不穩定性

3.2、數據快速導入查詢

3.2.1、百萬級別導入

3.2.2、百萬級別數據查詢

點:150萬

邊:75萬+新增邊1萬

查詢最多五度,點定義有六個屬性值,邊只有一個屬性值(id)

 

耗時

查詢

g.V()

g.E()

g.V().out()

g.V().outE()g.V().inE()

g.V().drop()g.E().drop()

第一次耗時

0.656S

0.315S

報錯

報錯

報錯

第一次查詢后均耗時

0.04S

0.04S

報錯

報錯

報錯

原因

g.V()遍歷只顯示250條數據

g.E()遍歷只顯示250條數據

錯誤的請求,已超過最大數值

遍歷的最大值不能超過80萬

刪除的最大值不能超過1萬

遍歷所有點的g.V().out()報錯:請求錯誤

遍歷所有點的出邊g.V().outE()g.V().inE()報錯:最大值不能超過80W

刪除所有點的數據g.V().drop()g.E().drop()報錯:最大值不能超過1W

3.2.2.1、多度查詢

 

 

時間

多度

一度

二度

三度

四度

五度

查詢單個點

查詢耗時

0.04S

0.03S

0.03S

0.03S

由於數據問題,此次查詢數據結果和四度一樣,時間沒有參考意義

0.03S——g.V().hasLabel("person").has("id","id值")

 

3.2.2.2、路徑遍歷

路徑分為兩種:有環路徑和無環路徑。

有環路徑是指路徑中至少有一個對象出現的次數大於等於兩次。

無環路徑是指路徑中所有的對象只出現一次。

查詢未過濾環路的路徑遍歷:

 

 

時間

遍歷路徑

一層

二層

三層

四層

查詢耗時

均耗時:0.075S

第一次:0.274S

后均耗時:0.08S

均耗時:0.1S

第一次:0.875S

后均耗時:0.085S

查詢已過濾環路的路徑遍歷:

 

 

時間

遍歷路徑

一層

二層

三層

四層

五層

查詢耗時

第一次:2.729S

后均耗時:0.450S

 

第一次:1.983S

后均耗時:0.300S

 

第一次:5.849S

后均耗時:5.210S

 

第一次:6.881S

后均耗時:6.75S

Error!

Failed to do request

沒有存在五層的數據,導致查詢報錯

 

3.2.2.3、最短路徑查詢

g.V("src_v_id")

 .repeat(both().simplePath()).until(hasId("target_v_id")

 .and().loops().is(lte(4))).hasId("target_v_id")

 .path().limit(10)

src_v_id:起點頂點ID

target_v_id:終點頂點ID

lte(4):深度小於4

limit(10) :顯示10條數據

如果不限制數據量:將10改為-1

 

 

時間

最短路徑

深度小於2

深度小於3

深度小於4

深度小於5

查詢耗時

第一次:0.894S

后均耗時:0.055S

均耗時:0.055S

第一次:0.347S

后均耗時:0.050S

第一次:0.241S

后均耗時:0.060S

 

3.2.3、千萬級別導入

點:1500W  耗時:2H

邊:750萬  耗時:1H38M

3.2.4、千萬級別數據查詢

 

 

耗時

查詢

g.V()

g.E()

g.V().out()

g.V().outE()g.V().inE()

g.V().drop()g.E().drop()

第一次耗時

1.212S

0.449S

報錯

報錯

報錯

第一次查詢后均耗時

0.05S

0.234S

報錯

報錯

報錯

原因

g.V()遍歷只顯示250條數據

g.E()遍歷只顯示250條數據

錯誤的請求,已超過最大數值

遍歷的最大值不能超過80萬

刪除的最大值不能超過1萬

 

3.2.4.1、多度查詢

 

 

時間

多度

一度

二度

三度

四度

五度

查詢單個點

第一次查詢耗時

1.065S

2.218S

1.149S

1.222S

1.453S

開始查詢耗時:0.232S

多次查詢后均耗時:0.035S——g.V().hasLabel("person").has("id","161f2f39beb3bdc6f2d0747a15fcefd5")

 

第一次查詢后多次查詢均耗時

 

 

0.04S

 

 

0.04S

 

 

0.03S

 

 

0.03S

 

 

 0.03S

 

3.2.4.2、路徑遍歷

 

 

時間

遍歷路徑

一層

二層

三層

四層

查詢耗時

第一次:0.958S

后均耗時:0.08S

 

第一次:0.639S

后均耗時:0.08S

 

存在環路的三層和四層路徑遍歷,存在對象大於等於2的情況,而且數據邊的不完整性,查詢的時間不具有參考性。

 

查詢已過濾環路的路徑遍歷:

 

 

時間

遍歷路徑

一層

二層

三層

四層

五層

查詢耗時

第一次:0.742S

后均耗時:0.075S

 

第一次:1.284S

后均耗時:0.096S

 

第一次:6.483S

后均耗時:5.111S

 

第一次:7.574S

后均耗時:6.876S

Error!

Failed to do request

沒有存在五層的數據,導致查詢報錯

 

3.2.4.3、最短路徑查詢

 

 

時間

最短路徑

深度小於2

深度小於3

深度小於4

深度小於5

查詢耗時

第一次:2.728S

后均耗時:0.055S

均耗時:0.082S

耗時:0.31S

耗時:0.264S

 

3.2.5、億級別數據導入

點:1.05億  耗時:13H35M34S

邊:5268萬  耗時:12H36M

3.2.6、億級別數據查詢

 

耗時

查詢

g.V()

g.E()

g.V().out()

g.V().outE()g.V().inE()

g.V().drop()g.E().drop()

第一次耗時

1.841S

1.835S

報錯

報錯

報錯

第一次查詢后均耗時

0.212S

0.250S

報錯

報錯

報錯

原因

g.V()遍歷只顯示250條數據

g.E()遍歷只顯示250條數據

錯誤的請求,已超過最大數值

遍歷的最大值不能超過80萬

刪除的最大值不能超過1萬

頁面上限制顯示250條數據:limit(251) 

3.2.6.1、多度查詢

 

 

時間

多度

一度

二度

三度

四度

五度

查詢單個點

第一次查詢耗時

7.352S

3.958S

3.149S

3.12S

1.453S

開始查詢耗時:0.136S

多次查詢后均耗時:0.030S——g.V().hasLabel("person").has("id","161f2f39beb3bdc6f2d0747a15fcefd5")

 

第一次查詢后多次查詢均耗時

 

 

0.254S

 

 

0.057S

 

 

0.04S

 

 

0.045S

 

 

 0.03S

3.2.6.2、路徑遍歷

路徑分為兩種:有環路徑和無環路徑。

有環路徑是指路徑中至少有一個對象出現的次數大於等於兩次。

無環路徑是指路徑中所有的對象只出現一次。

查詢未過濾環路的路徑遍歷:

 

 

時間

遍歷路徑

一層

二層

三層

四層

查詢耗時(id:d9530e5495fbf25d7aae082e8a65c722)

 

 

查詢耗時:0.759S

 

 

查詢耗時:2.77S

 

環路的三層和四層路徑遍歷,存在對象大於等於2的情況,而且數據邊的不完整性,查詢的時間不具有參考性。

查詢耗時(id:161f2f39beb3bdc6f2d0747a15fcefd5)

 

 

查詢耗時:2.28S

 

 

 

查詢耗時:1.358S

 

 

查詢已過濾環路的路徑遍歷:

 

 

時間

遍歷路徑

一層

二層

三層

四層

五層

查詢耗時(id:d9530e5495fbf25d7aae082e8a65c722)

第一次:1.213S

后均耗時:0.095S

 

第一次:2.659S

后均耗時:0.116S

 

第一次:29.457S

后均耗時:14.990S

 

第一次:12.604S

后均耗時:9.01S

 

第一次:1.421S

后均耗時:0.122S

 

查詢耗時(id:161f2f39beb3bdc6f2d0747a15fcefd5)

第一次:2.024S

后均耗時:0.080S

 

第一次:1.777S

后均耗時:0.096S

 

第一次:10.318S

后均耗時:5.199S

 

第一次:8.816S

后均耗時:6.615S

 

Error!

Failed to do request

沒有存在五層的數據,導致查詢報錯

 

3.2.6.3、最短路徑查詢

 

 

時間

最短路徑

深度小於2

深度小於3

深度小於4

查詢耗時

報錯:Error!

Failed to do request

 

由於深度小於2的報錯,深度3測跑也報錯,深度小於4的未進行操作。

 

4、測試總結:

①:當點的數據達到億級別的時候,最短路徑查詢出現Error!Failed to do request,不知道是由於什么原因導致該查詢出現錯誤,需到issue上查找是否有針對於該錯誤的具體的原因。

②:后端存儲數據庫cassandra是分布部署到三台服務器上,對於單服務器部署cassandra的查詢未進行測試。

 

該文檔僅代表測試情況,具體數據僅具供參考

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM