2010-03-13 94 views
19

目标应用程序是一个中等规模的网站,每小时支持几百到几千个用户,并可以选择以上的比例。数据模型相当简单,并且缓存潜力相当高(读取与编辑操作的比率约为10:1)。选择SQL/NoSQL应该考虑什么?

在基于SQL的关系数据存储与NoSQL选项(如HBase和Cassandra)之间进行选择时,应该考虑什么?

+0

你的意思是每小时100到1k或100k用户吗? – Bobby 2010-03-13 21:26:46

+0

清除含糊不清:) – 2010-03-13 21:29:36

+0

请至少做一个_little_研究(可能两分钟的价值)。只需快速浏览http://stackoverflow.com/questions/tagged/nosql。 – 2010-03-14 17:34:05

回答

18

对我来说,你没有任何特别的问题需要解决。如果您需要ACIDity,请使用数据库;如果你不这样做,那没关系。最后只需构建您的应用程序。让我引用NoSQL: If Only It Was That Easy

真正要指出的是,如果你正在举行作出一些超级真棒,因为你不能选择一个数据库回来,你做错了。如果你知道mysql,只是用它。当你真正需要时进行优化。使用它像一个K/V商店,使用它像一个RDBMS,但为了上帝的缘故,建立你的杀手级应用程序!这对大多数应用程序都无关紧要。 Facebook仍然使用MySQL,很多。维基百科使用MySQL,很多。 FriendFeed使用MySQL,很多。 NoSQL是一个很棒的工具,但它肯定不会成为你的竞争优势,它不会让你的应用变得热门,而且最重要的是,你的用户不会对此产生任何影响。

+0

'你的用户不会对这个问题有任何疑问' - 我喜欢这个部分,真的。 LOL – GusDeCooL 2016-12-26 22:48:41

1

Digg对这个问题有一些interestingarticles。实质上,您将处理负担转移到了写入而不是读取,这在高度可伸缩的应用程序中可能是需要的。 Cassandra特别高度可用。

简单地说,Cassandra是用在迪纳摩运行像 基础设施BigTable的 数据模型 分布式数据库。它是以列为导向的 ,并允许存储相对结构化的数据。它有一个完全分散的模型 ;每个节点 是相同的,并且没有单一的故障点 。这也是极其容错的;数据被复制到 多个节点以及跨数据中心 。卡桑德拉也很有弹性;读取和写入吞吐量 随着新机器添加 线性增加。

0

当你说,数据模型很简单,这可以说是NoSQL选项。

当您有足够的属性进行选择,繁重的事务负载或复杂的表结构时,这可以说是传统的SQL表。

我建议找出用一个或两个NoSQL数据库实现数据模型是多么困难。当这很困难时,你也可以创建一个经典的表格模式来进行比较。

当您遇到NoSQL问题时,这可能是SQL选项。但也可能的是,用NoSQL可以更好地处理重负载 - 但也可能是一个好的SQL数据库能够充分扩展......

缓冲也可以用一个简单的代理服务器完成......

在困难中,还可以考虑混合使用NoSQL和SQL。

相关问题