7
如果我在服務器模式下運行neo4j,以便使用REST API進行訪問,我可以使用EmbeddedGraphDatabase類訪問相同的neo4j實例嗎?使用EmbeddedGraphDatabase以服務器模式訪問Neo4j?
我在考慮使用EmbeddedGraphDatabase的Java-app驅動邏輯的生產設置,但其他客戶端可能會在只讀模式下使用REST導航數據。
如果我在服務器模式下運行neo4j,以便使用REST API進行訪問,我可以使用EmbeddedGraphDatabase類訪問相同的neo4j實例嗎?使用EmbeddedGraphDatabase以服務器模式訪問Neo4j?
我在考慮使用EmbeddedGraphDatabase的Java-app驅動邏輯的生產設置,但其他客戶端可能會在只讀模式下使用REST導航數據。
你所描述的是一個服務器插件或擴展。通過這種方式,您可以通過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();
}
}
文檔編寫plugins和extensions。
感謝您的回答,通過查看所提供的鏈接,我明白了您的觀點。但@ Context-annotation來自哪裏?回到我的問題,您無法使用EmbeddedGraphDatabase打開正在運行的REST服務器? – Daniel 2011-05-09 09:09:21
Daniel:您可能還想看看neo4j HA的實現 - 使用它,您可以運行數據庫集羣,其中一個集羣機器是neo4j服務器實例,另一個是應用程序中的「內部」數據庫。 – jakewins 2011-05-09 09:13:30
呵呵,爲了您的評論,其餘服務器上的java客戶端實現與EmbeddedGraphDatabase幾乎相同的API(由Michael Hunger編寫,事實上:)):https://github.com/ jexp/neo4j-java-rest-binding – jakewins 2011-05-09 09:15:31