关于neo4j的一些通用问题

时间:2014-03-08 10:19:42

标签: servlets nosql neo4j neo4jphp

我是非php web应用程序和nosql数据库的新手。我正在寻找符合我的应用程序要求的智能解决方案,当我知道存在基于图形的数据库时,我感到非常惊讶。好吧,我发现neo4j非常好,非常适合我的应用程序,但正如我已经写过的,我是新手,我在描述它是如何工作方面有一些限制。我希望你们能帮助我学习。

  1. 如果我在一个servlet程序中嵌入neo4j,那么我创建的数据库访问权限在该服务器的不同线程之间共享吗?所以我需要在init()方法中创建数据库并在destroy()中关闭对吗?它将是线程安全的。(每个点都是“正确的?”)但是如果我想创建一个在整个应用程序之间共享的数据库呢?

  2. 我听说图表数据库通常依赖于关系低级别。这对neo4j来说是真的吗?但如果是,那么我会看到真正的持久层的高级接口,那么在这种情况下Connection是什么?是否有一些技术如连接池或这些低级别的东西都由neo4j管理?

  3. 在我的应用程序中,我需要将一些对象加入用户和许多其他分类内容。这些对象中的任何一个都有唯一的id(String)。那么如果有人要求查看关于具有id = QW的对象的一些东西,那么我需要将顶点关联加载到object.QW。这是图数据库的简单操作吗?

  4. 如果我需要管理身份验证,那么当我收到这对夫妇(usr,pwd)时,我需要检查我的图中是否存在这对夫妇。是否存在与以前相同的问题,或者存在一些管理身份验证的良好变体?

  5. 感谢

2 个答案:

答案 0 :(得分:1)

  1. 如果您在大多数情况下来自PHP世界,您最好在服务器模式下运行Neo4j并通过REST直接访问它或使用https://github.com/jadell/neo4jphp之类的客户端驱动程序。如果您仍希望在servlet环境中嵌入Neo4j,GraphDatabaseService是一个共享组件,可能存储在ServletContext中。在每个请求(因此每个线程)的基础上,您启动并提交事务。
  2. Neo4j是一个原生图数据库。裸金属持久层经过优化,可以尽可能快地从一个节点导航到其邻居,并由Neo4j devteam自己编写。还有其他图形数据库重用其他持久性技术来实现其底层持久性。
  3. 最好的办法是在http://www.neo4j.org/learn/online_course开设Neo4j在线课程。
  4. 请参阅SecurityRules

答案 1 :(得分:0)

由于Neo4j是NoSql图形数据库, 使用GUID必须处理的唯一ID的生成(特定标签也支持3.x autonincremented proery), 因为Neo4j默认的genrated id是唯一的,但是一旦删除了第一个分配的对象,就可以将其重新定位到另一个对象, 我是.net开发人员,在我的项目中,我使用了Neo4j rest api,它运行良好,我会认真地使用它,因为它是使用async-awit编程模式实现的,所以长时间运行操作可以传递给DB并利用你的网络服务器资源更加突出。