我正在设计一个高度可扩展的应用程序,它必须存储大量数据。例如,它会存储很多关于用户的内容,然后是很多他们的消息,评论等。我以前一直使用MySQL,但现在我很想尝试像couchdb这样的新东西,或者不是SQL的类似东西。
有没有人对此有任何想法或指导?
答案 0 :(得分:177)
以下是最近blog post from Dare Obasanjo的引用。
SQL数据库就像是自动的 传输和NoSQL数据库 像手动变速器。一旦您 切换到NoSQL,你就成了 负责很多工作的人 系统自动处理 关系数据库系统。类似 当你选择手册时会发生什么 过度自动变速器。其次, NoSQL允许你更多 性能超出系统 消除了大量的完整性检查 由关系数据库完成 数据库层。同样,这是类似的 如何获得更多性能 驾驶手册从车里出来 传输与自动 传动车。
然而最显着的相似之处是 就像我们大多数人不能真的一样 利用a的好处 手动变速箱车因为 我们的大部分驾驶都是坐着 在往返路上的交通 工作中,有一个类似的残酷现实 因为大多数网站都不在谷歌或 Facebook的规模因而没有必要 对于Bigtable或Cassandra。
我只能添加从你至少有一些经验的MySQL切换到没有经验的CouchDB,这意味着你将不得不处理一系列全新的问题并学习不同的概念和最好的实践。虽然这本身很棒(我在家里和MongoDB一起玩,并且喜欢它很多),但是在估算该项目的工作时需要计算成本,并在承担未知收益的同时带来未知风险。如果它是基于您不了解的技术,那么很难判断您是否能够按时完成项目并获得您想要/需要的质量。
现在,如果您在团队中拥有NoSQL领域的专家,那么请务必仔细查看它。但是如果没有团队方面的专业知识,请不要跳过NoSQL进行新的商业项目。
更新:只是在开始的火上扔一些汽油,这里有两篇来自SQL阵营的人的有趣文章。 : - )
I Can't Wait for NoSQL to Die(原始文章消失了,这里是copy)
Fighting The NoSQL Mindset, Though This Isn't an anti-NoSQL Piece
更新:这是一篇关于NoSQL的有趣文章
Making Sense of NoSQL
答案 1 :(得分:3)
似乎今天只有真正的解决方案围绕扩展或分片。所有现代数据库(NoSQL和NewSQL)都支持在数据库层开箱即用的水平扩展,而无需应用程序具有分片代码等。
不幸的是,对于值得信赖的好旧MySQL,不提供“开箱即用”的分片。 ScaleBase(免责声明:我在那里工作)是一个完整的横向扩展解决方案的制造商,如果您愿意,可以使用“自动分片机”。 ScaleBae分析您的数据和SQL流,跨数据库节点分割数据,并在运行时聚合 - 所以您不必! 它是免费下载的。
不要误会我的意思,NoSQL很棒,它们是新的,新的是更多的选择,选择永远是好的!但是选择NoSQL需要付出代价,确保你可以支付它......
你可以在这里看到更多关于MySQL,NoSQL ......的数据:http://www.scalebase.com/extreme-scalability-with-mongodb-and-mysql-part-1-auto-sharding
希望有所帮助。
答案 2 :(得分:0)
最好的选择之一就是支持可扩展性的MongoDB(NOSql dB)。存储大量数据,除了sql中的行和表之外,文件形式的大数据。这是在数据分片之后的一些方法。使用replicasets来确保数据保证维护多个以主db服务器为基础的服务器。语言独立。 使用灵活