postgresql – Neo4j而不是关系数据库
我正在实现一个基于sinatra / rails的门户网站,最终可能只有很多:表/模型之间的许多关系.这是一个单人团队和兼职但真实世界的应用程序.
我与某人讨论了我的实体,并建议尝试neo4j.来自真正的“非性感”企业世界,我倾向于使用关系数据库,直到它停止缩放或因为分片等而成为一场噩梦,然后考虑其他任何事情. 然而, >我在这个项目中第一次使用postgres以及datamapper,它让我有时间快速入门 寻找neo4j更好的用例,特别是在项目的原型设计/初始阶段.我知道如果网站增长,我可能最终会拥有多种持久性技术,如s3,关系(PG),mongo等. 另外,了解Rails / Ruby生态系统如何发挥作用也是一件好事. UPDATE1: 我得到了很多好的答案,看起来正确的做法是坚持使用Postgres(特别是因为我部署到heroku) 然而,无模式的想法很诱人.基本上我正在考虑一种方法,在你说100-150个用户之前你没有定义数据模型,你自己已经为你的产品找到了一个好的模式(业务用例),而你只是在演示这个概念并获得有限注册的反馈.然后,人们可以决定一个架构并从关系开始. 很高兴知道是否有易于使用的架构/较少持久性选项(基于易于使用/设置为新用户)可能会放弃说缩放等.
如果您的数据模型非常混乱,则应考虑使用图形数据库.他们需要表达实体之间高度复杂的关系.为此,它们在数据级别存储关系,而RDBMS使用声明式方法.存储关系只有在这些关系非常不同时才有意义,否则你最终会反复复制数据,无需占用大量空间.
要求各种各样的关系,你必须处理大量的数据.这是图表数据库闪耀的地方,因为做大量连接的实例,他们只是选择一个记录并跟随他的关系.为了支持我的陈述:您会注意到Neo4j网站上的每个 use cases都处理非常复杂的数据. 简而言之,如果您不关心我上面所说的内容,我认为您应该使用其他技术.如果这只是关于扩展,无模式或快速启动项目,那么请查看其他NoSQL解决方案(更具体地说,是列或面向文档的数据库).否则你应该坚持使用PostgreSQL.你也可以像你说的那样考虑polyglot persistence, 关于您的更新,您可能会考虑hStore.我认为它符合您的要求.它是一个PostgreSQL模块,也适用于Heroku. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |