Target应用程序是一个中型网站,旨在支持每小时数百到数千名用户,并可以选择扩展到它。数据模型相当简单,缓存电势很高(读取与编辑操作的比率约为10:1)。

在基于SQL的数据存储到NOSQL选项(例如HBase和Cassandra)之间进行选择时,应考虑什么?

有帮助吗?

解决方案

对我来说,您没有任何特别的问题要解决。如果需要酸度,请使用数据库;如果您不这样做,那没关系。最后,只需构建您的应用程序即可。让我引用 NOSQL:如果只是那么简单:

要指出的真正的事情是,如果您无法选择数据库,那么您就无法制作超棒的东西,那就做错了。如果您知道MySQL,那就使用它。优化您何时需要。像AK/V商店一样使用它,像RDBM一样使用它,但是为了上帝的缘故,请构建您的杀手级应用程序!这些对大多数应用都不重要。 Facebook仍然使用MySQL很多。 Wikipedia经常使用MySQL。 Friendfeed经常使用MySQL。 NOSQL是一个很棒的工具,但这肯定不会成为您的竞争优势,它不会使您的应用程序变得炙手可热,而且最重要的是,您的用户不会对此感到不满。

其他提示

Digg有一些 有趣的 文章 关于这个问题。从本质上讲,您正在将处理的负担转移到写作而不是阅读,这在高度可扩展的应用中可能是可取的。卡桑德拉(Cassandra)也非常可用。

简单地说,Cassandra是一个分布式数据库,具有在基础架构之类的发电机上运行的Boogtable数据模型。它是面向列的,允许存储相对结构化的数据。它具有完全分散的模型;每个节点都是相同的,并且没有单点故障。这也是极其容忍的;数据将复制到多个节点和跨数据中心。卡桑德拉也很弹性。随着新机器的添加,读写吞吐量增加。

我喜欢伊恩·埃尔(Ian Eure)的经验法则:“如果您要在数据库之上部署memcache,那么您正在发明自己的临时,难以维护NOSQL系统。”

http://www.rackspacecloud.com/blog/2010/02/25/should-you-switch-to-nosql-too/

当您说数据模型非常简单时,这可以说明NOSQL选项。

当您有很多属性可以进行选择,重型交易负载或复杂的桌子结构,这将说明传统的SQL表。

我建议找出使用一个或两个NOSQL数据库实现数据模型的困难。当这很困难时,您也可以制作一个经典的表格模式进行比较。

当您在NOSQL方面遇到困难时,这可能会说明SQL选项。但也可能是,NOSQL可以更好地处理重负荷 - 但也可能是一个很好的SQL数据库缩放量足够...

也可以使用简单的代理服务器进行缓冲...

在困难上,也可以考虑使用NOSQL和SQL的混合。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top