我正在设计一款高可扩展应用程序,需要存储大量数据。例如,它将存储许多关于用户的信息,以及他们的许多消息、评论等等。我之前一直使用MySQL,但现在我想尝试像couchdb这样不是SQL的新东西。
请问有什么想法或建议吗?
我正在设计一款高可扩展应用程序,需要存储大量数据。例如,它将存储许多关于用户的信息,以及他们的许多消息、评论等等。我之前一直使用MySQL,但现在我想尝试像couchdb这样不是SQL的新东西。
请问有什么想法或建议吗?
我只能补充一点,从你至少有一些经验的MySQL切换到你没有经验的CouchDB,意味着你将不得不处理一整套新的问题并学习不同的概念和最佳实践。虽然这本身很棒(我正在家里玩MongoDB,并且非常喜欢它),但这将是一个成本,您需要在估算该项目的工作量时计算它,并带来未知的风险,同时承诺未知的好处。如果基于您不了解的技术,那么很难判断您是否可以按时完成项目并获得您想要/需要成功的质量。SQL数据库就像自动变速器,而NoSQL数据库就像手动变速器。一旦切换到NoSQL,您就需要承担许多在关系型数据库系统中由系统自动处理的工作。这与选择手动变速器与自动变速器类似。其次,通过从数据库层面消除关系型数据库执行的许多完整性检查,NoSQL允许您从系统中获得更高的性能。同样,这就像通过驾驶手动变速器车辆而不是自动变速器车辆来获得更高性能的汽车。
然而,最值得注意的相似之处在于,就像我们大多数人不能真正利用手动变速器车辆的好处,因为我们的大部分驾驶都是在通勤交通中,所以存在类似的残酷现实,即大多数网站并不具有Google或Facebook的规模,因此不需要Bigtable或Cassandra。
现在,如果您团队中有NoSQL领域的专家,请务必仔细考虑。但是如果团队中没有任何专业知识,则不要在新的商业项目中使用NoSQL。
更新:为了在你引发的公开火灾中添加一些汽油,这里有两篇来自SQL阵营人士的有趣文章。 :-)
我迫不及待地希望NoSQL死亡(原始文章已经消失,这是一个副本)
战胜NoSQL思维定势,但这不是反对NoSQL的文章
更新: 好吧,这里有一篇有趣的关于NoSQL的文章
理解NoSQL
其中最好的选择之一是选择支持可扩展性的MongoDB(NOSql dB)。它以文档的形式存储大量数据,而不是像SQL中的行和表那样。这比遵循数据分片更快。使用副本集来确保数据保证,维护具有主数据库服务器作为基础的多个服务器。独立于语言。灵活易用。