1 分布式文件系统
1.1 简介
定义:文件系统管理的物理存储资源不仅存储在本地结点上,还可以通过网络连接存储在非本地结点上。
优势:低成本,易扩展,强可靠,高可用。
主流分布式文件系统:
- GFS(Google File System)
- HDFS(Hadoop Distributed File System)
- Ceph
- Lustre
- TFS(Taobao File System)
1.2 HDFS简介
开源实现了GFS 。
Hadoop的框架最核心的设计是HDFS和MapReduce,前者为海量数据提供了存储,后者为海量的数据提供了计算。
特点:兼容廉价的硬件设备,流式数据访问,存储和管理超大文件,简单的文件模型,强大的跨平台兼容性。
体系结构:
- 主要采用Master-Slave结构模型
- 一个HDFS集群通常由一个名称节点和多个数据节点组成
- 将文件数据分割成若干数据块,每个数据节点存储一部分数据块
- 应用程序客户端可以并行地对数据块进行访问
冗余数据存储:
- 多副本方式
- 保证系统的容错性和可用性
- 加快数据传输速度
- 容易检查数据错误,保证数据可靠性
HDFS数据读写过程。
2 分布式数据库 HBase
是BigTable的开源实现。
是一个稀疏、多维、持久化存储的映射表,采用行键、列族、列限定符、时间戳进行索引。
一个大的表会被拆分成许多Rigion,分发到不同服务器上。
3 非关系型数据库 NoSQL
3.1 传统数据库的不足
无法满足海量数据的管理需求。
无法满足数据高并发的需求。
无法满足高扩展性和高可用性的需求。
3.2 NoSQL特点
不需要预定义的数据格式。
不共享任何构架。
灵活可扩展。
数据分区。
异步复制。
3.3 典型NoSQL数据库
键值数据库
- 将数据存储为键值对集合,键作为唯一标识符
- Memcached,Redis,BerkeleyDB
列存储数据库
- 一般采用列族数据库模型,数据库由多行构成
- 每行数据包含多个列族,不同行可具有不同数量的列
- 每行数据通过行键进行定位,列以列族为单位组织存储
- Cassandra,HBase,HyperTable
文档数据库
- CouchDb,MongoDB,RavenDB
图数据库
- 以图作为数据模型,通过节点、边和属性来表示和存储数据
- 用于管理具有高度相互关联关系的数据
- Neo4J,Infinite Graph,GrapgDB
3.4 CAP理论
一个分布式的系统不能同时满足一致性、可用性和分区容忍性这三个要求,最多只有两个得到满足。
Consisitency:所有节点在同一时刻拥有数据的最新版本。
Availability:任何时候,读写都是成功的,即系统一直可用。
Partition Tolerance:当部分节点出现信息丢失或者分区故障时,分布式系统仍然能够以继续运行。
3.5 NoSQL vs 关系数据库
关系数据库:
- 优势:以完善的关系代数理论作为基础,有严格的标准,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持
- 劣势:可扩展性较差,无法较好支持海量数据的存储,数据模型不够灵活,无法较好支持Web2.0应用
NoSQL数据库:
- 优势:强大横向扩展能力,支持超大规模数据存储,灵活的数据模型,很好支持Web2.0应用
- 劣势:缺乏数学理论基础,复杂查询能力不高,很难实现数据完整性,缺乏专业团队的技术支持,维护较困难
比较方面:扩展,海量数据,数据模型,Web2.0;理论基础,查询,数据完整性,专业团队