在nosql运动的最xin一次聚会中,来自世界各地的150人挤满了cbsinteractive的一间会议室。就像当年波士顿的爱国者为反抗英国重税的行动一样,nosql的支持者们从各地涌来,分享他们如何推fan缓慢而昂贵的关系数据库的暴政,怎样使用更有效和更便宜的方法来管理数据。
创新的背后往往会刺激痛苦。这一点在软件开发领域尤为真实。上世纪80年代以来,我们就都知道如何处理关系型数据——只要把数据放到关系型数据库管理系统(rdbms)中,就可以使用sql语句操作数据。然而,过去几年来,我们的行业采纳nosql数据库的趋势在增长,数据不见得都在关系型数据库中存储了。
“关系型数据库给你强加了太多东西。它们要你强行修改对象数据,以满足rdbms(relationaldatabasemanagementsystem,关系型数据库管理系统)的需要,”java工具提供商springsource公司的首席工程师jontravis说,他是本次集会的10位发言人之一,在他看来,基于nosql的替代方案“只是给你所需要的”。
诚然,在互联网上有成千上万关于选择sql还是nosql的辩论。但是,这两者是不是必须站在对立面战斗呢?如果你选择一种或另一种,你知道为什么做选择,知道各自有何潜在益处吗?河北朗识在这里简要地讨论了sql和nosql两种方法最常见的优点和缺点。
sql和nosql数据库最da的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。要支持更多并发量,sql数据库是纵向扩展,也就是说提高处理能力,使用速度更快su的计算机,这样处理相同的数据集就更快了。虽然sql数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。而nosql数据库是横向扩展的。非关系型数据存储天然就是分布式的,nosql数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。而在基于节点的分布式系统中,很难做到三项cap(一致性,可用性,分区容忍度)都满足。