首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoSQL和/或关系

问NoSQL和/或关系
EN

Stack Overflow用户
提问于 2011-05-01 01:36:52
回答 7查看 1.5K关注 0票数 3

我在一个项目中工作,我必须保存friends.After的列表,思考了很多,并在网上搜索最好的方式做它似乎保存用户id和朋友id在一个表中。但可以肯定的是,如果项目希望达到大规模,这种方法似乎不是很好。大多数大型公司,如谷歌,Facebook,Twitter也将他们的功能转移到nosql数据库上。那么,似乎我们不应该从这些NoSQL数据库开始我们的项目吗?

但与此同时,我读到了很多NoSQL的编码工作,因为这里没有提供关系数据库中的许多默认服务(如果我错了,请纠正我)

也许一种方法可以从关系型开始,因为它在小规模上具有非常好的功能,然后转移到NoSQL上,但要做到这一点,你必须编写非常好的可移植代码,在这些代码中,ORM可以发挥良好的作用吗?

想知道其他人的意见是什么才是正确的方法吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-05-01 05:59:49

编辑我看到其他人建议从SQL开始。我想改变我的主张,并说-试验小规模的项目,如“小型twitter克隆”或“用录像带存储”。将数据库保存在多个节点上,并编写脚本,这些脚本将向您提供大量数据。先使用Riak/Cassandra,然后使用一些SQL解决方案。你会发现你自己更容易更快。/edit

我会选择NoSQL (这就是我现在正在做的。以前我在大型项目中使用MySQL )。为什么?它的使用要简单得多,所以您可以将更多的注意力放在其他重要的事情上(NoSQL会处理大多数数据存储问题):

  • 你不必定义模式,这也意味着你不必升级它。在MySQL中,由于系统升级,我有很长的停机时间。添加单个列/索引需要很长时间。表格只有几百万行。
  • 让您在几分钟内即可运行分布式环境。在MySQL中,你必须在几台机器上手动拆分数据(除非你把所有数据都放在一台机器上,这不是一个好主意)。
  • 你可以获得更好的性能。使用MySQL的性能真的很差。没有memcached,它就不能工作。Memcached是一个分布式键值存储(简单的NoSQL数据库)。显然,使用memcached会让您在优化查询上花费额外的时间,而不必考虑规范化/ denormalization
  • Queries很简单(至少在键值存储中是这样)。
  • 。你只是不关心这样的事情:我应该使用"where UserId = 12345“或"where UserId = '12345'”(在MySQL中,他们中的一个不会使用带有NoSQL故障的indexes!).
  • If one机器,你在你的应用程序中并不关心这一点。查询将在另一个复本上执行(您不必执行此操作!)

使用NoSQL也有缺点。

,

  • ,你不会吃酸的。在大多数情况下,你根本不需要它!
  • 也有更多的开发人员熟悉SQL解决方案。另一方面,NoSQL解决方案要简单得多(至少在我的经验中是这样),因此您不需要经过认证的数据库管理员(解决数据库问题的魔术师,只有他知道它为什么会工作)
  • 您不能执行某些查询-例如,连接不存在,但是如果您不规范化数据,则连接是无用的(并且您可以节省时间,因为您不必考虑joins

很棒的文章:http://labs.mudynamics.com/2010/04/01/why-nosql-is-bad-for-startups/

我的建议是从NoSQL开始并坚持下去。你应该看看像Riak和Cassandra这样的基于发电机的数据库。也可以尝试使用CouchDB (CoachBase)。这是针对大多数数据的。对于朋友关系来说,图形数据库是一个很好的选择。

票数 2
EN

Stack Overflow用户

发布于 2011-05-01 02:09:58

一般情况下,远离ORM,尤其是ActiveRecord。

他们通常创建一个“开发债务”,这意味着它使项目的开始看起来很容易。

当你投资于与ORM的完全集成,并且80%的项目已经完成时,

你开始看到ORM失败的所有边界情况。

除此之外,大多数ORM都会进行不太理想的查询,并且从不利用引擎特定的特性。

至于SQL vs noSQL:我建议从SQL数据库开始,然后当应用程序增长时,开始使用某种缓存策略(memcached,或者redis)。只有当解决方案耗尽时,才开始寻找数据库逻辑中不需要是关系型的部分。

noSQL数据库提供一系列非常具体的用例,并不适用于一般的应用程序。

票数 4
EN

Stack Overflow用户

发布于 2011-05-01 01:52:28

使用SQL数据库。

当您开始每天获得数百万用户时,开始使用某种类型的NoSQL数据库。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5843492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档