使用 EmbeddedGraphDatabase 在服务器模式下访问 Neo4j?

发布于 2024-11-05 19:25:31 字数 184 浏览 1 评论 0原文

如果我在服务器模式下运行 neo4j,以便可以使用 REST API 访问它,我可以使用 EmbeddedGraphDatabase 类访问相同的 neo4j 实例吗?

我正在考虑一种生产设置,其中使用 EmbeddedGraphDatabase 的 Java 应用程序正在驱动逻辑,但其他客户端可能会使用 REST 以只读模式导航数据。

If I run neo4j in server mode so it is accessible using the REST API, can I access the same neo4j instance with EmbeddedGraphDatabase-class?

I am thinking of a production setup where a Java-app using EmbeddedGraphDatabase is driving the logic, but other clients might navigate the data with REST in readonly mode.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

余罪 2024-11-12 19:25:31

您所描述的是服务器插件或扩展。这样,您可以通过 REST API 公开数据库,但同时您可以从自定义插件/扩展代码访问高性能的嵌入式图形数据库。

在您的自定义代码中,您可以获得注入的 GraphDatabaseService 并进行操作。

您可以使用 Neo4j 服务器将自定义扩展部署为 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();
}
}

用于编写 插件扩展

What you are describing is a server plugin or extension. That way you expose your database via the REST API but at the same time you can access the embedded graph db hihgly performant from your custom plugin/extension code.

In your custom code you can get a GraphDatabaseService injected on which you operate.

You deploy your custom extensions as jars with your neo4j-server and have client code operate over a domain oriented restful API with it.

// 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();
}
}

Docs for writing plugins and extensions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文