Database design 选择SQL/NoSQL应该考虑哪些因素?

Database design 选择SQL/NoSQL应该考虑哪些因素?,database-design,architecture,scalability,nosql,Database Design,Architecture,Scalability,Nosql,目标应用程序是一个中等规模的网站,每小时可支持数百到数千名用户,并可选择扩展到这一级别。数据模型相当简单,缓存潜力相当高(读取与编辑操作的比例约为10:1) 在选择关系型、基于SQL的数据存储和NoSQL选项(如HBase和Cassandra)时,应该考虑哪些因素?Digg对此有一些看法。本质上,您正在将处理负担转移到写入而不是读取,这在高度可扩展的应用程序中可能是可取的。特别是卡桑德拉也非常容易获得 简单地说,卡桑德拉是一个 具有BigTable的分布式数据库 运行在类似发电机的机器上的数据模

目标应用程序是一个中等规模的网站,每小时可支持数百到数千名用户,并可选择扩展到这一级别。数据模型相当简单,缓存潜力相当高(读取与编辑操作的比例约为10:1)

在选择关系型、基于SQL的数据存储和NoSQL选项(如HBase和Cassandra)时,应该考虑哪些因素?

Digg对此有一些看法。本质上,您正在将处理负担转移到写入而不是读取,这在高度可扩展的应用程序中可能是可取的。特别是卡桑德拉也非常容易获得

简单地说,卡桑德拉是一个 具有BigTable的分布式数据库 运行在类似发电机的机器上的数据模型 基础设施它是面向列的 并允许存储 相对结构化的数据。它有一个 完全分散模式;每个节点 是相同的,没有单一的 故障点。也非常 容错;数据被复制到 多个节点和跨数据 中心。卡桑德拉也是一个很有魅力的人 有弹力的读写吞吐量 随着新机器的增加而线性增加 补充说


当你说,数据模型相当简单,这可以说明NoSQL选项

当您有大量属性可供选择、事务负载沉重或表结构复杂时,这就说明了传统的SQL表

我建议找出用一两个NoSQL数据库实现数据模型有多困难。当这相当困难时,您还可以制作一个经典的表模式进行比较

当您在使用NoSQL方面遇到困难时,这可能代表SQL选项。但也可能是,使用NoSQL可以更好地处理繁重的负载——但也可能是一个好的SQL数据库可以充分扩展

缓冲也可以通过简单的代理服务器完成


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

对我来说,您没有任何特殊的问题需要解决。如果你需要酸度,使用数据库;如果你没有,那也没关系。最后,只需构建你的应用程序。让我引述:

真正需要指出的是,如果你因为不能选择数据库而被阻止制作一些超级棒的东西,那你就是做错了。如果你知道mysql,就用它吧。在实际需要时进行优化。像k/v商店一样使用它,像rdbms一样使用它,但看在上帝的份上,构建你的杀手级应用!这些对大多数应用程序来说都无关紧要。Facebook仍然大量使用MySQL。维基百科经常使用MySQL。FriendFeed经常使用MySQL。NoSQL是一个很好的工具,但它肯定不会成为你的竞争优势,也不会让你的应用程序变得炙手可热,最重要的是,你的用户不会在乎这些


我喜欢Ian Eure的经验法则:“如果你在数据库上部署memcache,你就是在发明自己的特别的、难以维护的NoSQL系统。”


你是说每小时有100到1k或10万用户?请至少先做一点调查(可能需要两分钟)。只是快速浏览一下。我尊重你2(Jonathan Ellis和Ian Eure)太多,认为这是一个严重的反应。这肯定只是个恶作剧吗?
你的用户不会在乎这些的