【问题标题】:Neo4j server locks database. Why?Neo4j 服务器锁定数据库。为什么?
【发布时间】:2011-06-08 08:31:00
【问题描述】:

我刚开始探索 Neo4j 的世界,偶然发现了一个问题,我有问题要掌握。

我安装了 Neo4j 并通过 bin/neo4j start 启动它。

在接下来的步骤中,我在安装 jruby 和 neo4j gem 之后编写了一个创建新节点的 ruby​​ 脚本。一切都很好,直到这里。

这里描述了如何开始: http://wiki.neo4j.org/content/Getting_Started_With_Ruby

我的问题:当服务器启动并尝试创建节点时,Neo4j 响应数据库已锁定。当我停止服务器时,会创建节点。

我习惯了关系数据库,所以我不理解这种行为。

当我通过 Neo4j Webadmin Tool (http://localhost:7474/webadmin) 检查服务器信息时,ReadOnly 标志设置为 false。

在我看来,Neo4j 方法可能与关系数据库不同,这意味着服务器可能有一个稍微不同的目的而不是数据库服务器。

感谢您的任何建议, 托比亚斯

【问题讨论】:

    标签: ruby jruby neo4j


    【解决方案1】:

    JRuby 绑定将启动它自己的 Neo4j 实例,这意味着您最终将有两个数据库实例尝试使用相同的文件。

    方法有些不同,但关系数据库也使用它,例如 Apache Derby。与 Neo4j 一样,您可以将其嵌入到您的应用程序中(这就是 JRuby 绑定在您的案例中所做的事情)或将其作为独立服务器运行。

    所以不要自己启动服务器,这应该可以解决问题。

    【讨论】:

    • 感谢您的回答。那么,这个 Neo4j 实例是否仅在事务或脚本运行时才存在?
    • 只要脚本正在运行。因此,对于实际使用,您应该从应用程序中的某个位置以使其保持运行的方式启动它,因为启动和关闭数据库服务器是非常昂贵的操作。
    • 你用 Neo4j 服务器做什么?如果您只想与 ruby​​ 中的 graphdb 交互,则不必运行服务器。只有当您想通过 REST 将您的 graphdb 公开给其他客户端时,您才真正需要服务器。
    • 好的,这就是我的另一个目的。要与关系数据库(例如 PostgreSQL)交互,我必须启动数据库服务器,否则什么都不会发生;-)
    猜你喜欢
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多