你好,游客 登录
背景:
阅读新闻

深入探讨:NoSQL之可用性及扩展性

[日期:2014-12-04] 来源:HKITBLOG  作者: [字体: ]

一致性还是可用性?

      虽然CAP(CAP theorem)模型是不完整,但如果你仔细想想,CA系统的目的是保护你什么东西?在网络磁碟分割时,它会减少较基础的配置来为你提供一致性和可用性。但是,当网络中断时,就不会再有所谓的一致性,意味着资料的差异性会出现,或者你可以减低可用性。因此,我们认为可以定义一个更简单的CAP定理,即是分散式系统的一致性和可用性做出选择。

      考虑到现实中会发生网络中断的情况,结论如下:

      只有两种实用的分散式系统:一致性系统和可用性系统。

      如果你的分散式系统在一个单独的Data Center中,又具备一个可靠的,高速的,稳定的网络,你可以选择一致性而不是可用性。因为你认为一致性的好处多过网络失败的可能性。而且对大部分Data Center来说,这是一个很好的机会给客户认为他们是最好的。

      如果你的分散式系统在一个不可靠的网络上,或者你计划将来建立一个可以横跨的Data Center,那么你应该要放弃一致性、支援可用性。对于分散式资料库来说,这是需要的。

      如果你的业务让你能在同一个全球的Data Center为所有客户服务,并且不需要你改去网络中的拓扑结构,你可以选择一致性或可用性。对其他人来说,我们真的没有选择,只能放弃一致性,才有合理的可用性能,所以:

长远来看,一致性是十分必要的

      随着互联网发展越来越大,全球的扩展性也将会更高。同样,一个能分佈全球的资料库不需备有一致性。如果,你的应用程式不需要这种规模,那么请你提高资料库的一致性。

资料库的扩展性

      接下来会提及作者对产品的立场。作者唯一感兴趣的是NoSQL资料库当中的向外扩展的资料库。或者你会有其他的需要,但作者认为需要的是NoSQL的扩展问题。让我们从不同的角度来看NoSQL的资料库表现吧。

      首先,作者认为在NoSQL的资料库中,任何的复製、或集群中节点的概念等等都比其他的观点更重要。按照这些路线可构成可扩展性的模式来说,会有不少人说作者错了。但无可否认的是,由于MongoDB的兴起,这些类型的系统并不成正比。

      其次,作者认为NoSQL资料库在本地网络和WAN之间有不同的概念更为重要。LAN的Bandwidth更为可靠和令人意想不到。例如 Gigabytes 的 Ethernet是每个Data Center的标凖,甚至使用更高的Bandwidth。其他的网络都并不可靠,提供的Bandwidth都不多。最符合成本效益应该是VPN,但这种连接方式会有瞬态问题。专用线路则比VPN更可靠,但其频宽是相当昂贵的。因此,你需要在差异中考虑一致性的系统,对你的可扩展性有更好的改善。

      作者的结论很简单。目前只有叁种NoSQL资料库可以满足对可扩展性的定义,在于它们的向外扩展性和处理本地和WAN之间的差异能力:明显Cassandra ,Couchbase, 和 Riak . MongoDB都不在名单之列。

资料多样性的问题

      到目前需要注意的是,作者还没有提到图形资料库,档案资料库等。这是故意的,因为作者不认为这些五花八门的资料库和NoSQL的定义有什么分别。正如它们所说,有时候你真的持有一些十分特别的资料类型,并不适合向外扩展的分散式资料库。

      在这些理论中,最常见的就是分析资料,这些资料往往是被附加上的,但不会被修改。庞大的资料就是在这样的情况下产生的。我不是一个资料科学家,所以不打算分析各种产品的相对优势。鉴于存在很多的选择,如果有这方面的需求的话,你应该深入调查一下。

      或者,你在一个简单的模式下会存储使用者的对话,但会因为读写量会破坏关係型数据库伺服器。在这个情况下,你应该查明缓存或者资料网络的解决方案。

      或者你需要一个能搜索Big Data,不常变动的资料库。也许你需要一个方式是可以通过语言进行搜索,或者有更多你需要的搜索方法。

      有时候,你可能有一个仍在使用关联式资料库中存储着一些资料。关联式资料库并不支援较高交易量。在这种情况下,你应该调查图形资料库。也许你有一些很珍贵的资料,很快就会塞满昂贵的SSD。对于较大的资料,更应该去优化。

      因此,确实有一些特定资料类型必须使用NoSQL资料库。但作者觉得这些往往是例外。作者在网上看了许多各种各样的文章,例如有关文件资料库是你应该关心的一件事、其他资料库已经过时,所能做的就是事先了解。作者认为要瞭解资料库和庞大数据库的差异是十分重要的,老实说,作者并没有真正搞清楚,它们的优点和缺点,这些差异看似微小但在规模和分佈方面却十分重要。在技术上所有的东西都一样,作者认为我们应该专注于真正重要的新技术属性。

      因此,作者最后的建议是:

      不要因为一种资料库有某种好处就使用NoSQL。

      你可以根据可扩展的需求,或者真的需要一个并不适合关联式资料库的使用环境来使用它。

结论

      最近,许多人有关于NoSQL的很多意见,当然作者也不例外。作者认为这篇文章与其它文章略有不同,它往往侧重于资料模型和有趣的、无关大局的、具备其它功能的NoSQL产品。希望你们可以赞成作者的观点。几年前,在作者第一次开始调查NoSQL产品的时候,发现不少选择、几个标準,作已经将这些建议都写在了这篇文章中。当然它説明作者一些早期的错误,作者希望你发现它同样有的价值。





收藏 推荐 打印 | 录入: | 阅读:
相关新闻       NoSQL  SQL 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款