本节书摘来自华章出版社《HBase企业应用开发实战》一 书中的第3章,第3.5节,作者:马延辉 孟鑫 李立松 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.5 CAP原理与最终一致性
CAP原理是数据库软件的理论基础,它指出对于一个数据库系统来说,不可能同时满足以下三点:
一致性(Consistency):所有节点在同一时间具有相同的数据。
可用性(Availability):保证每个请求不管成功或者失败都有响应。
分区容忍性(Partition tolerance):系统中任意信息的丢失或失败不会影响系统的继续运作。
分布式数据库系统也只能满足三项中的两项。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的,因此只能在一致性和可用性之间进行权衡,大多数的分布式数据库系统选择了牺牲一致性提高可用性。如图3-4所示是不同数据库系统在这三方面的侧重点。
HBase的设计基于这样一些方面考虑,首先不要求严格的数据库事务,保证数据最终一致即可;其次数据库的写入可能在几秒之后读取出来用户也是能够忍受的,也就是说不能实时地读取刚刚写入的数据,另外就是复杂SQL的查询在产品设计阶段就避免了,更多的查询集中在针对主键的查询。