gpt4 book ai didi

postgresql - Neo4j 代替关系数据库

转载 作者:行者123 更新时间:2023-11-29 11:20:23 25 4
gpt4 key购买 nike

我正在实现一个基于 sinatra/rails 的 Web 门户,它最终可能在表/模型之间具有很少的许多:许多关系。这是一个单人团队和兼职但真实世界的应用程序。

我与某人讨论了我的实体,并被建议尝试使用 neo4j。来自真正的“非性感”企业世界,我倾向于使用关系数据库,直到它停止扩展或由于分片等而成为噩梦,然后再考虑其他事情。

但是,

  • 我是第一次在这个项目中使用 postgres 和 datamapper,它让我很快上手
  • 我只是在尝试一些事情并构建更多用例,因此我必须不断更新我的架构(原型(prototype)设计想法和来自 Beta 的反馈)。我不必在 neo4j 中执行此操作(更改查询除外)
  • 使用 neo4j 设置搜索似乎非常容易。但是 Postgres 也可以进行全文搜索。
  • Postgres 最近宣布支持 json 和 javascript。想知道我是否应该坚持使用 PG 并投入更多时间学习 PG(它有一个很好的社区)而不是 neo4j。

寻找 neo4j 更好的用例,尤其是在项目的原型(prototype)设计/初始阶段。我知道如果网站增长,我可能最终会拥有多种持久性技术,如 s3、关系型 (PG)、mongo 等。

另外,最好了解它如何与 Rails/Ruby 生态系统一起发挥作用。


更新 1:

我得到了很多好的答案,现在看来正确的做法是坚持使用 Postgres(特别是因为我部署到 heroku)

然而,无模式的想法很诱人。基本上我正在考虑一种方法,在你说 100-150 个用户之前你不定义数据模型并且你自己为你的产品想出了一个好的模式(业务用例),而你只是在演示这个概念并获得有限注册的反馈。然后可以决定一个模式并从关系开始。

很高兴知道是否有易于使用的架构/较少持久性选项(基于新用户的易用性/设置)可能会放弃缩放等。

最佳答案

如果您的数据模型非常困惑,则应考虑图形数据库。需要它们来表达实体之间高度复杂的关系。为此,它们在数据级别存储关系,而 RDBMS 使用声明性方法。只有当这些关系非常不同时,存储关系才有意义,否则你最终只会一遍又一遍地复制数据,白白占用大量空间。要需要如此多样的关系,您必须处理大量数据。这就是图形数据库的闪光之处,因为在进行大量连接时,它们只需选择一条记录并遵循他的关系。为了支持我的说法:你会注意到每个 use cases Neo4j 的网站上正在处理非常复杂的数据。

简而言之,如果您不介意我上面所说的,我认为您应该使用另一种技术。如果这只是关于扩展、无模式或快速启动项目,那么看看其他 NoSQL 解决方案(更具体地说,是面向列或面向文档的数据库)。否则你应该坚持使用 PostgreSQL。你也可以像你说的那样考虑polyglot persistence ,

关于您的更新,您可能会考虑 hStore .我认为它符合你的要求。它是一个 PostgreSQL 模块,也适用于 Heroku。

关于postgresql - Neo4j 代替关系数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16977171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com