【问题标题】:Django and Neo4j without Neo4Django没有 Neo4Django 的 Django 和 Neo4j
【发布时间】:2013-02-14 09:40:27
【问题描述】:

我正在使用 Neo4j(以及 Postgres)构建一个 Django 应用程序,我发现这个名为 neo4django 的 Django 集成,我想知道是否可以仅使用 neo4restclient,例如,不使用 Neo4django 的缺点是什么?只使用 neo4-rest-client 是否会给我更多的灵活性? 当我用 Neo4Django 创建我的模型时,建模图形数据库和关系数据库之间似乎没有区别。我错过了什么吗?

谢谢!

【问题讨论】:

    标签: django django-models neo4j neo4django


    【解决方案1】:

    您完全可以继续使用 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 编写模型。我过去写过bit about that odd feeling。我认为问题的一部分可能是该库没有突出显示对图形感兴趣的新开发人员所期望的图形术语(例如遍历和模式匹配),而是将这些技术穿在 Django 查询服装中。

    我很想知道您的想法,或者知道您希望图书馆做的任何事情,但它没有做 :) 祝你好运!

    【讨论】:

    • 非常感谢您详尽而清晰的回复,马特!我不清楚我是否可以同时使用 neo4j-rest-client 和 neo4django 以及 model_instance.node。这听起来很棒。我注意到的一件事是查询有点慢。另外,我喜欢仅对 Neo4j 使用身份验证,而不是使用 Postgres(或其他关系数据库),所以也许我会自己将其构建为一个单独的可重用 Django 应用程序。你觉得值得吗?我的意思是,我很想使用userena,但是我将为一个用户提供三个模型(Django 的模型、Userena 的模型和 neo4django 的)
    • 嗯,什么样的查询对你来说太慢了?我很有可能可以做点什么:) 我也在研究 Neo4j 中的身份验证解决方案。我真正想要的是 contrib.auth 的直接替代品,它与 Django 1.5 的可交换用户模型一起使用,并将所有内容都保留在图表中。不过,我仍然不确定什么时候可以准备好。
    • MyModel.objects.filter(username="mo") 这样简单的东西比我习惯的要慢。关于身份验证,这正是我的目标,替换contrib.auth。我现在使用django-userena 来处理所有身份验证、登录、配置文件编辑和一切,但我确信这是一个混乱的解决方案。我是否有机会为 auth 应用程序做出贡献,因为我正计划构建解决方案? ;)
    • 拜托!事实上,如果你愿意的话,把它放在 GitHub 上,我会很乐意贡献,或者我们都可以做我们自己的事情,并比较方法。不过,我有一种感觉,您会在我之前先使用它:) Re:过滤查询 - 您是否在用户名字段上设置了索引?
    • 我开始认为自定义身份验证后端,类似于 mongoengine 的,+ 为基于 neo4django 的模型的 social_auth 做出贡献。
    猜你喜欢
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多