我正在使用 Neo4j(以及 Postgres)构建一个 Django 应用程序,我发现这个名为neo4django的 Django 集成,我想知道是否可以仅使用 neo4restclient,例如,不使用 Neo4django 的缺点是什么?仅使用 neo4-rest-client 是否会给我更大的灵活性?当我用 Neo4Django 创建我的模型时,似乎在建模图形数据库和关系数据库之间没有区别。我错过了什么吗?
谢谢!
我正在使用 Neo4j(以及 Postgres)构建一个 Django 应用程序,我发现这个名为neo4django的 Django 集成,我想知道是否可以仅使用 neo4restclient,例如,不使用 Neo4django 的缺点是什么?仅使用 neo4-rest-client 是否会给我更大的灵活性?当我用 Neo4Django 创建我的模型时,似乎在建模图形数据库和关系数据库之间没有区别。我错过了什么吗?
谢谢!
您绝对可以继续使用 neo4j-rest-client 或 py2neo,而无需使用 neo4django。同样,您可以使用 Django、任何 REST 客户端等随时使用您想要的任何其他数据库驱动程序。
你会失去什么?模型 DSL、内置查询(例如Person.objects.filter(name="Mohamed")
)、内置索引以及其背后的 Lucene、Gremlin 和 Cypher。有些事情会容易得多——比如在节点上设置任意属性——但你需要更多地了解 Neo4j 的工作原理。
您还将丢失 Django 提供的一些与 neo4django 一起使用的快捷方式,例如get_object_or_404()
和一些与查询集一起使用的基于类的视图。
你会得到什么?绝对强大的数据库,更容易调整数据库性能。尽管 neo4django 不像 Python 领域中的一些传统 ORM 那样出色,但在功率与提供的易用性之间的权衡是相似的。
也就是说,两者可以一起工作——您可以随时从 neo4django 下拉到底层 REST 客户端节点和关系。只需用于model_instance.node
从模型中获取底层的 neo4j-rest-client 节点对象,并from neo4django.db import connection
获取包装的 neo4j-rest-client GraphDatabase
。
关于你是否遗漏了什么:neo4django 是为了重用强大的开发人员界面——Django ORM——而编写的,所以它应该感觉类似于为 Postgres 编写模型。我曾经写过一些关于这种奇怪感觉的文章。我认为问题的一部分可能是该库没有突出显示对图形感兴趣的新开发人员期望的图形术语——比如遍历和模式匹配——而是在 Django 查询服装中穿着这些技术。
我很想知道你的想法,或者知道你想让图书馆做的任何事情,它没有做:) 祝你好运!