2014-04-11 93 views
1

我從Neo4J開始試圖將我當前的系統從關係數據庫遷移到Neo4j 並且有一個特殊的問題需要克服。Neo4j是否支持視圖的概念

我有一張名爲Orders的表格,並且有2個特別的列正在痛苦中。 ShipBy是(火車/空運/卡車)的價值 承運人是承運訂單的公司的編號,但是如果它由Air運輸,它有變化,它有UPS/ALASKA/CONTINENTAL之類的東西;如果它通過火車運輸,它有像BNSF/KANSASCITYRAIL/ETC ...

這些值來自不同的目錄表,所以這在我的系統中解決了這樣的事情 Select Orders.Number,Carrier.Name來自訂單,(選擇'T'類型,Id,來自卡車司機工會的名稱全部選擇'R'類型,Id,來自RailCompanies聯盟的全部名稱從AirLines中選擇'A'類型,Id,名稱)運營商 其中Orders.ShipBy =運營商.Type和Orders.CarrierId = Carrier.Id

我很感激任何指針。

回答

2

Neo4J在關係數據庫中沒有視圖。有幾件事情你可以做的交替:

  1. 不斷重新發出一個計算的「查看」您需要的查詢,需要
  2. 創建一個特殊的「視圖節點」,然後通過鏈接節點與所有其他節點之間的關係自然會出現在您的「視圖」中。查詢你的視圖變得很簡單,只需拉起一個「視圖節點」並遍歷視圖結果即可。

選項1是最容易的,選項#2可能是速度較快,但與它來維護負擔,由於在DB改變你的基本節點,你需要保持你的觀點,並確保它指向正確的地方。

2

正如我們所能讀到的here「在數據庫理論中,視圖是對數據存儲查詢的結果集,數據庫用戶可以像查詢持久數據庫集合對象那樣查詢結果集。」

Neo4j的不託管存儲查詢,但你能想到延伸這裏發表斯特凡Neo4j的服務器:https://stackoverflow.com/a/21780942/3442366

物化視圖的過程中不同的...

依靠關係的力量Neo4j提供的管理;-)

乾杯, Lorenzo