【问题标题】:Create/Retrieve/Update/Delete using Java and Rexster使用 Java 和 Rexster 创建/检索/更新/删除
【发布时间】:2015-01-05 04:05:10
【问题描述】:

我想使用 Java 远程管理图形(创建、删除和更新顶点和边)。 我已经实现了所有 DAO 层,使用蓝图和 TitanGraph 对象来访问和操作图形信息。

我认为安装 Rexster 并用远程连接替换 TitanGraph 工厂就足够了。但是安装 Rexster 后,似乎无法创建连接到 Rexster 的 TitanGraph 对象。

在文档中讨论了使用 Rexster 的两个选项:

  • 使用 RexsterClient : 但只能使用 Gremlin,所以它 无法创建/删除/更新信息。 可以创建/删除/更新执行 Groovy 脚本,如 @stephen-mallette 所说。
  • 使用 Rexster HTTP Rest API:有可能,但我需要全部重写 我的 DAO 层。

我的问题是:如何使用 Java 和远程 Rexster 服务器创建/更新/删除顶点/边?哪里有例子?

问候和感谢。

【问题讨论】:

    标签: titan rexster


    【解决方案1】:

    我不确定你的意思是什么:

    使用 RexsterClient :但只能使用 Gremlin,所以无法创建/删除/更新信息。

    RexsterClient 向 Rexster 发出 Gremlin 脚本。虽然我们通常认为 Gremlin 是一种用于查询图的遍历语言,但它也完全能够改变图。以下是完全有效的 Gremlin:

    v = g.addVertex()
    v.setProperty("name","bill")
    

    因此,从这个意义上说,您当然可以发出远程 Gremlin 修改来自 RexsterClient 的图表。但是,在您的情况下,您已经拥有 DAO 代码。为什么不重复使用该代码并将其简单地托管在 Rexster 中?

    1. 将包含 DAO 代码的 jar 复制到 Rexster /ext 目录
    2. 修改 rexster.xml 以包含从您的 jar 导入的包,用于您希望对您可用的类:<imports>com.myco.dao.*</imports>
    3. 启动 Rexster

    此时,当您使用 RexsterClient 时,您应该能够访问您发送的 Gremlin 脚本中的那些 DAO 类。

    【讨论】:

    • 嗨@stephen-mallette 我想在 Rexster 的主机 DAO 中,但我不想在所有 Rexster 服务器中部署并在每个新版本部署后重新启动。关于使用 Gremlin,我不喜欢硬核大 Groovy 脚本设置很多属性的想法。我认为 Blueprints / Rexster 需要一个事务性 API 来远程工作,比如 JDBC。
    • 是的 - 重新启动有点痛苦,尽管您可以通过负载均衡器和滚动重新启动或完全自动替换 Rexster 实例来减轻这种痛苦。如果您在虚拟环境中,这是一个相对简单的解决方法。我不会设想发送“大型 groovy 脚本”。如果您在 DAO 中具有正确的抽象级别,那么脚本不就是:UserDAO.createUser([name:"stephen",favoriteColor:"green"])
    • 最后,没有“远程蓝图 API - 我们尝试了几次,但结果并不好。不确定添加到 Gremlin 服务器有多么容易(Rexster 的替换)在 TinkerPop3 中。现在,Gremlin Server 在很大程度上遵循 Rexster 的模式。在某些方面,考虑到 TinkerPop3 在某种程度上合并蓝图/Gremlin 结构可能会更难。也许唯一更容易的方法在于 Gremlin比 Rexster 更灵活的服务器扩展模型。
    • 嗨,斯蒂芬。在这一刻,我将使用 Rexster Rest API 并且不关心事务性。如果我们为我们的项目找到资金/投资者,我可以努力填补这个空白(“远程蓝图 API”),可能在一个新的开源项目中或在 TinkerPop 的保护下。
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多