我的目標是爲道路網絡編寫最短路徑算法。圖形數據庫對於最短路徑算法更好嗎?
目前我的架構是這樣的:我將所有的數據存儲在啓用PostGIS的PostgreSQL數據庫中。我做了一個SELECT * FROM ways
,它在一個具有100,000條邊的表格(方式)上花費不到3秒鐘,然後我將(Java,Ruby或基於任何東西的)最短路徑算法應用到已駐留在內存中的圖上。在具有100,000條邊的圖表上,第二個操作可能需要約1.5秒。
所以,它需要:
- 2-3秒鐘,從數據庫中的所有的方式加載到內存中,並創建一個圖(節點被存儲在一個表的方式(邊緣));
- 1-1.5秒來計算已經在內存中的圖形上的最短路徑。
這是非常相似,pgRouting呢(據我所知它採用C升壓存儲在內存中的圖),除了pgRouting大約需要2秒的總計算對同一數據集的最短路徑(是的,它速度很快,但它對我來說是一個黑匣子,所以我需要我自己的)。
但最近我發現有關Graph數據庫和關於Neo4j。在他們的網站上,他們聲稱「仍然能夠以亞秒級的速度在數百萬道路和航點的圖表上進行這些計算,這使得在許多情況下可以放棄使用K/V商店的預計算索引的正常方法,並且能夠將路由放到關鍵路徑上,以適應現場條件並構建高度個性化和動態的空間服務。「
所以問題是:圖形數據庫會加快我的特定問題嗎?
問題具有以下性質:
- 數據庫由一個表(方式)的;
- 對數據庫的唯一查詢是獲取所有進入內存的方法(構建圖);
- 我不需要可擴展性,即圖表可能不會增長。