选择 SQL/NoSQL 应该注意啥? [关闭]
Posted
技术标签:
【中文标题】选择 SQL/NoSQL 应该注意啥? [关闭]【英文标题】:What should be the considerations for choosing SQL/NoSQL? [closed]选择 SQL/NoSQL 应该注意什么? [关闭] 【发布时间】:2011-01-27 06:13:31 【问题描述】:目标应用程序是一个中型网站,每小时可支持数百到数千名用户,并且可以选择扩大规模。数据模型相当简单,缓存潜力相当高(读取与编辑操作的比率约为 10:1)。
在基于 SQL 的关系型数据存储与 NoSQL 选项(例如 HBase 和 Cassandra)之间进行选择时应该考虑哪些因素?
【问题讨论】:
您是指每小时 100 到 1k 还是 100k 用户? 请先进行至少一点的研究(可能需要两分钟)。只需快速浏览一下***.com/questions/tagged/nosql。 【参考方案1】:对我来说,你没有什么特别的问题要解决。如果需要 ACIDity,请使用数据库;如果你不这样做,那也没关系。最后,只需构建您的应用程序。让我引用NoSQL: If Only It Was That Easy:
真正要指出的是,如果您因为无法选择数据库而无法做出超级棒的东西,那么您做错了。如果你知道mysql,就用它。在您真正需要时进行优化。像 k/v 商店一样使用它,像 rdbms 一样使用它,但是看在上帝的份上,构建你的杀手级应用!这对大多数应用程序都无关紧要。 Facebook 仍然大量使用 MySQL。 Wikipedia 大量使用 MySQL。 FriendFeed 经常使用 MySQL。 NoSQL 是一个很棒的工具,但它肯定不会成为你的竞争优势,它不会让你的应用变得热门,而且最重要的是,你的用户不会在意这些。
【讨论】:
your users won’t give a shit about any of this
【参考方案2】:
Digg 在这个问题上有一些interesting articles。从本质上讲,您正在将处理的负担转移到写入而不是读取上,这在高度可扩展的应用程序中可能是可取的。特别是 Cassandra 也是高度可用的。
简单地说,Cassandra 是一个 带有 BigTable 的分布式数据库 在 Dynamo 上运行的数据模型,例如 基础设施。它是面向列的 并允许存储 相对结构化的数据。它有一个 完全去中心化的模型;每个节点 是相同的,没有单一的 故障点。也是极 容错;数据被复制到 多个节点和跨数据 中心。卡桑德拉也很 松紧带;读写吞吐量 随着新机器的增加而线性增加 已添加。
【讨论】:
【参考方案3】:我喜欢 Ian Eure 的经验法则:“如果您在数据库之上部署 memcache,那么您就是在发明自己的临时、难以维护的 NoSQL 系统。”
http://www.rackspacecloud.com/blog/2010/02/25/should-you-switch-to-nosql-too/
【讨论】:
我非常尊重你 2(乔纳森·埃利斯和伊恩·厄尔),我认为这是一个严肃的回应。这肯定只是个恶作剧吗?【参考方案4】:当您说数据模型相当简单时,这可以说明 NoSQL 选项。
当您有大量属性可供选择、繁重的事务负载或复杂的表结构时,这将适用于传统 SQL 表。
我建议找出用一两个 NoSQL 数据库实现数据模型的难度。当这相当困难时,您还可以制作一个经典的表模式来进行比较。
当您在使用 NoSQL 时遇到困难时,这可能代表 SQL 选项。但也可能是,NoSQL 可以更好地处理繁重的负载——但也可能是一个好的 SQL 数据库可以充分扩展......
缓冲也可以通过一个简单的代理服务器来完成......
如果遇到困难,也可以考虑混合使用 NoSQL 和 SQL。
【讨论】:
以上是关于选择 SQL/NoSQL 应该注意啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
电脑上的BIOS设置Disabled和Enabled是啥意思?选哪个?
2013 年的 ASIHTTPRequest 和 AFNetworking。选择啥? [关闭]