摘要:云存储技术最早来源于那些互联网企业,这也是可以理解的,毕竟这些企业所面临的访问量也是之前任何应用所不曾遇到的。从一个数据就可以得知:现在支付宝每天新增的记录数为3亿条。显然这样的数据量以及在此之上的运算,不是传统关系型数据库可以支撑的了。 |
作为可扩展性是指系统架构可以让系统提供更多的服务而不降低使用性能的特性。通过现有的机器增加硬件的容量、内存进行垂直扩展,是最简单的达到可扩展性的手段,但这有个限度。而水平扩展则需要增加更多机器,每台机器提供全部或部分数据,这样所有主机都不必负担全部业务请求。但软件自己需要有内部机制来保证集群中节点间的数据同步。而云存储技术所带来的可扩展性几乎是无限的,并且对于投资者而言投入(硬件投资)与产出(提供更多的服务)几乎是线性的。水平扩展说到底就是使用更多的主机来承担运算。假设一台主机在运行一年的时间里发生故障的概率是n,那么20台主机在运行一年的时间里发生故障的概率则为20×n,由此看出当某个集群中主机的数量达到一定程度,在一年中发生故障的概率将会非常大,甚至每天有机器发生故障也不是危言耸听。许多云存储技术都将此作为基本的设计前提,因此云存储技术天生具有良好的高可用性与容错。
怎么样?是否很诱人。这么好还不如把现在的这些企业应用都替换了。先别着急,享受这些好处也是有代价的。说到这里就不得不提EricBrewer的CAP理论(2002年被理论证明)。依据这个理论,对于一个大规模分布式数据库系统,有以下三个需求:
一致性(Consistency):对于所有的数据库客户端使用同样的查询都可以得到同样的结果,即使是有并发更新的时候也是如此。
可用性(Availability):所有的数据库客户端总是可以读写数据。
分区耐受性(Partition Tolerance):数据库可以分散到多台机器上,即使发生网路故障,被分成多个分区,依然可以提供服务。
CAP理论指出,同时只能具有这三个特性中的两个。传统的关系型数据库所强调的是一致性(C)与可用性(A),而在分区耐受性(P)的方面的支持十分有限,这一点从本质上揭示了上述关系型数据库的问题。再来看云存储技术,都特别强调了分区耐受性(P)从而弥补关系型数据库在此方面的不足,接下来的区别就是选择可用性(A)还是一致性(C)了,反正是不能都选。对于CP系统,放弃的是可用性(A),你的数据将保持一致性,但如果有节点发生故障,仍然会有部分数据无法访问;而对于AP系统,放弃的则是一致性(C),那么你的系统就有可能返回不太精确的数据。
责任编辑:三水