1.3 分布式数据库
在数据库发展早期阶段,使用单机数据库就能满足数据存储和管理的规模,但是随着互联网的不断普及,特别是移动互联网的兴起,数据规模爆炸式增长,单机数据库越来越难以满足用户需求。解决这种问题的一个直观方法就是增加机器的数量,把数据库同时部署在多台机器上,分布式数据库就这样应运而生了。
20世纪70年代中期分布式数据库的研究就已经开始了,这个时期也出现了一些分布式数据库系统。例如,1979年,美国计算机公司(Computer Corporation of America,CCA)在DEC(Digital Equipment Corporation)计算机上实现了世界上第一个分布式数据库系统SDD-1。随后,在不到十年的时间内,分布式数据库的发展十分迅猛。例如,IBM公司在System R的基础上研制了分布式数据库R*,加州大学伯克利分校开发了分布式Ingres等。1987年,C.J. Date提出了完全的、真正的分布式数据库系统应遵循的原则,该原则被作为分布式数据库系统的理想目标。20世纪90年代以来,分布式数据库系统进入商业化应用阶段,传统的关系数据库产品均发展成以计算机网络及多任务操作系统为核心的分布式数据库产品。
2005年左右,研究人员对分布式数据库的探索,推动了NoSQL数据库的发展,这些数据库解决的首要问题是单机上无法保存全部数据,其中以HBase、Cassandra、MongoDB为代表。2012—2013年,业界在谷歌(Google)发表的Spanner和F1系统的论文中看到了关系模型和NoSQL的扩展性在一个大规模生产系统上融合的可能性,这些探索极大地推动了NewSQL数据库的发展。
进入大数据和移动互联时代后,因为数据的特性和应用场景的变化,注定着不论是传统的关系数据库,还是新型的NoSQL和NewSQL数据库都会向着分布式的方向发展,分布式数据库也成了数据库领域的主流方向之一。但是分布式数据库也存在一些问题。例如,众多节点之间通信会花费大量时间;数据的安全性和保密性在众多节点之间会受到威胁;在分布式系统复杂的存取结构中,原本在集中式系统中有效存取数据的技术可能不再适用;分布式的数据划分、负载均衡、分布式事务处理和分布式执行技术缺乏新的突破。