2011-05-07 38 views
7

如果我在服務器模式下運行neo4j,以便使用REST API進行訪問,我可以使用EmbeddedGraphDatabase類訪問相同的neo4j實例嗎?使用EmbeddedGraphDatabase以服務器模式訪問Neo4j?

我在考慮使用EmbeddedGraphDatabase的Java-app驅動邏輯的生產設置,但其他客戶端可能會在只讀模式下使用REST導航數據。

回答

7

你所描述的是一個服務器插件或擴展。通過這種方式,您可以通過REST API公開您的數據庫,但同時您可以通過自定義插件/擴展代碼訪問嵌入式圖形數據庫的高度表現性。

在您的自定義代碼中,您可以獲得一個您操作的GraphDatabaseService注入。

您將自定義擴展部署爲您的neo4j-server的jar包,並讓客戶端代碼通過面向領域的restful API進行操作。

// extension sample 
@Path("/helloworld") 
public class HelloWorldResource { 

private final GraphDatabaseService database; 

public HelloWorldResource(@Context GraphDatabaseService database) { 
    this.database = database; 
} 

@GET 
@Produces(MediaType.TEXT_PLAIN) 
@Path("/{nodeId}") 
public Response hello(@PathParam("nodeId") long nodeId) { 
    // Do stuff with the database 
    return Response.status(Status.OK).entity(
      ("Hello World, nodeId=" + nodeId).getBytes()).build(); 
} 
} 

文檔編寫pluginsextensions

+0

感謝您的回答,通過查看所提供的鏈接,我明白了您的觀點。但@ Context-annotation來自哪裏?回到我的問題,您無法使用EmbeddedGraphDatabase打開正在運行的REST服務器? – Daniel 2011-05-09 09:09:21

+1

Daniel:您可能還想看看neo4j HA的實現 - 使用它,您可以運行數據庫集羣,其中一個集羣機器是neo4j服務器實例,另一個是應用程序中的「內部」數據庫。 – jakewins 2011-05-09 09:13:30

+1

呵呵,爲了您的評論,其餘服務器上的java客戶端實現與EmbeddedGraphDatabase幾乎相同的API(由Michael Hunger編寫,事實上:)):https://github.com/ jexp/neo4j-java-rest-binding – jakewins 2011-05-09 09:15:31