3.3 数据分布
在对企业的数据分类有一个清晰的把握之后,还需要了解IT系统如何来产生与利用这些数据。这就要涉及数据在系统中如何分布的问题。
数据分布指分布式数据库中数据根据需要划分成逻辑片段,按某种策略将这些片段分散地存储在各个节点上。近年来,云计算成为举世瞩目的成果。面对海量数据的管理,构建适合企业实情的分布式数据库很有必要。
那么,什么是分布式数据库呢?一个获得人们普遍承认的定义为:分布式数据库是由一组这样的数据组成,它们在物理上分布在计算机网络的不同节点(亦称场地)上,逻辑上属于同一个系统。
分布式数据库具有以下特点。
1.数据独立性
包括逻辑独立性和物理独立性两方面,即用户程序与数据的全局逻辑结构及数据的存储结构无关。
2.集中与自治相结合的控制结构
数据的共享有两个层次:全局共享和局部共享;相应的控制机构也有两个层次:集中和自治。为保证数据库的安全性和完整性,对全局共享数据库采取集中控制,并由DBA负责监督和维护系统的正常运行;同时各局部DBMS也可以独立管理局部数据库,实现自治。
3.适当增加数据冗余度
在不同场地存储同一数据的多个副本,进而做到方便检索、提高系统查询速度、可靠性和可用性,但也增加了系统维护的代价。
4.全局的一致性、可串行性和可恢复性
便利全局事务处理,但相关技术较集中式数据库系统复杂性上升,难度加大。
3.3.1 数据分布的策略
目前,数据分布的基本策略分为集中式、分割式、复制式和混合式。
(1)集中式。数据片段全部安放在同一节点上。
评价:这种分布策略跟集中式数据库没有差别。
(2)分割式。所有数据只有一份,被分割成若干片段,每个片段被指派在某个特定节点上。
评价:可充分利用各节点上的存储设备,当部分节点出现故障时其余部分仍可运行,但是当节点被破坏后没有数据副本,因此也不能进行恢复。
(3)复制式。每个节点上都有一个完整的数据副本。
评价:可靠性高,响应速度快,数据库恢复也较容易,但是要保持每个节点上数据的同步修改,需要付出高昂的通信代价;另外,系统数据容量只是所有节点中容量最小的一个。
(4)混合式。将数据分为若干子集,每个子集安置在不同的节点上,每个子集都在不同的节点存储有副本,但每个节点均不存储数据库所有数据。
评价:兼顾了分割式与复制式的优点,但也包括了两者的复杂性。
3.3.2 数据分布的两个原则
为了确保该数据库的可靠性,并尽可能的减少数据库使用对网络通信资源的消耗,在对数据库数据分布设计时应满足以下两个原则。
(1)所有数据应有4个副本。
(2)应有1个副本跨地域存储。
3.3.3 数据分布的应用
面对高速增长的海量数据和不断多样化的数据格式与用户要求,老牌的关系数据库已无法满足现实需求。Google的Bigtable、Amazon的Dynamo系统,Hadoop的Hbase以及微软的LiveMesh为代表的云端数据库涌现出来。
3.3.4 案例分析:淘宝公司数据库发展史
淘宝网诞生于2003年5月,是亚洲最大的网络零售商圈,目前其业务跨越C2C(个人对个人)、B2C(商家对个人)两大部分。国内著名互联网分析机构艾瑞咨询调查显示,淘宝网占据国内电子商务80%以上的市场份额。
1.创立期:V1.0最早的淘宝网
成立初期,使用LAMP(Linux、Apache、MySQL和PHP)架构,如图3-8所示。业界流行的免费开源组合。当时使用的MySQL数据库主要存储用户、交易和商品信息,数据量少,表小;结构简单,但符合当时需求。
图3-8 LAMP架构
2.成长期:V2.0持续发展
原有的MySQL数据已经无法满足需求,出于对稳定性和高性能的考虑,淘宝网从2004年起建立集中式数据架构。采用IBM小型机+EMC存储技术的方式,配合Oracle数据库和Scale up扩展方式。虽然较初期有所进步,运转速度加快,但存在多应用机器对应有限链接池、单点扩展性差的明显缺陷,也难以满足更高的数据存储要求。
3.繁荣期:V3.0垂直扩展
2008年,淘宝网业务迅猛发展,单台小型机达到瓶颈,开始进入大规模垂直拆分阶段。建立松耦合、服务导向的架构体系(SOA),按用户中心、商品中心等主题设置子应用,减少应用间的耦合。每个业务都有独立的应用与数据库环境,并具备单独部署与扩展的能力。同时,非核心数据也从Oracle迁往MySQL,节省了费用。该版架构缺点是硬件成本和Oracle license费用高昂,并存在可怕的扩展预算。
4.成熟期:V4.0水平扩展
随着淘宝网的不断发展,系统压力增长远远超过2倍/年,新业务不断上线。再好的硬件也达到了瓶颈,于是淘宝提出“三去”策略,即去Oracle、去小型机、去高端存储。充分运用分布式数据库架构体系的思想,构建水平扩展构架体系,采取独特的消息中间件同步方式(notify),如图3-9和图3-10所示,缓解主库的压力,具有低成本、可扩展、易维护的特点,也解决了“单库天花板问题”。
图3-10 水平扩展之水平拆分
同时,淘宝重视分布式环境中的监管问题,做到工具自动化,节省人力资源;报警,了解最新状况;标准化,减少错误发生。
5.未来:云计算与平台服务
淘宝目前考虑借鉴Amazon的S3、Ec2、Simple Db,进一步开放存储服务和标准。届时,持久层不一定需要数据库。当然,这也不再属于我们本章讨论范畴。