2014-02-14 25 views
6

我想知道是否存在與存儲過程相當的Neo4j? 當我研究這個,我碰到events,但我發現他們更像觸發器,而不是存儲過程。Neo4j中的存儲過程

回答

3

存儲過程可作爲自版本能力從Cypher支架語言CALLABLE 3.0

編輯

隨着Neo4J 3.0在4月16日發佈,存儲過程成爲官方的,Apache 2.0許可的存儲庫。

http://neo4j-contrib.github.io/neo4j-apoc-procedures/

可用程序的範圍從數據操作/導入到空間和複雜的圖形算法(ES。網頁排名,迪傑斯特拉,社區檢測,中介中心,接近中心等)

4

基本上有兩種技術來擴展的Neo4j服務器:

  1. Server plugins豐富現有REST端點和
  2. unmanaged extensions允許你創建新的REST端點

兩種技術都需要寫使用JVM(或其他JVM語言)編寫代碼,打包jar文件並將其部署到Neo4j服務器。

+1

但非託管擴展是更多功能和更易於使用(恕我直言)。 –

+1

服務器插件和非託管擴展都不提供Jack正在查找的存儲過程功能。 – bjlevine

+2

我不同意,存儲過程基本上是服務器上運行的一段代碼 - 這正是未受管理的擴展或服務器插件所做的事情。 –

1

我的答案在這裏並沒有直接回答這個問題(Stefan的答案對此沒有問題)。這就是說,如果你們中的任何一個人在你的項目實際上在生產中使用之前(在編寫本文的時候是絕大多數的Neo4j用戶羣)之前,你正在考慮編寫服務器插件(以獲得Stored Proc行爲),我強烈建議不是這樣做。

服務器插件爲您的項目添加架構複雜性。您將需要JVM開發人員來維護它們。部署或更新它們可能會很棘手,並且相關的源代碼管理方法不直觀。 Neo4j不需要模式遷移,這使得您作爲開發人員的工作更加輕鬆。添加服務器插件將不再給您帶來好處,因爲它不是Neo4j的主流使用案例,您將從開發人員社區獲得很少的幫助,並且與該功能相關的改進和錯誤修復將從Neo4j團隊。

而所有這些都可能會略微提升性能,或者根本沒有。

「存儲過程」(或使用服務器插件等)是性能調優環境中的一個重要功能,但如果您的團隊仍然是車庫中的兩個人,那麼請不要考慮關閉此功能路徑。