我们在最近的一篇文章中探讨了NoSQL和NewSQL之间的基本区别。现在让我们通过查看开发人员真正关心的内容来剖析差异:我们可以使用NoSQL解决哪些问题?同样重要的是,NoSQL哪里不合适?不同的方法(NoSQL和NewSQL)有什么好处?展示自己的优势?让我们回顾一下NoSQL和NewSQL显着不同的四个方面,并回顾一些使用NoSQL技术但可能不是最佳选择的用例。NoSQL数据库的四大劣势不要误解我们的意思,NoSQL数据库对于许多工作负载和应用程序来说是非常有利的,但是在四个方面,NoSQL的劣势是显而易见的。可扩展性当NoSQL产品被实施以满足网络公司(如Google、Facebook和Twitter)固有的可扩展性需求时,它们开始受到关注。这些公司处理来自无数来源的大量非结构化数据:网络搜索、移动设备、用户状态更新、评论流等等。在这些用例中,最重要的考虑因素是可扩展性:数据库必须大规模扩展。SQL数据库的刚性模式和交互性被视为束缚,传统RDBMS的扩展成本也被认为是不可行的。在廉价商品硬件上进行横向扩展的能力至关重要。如果您的用例需要横向扩展***数据源,NoSQL可能是正确的选择——除非您要对数据进行实时操作。虽然传统的关系数据库系统以非常高的成本提供扩展选项,但许多NewSQL系统旨在解决可扩展性挑战,首先使用NoSQL,同时保留传统RDBMS的事务性和交互性。一个很好的替代方案是内存中的大规模并行SQL关系数据库,它可以在廉价的商品硬件上线性扩展。数据库应该是云友好的,并且能够扩展以满足云操作的需求。它应该针对高性能和低延迟而设计,具有无共享、集群原生、云友好的架构,以实现高可用性、冗余和容错。可用性大多数NoSQL系统都是为可用性而设计的,CAP定理>ApacheCassandra做出的这个著名的设计决定是基于这样的想法,即数据始终可访问比数据立即正确更重要。毕竟,基本原理是,谁真正关心推文是否真的按照发布的顺序实时出现?最终,它会以正确的顺序出现,但不一定马上出现。在某些用例中,最终一致性是可以接受的。但在很多情况下,比如当你需要立即做出决定时……让移动用户的访问通过。分配有限的、稀缺的资源。处理财务。...EC(和NoSQL)不是一个好的选择。一些NewSQL系统允许用户降低一致性级别。例如,MemSQL支持弱隔离(ACID中的“I”)以改善查询延迟。牺牲可用性的正确答案对于分析(OLAP)工作负载可能有意义,但与事务(OLTP)工作负载无关。一致性(例如,符合ACID的事务、正确答案)NoSQL系统是为可用性而设计的(见上文)。这种选择意味着他们无法提供CAP定理>因此,NoSQL系统选择AP——它们是可用性和分区容错性。这使得NoSQL成为需要强一致性的应用程序或用例的糟糕选择:计费。权限管理、运营支持(电信公司)。***一美元(广告技术、游戏)。SLA(译者注:ServiceLevelAgreement服务水平协议,服务提供商与客户就服务的质量、水平、性能等达成的相互认可的协议或合同)管理,会话管理。交易验证、欺诈检测、出价和报价管理。传感器管理。一个典型的CAP定义说:你不能同时满足所有三个特征。一种更实际的CAP思考方式:面对网络分区,你不可能总是拥有绝对的一致性和100%的可用性。你应该相应地计划。快速请求-响应应用程序现代请求-响应式应用程序比比皆是:验证用户余额时允许移动电话连接。以最优惠的价格交易。在不影响广告商广告预算的情况下,向潜在的数千名用户展示移动广告。为电信运营商管理严格的SLA。在批准交易之前检测欺诈性刷卡。这些事件每天在世界各地发生数百万次。电信、金融服务、在线游戏、广告技术等行业的提供商需要适应这些事件的变化和速度。他们需要一个可扩展的、交易一致的解决方案。
