1

我是非 php Web 应用程序和 nosql 数据库的新手。我一直在寻找与我的应用程序需求相匹配的智能解决方案,当我知道存在基于图形的数据库时,我感到非常惊讶。好吧,我发现 neo4j 非常好,非常适合我的应用程序,但是正如我已经写过的那样,我是新手,在理解它的工作原理方面有一些限制。希望大家能帮助我学习。

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

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

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

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

谢谢

4

2 回答 2

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

由于 Neo4j 是 NoSql 图形数据库,因此您必须使用 GUID 处理唯一 ID 的生成(特定标签也支持 3.x 自动增量程序),因为 Neo4j 默认生成的 id 是唯一的,但可以重新分配给另一个对象一旦第一个分配的对象被删除,我是我项目中的.net 开发人员您可以传递给 DB 并以更突出的方式利用您的 Web 服务器资源。

于 2017-07-02T08:53:57.860 回答