分布式存储系统是由大量廉价普通PC服务器通过Internet互联,对外作为一个整体提供服务的系统。它的规模大且成本低。
分布式存储系统的特性:
- 可扩展:分布式存储系统能扩展几百到几千台的规模,随着集群数量的提升,它的系统整体性能也有线性的提升;
- 低成本:由于分布式存储系统具有容错、负载均衡的能力,使其能构建在廉价服务器之上;
- 高性能:单台和整体的服务器性能优越;
- 易用:提供易用的对外接口,具备完善的监控、运维工具。
分布式存储系统挑战主要在于数据、状态信息的持久化,要求在自动迁移、自动容错、并发读写的过程中保证数据的一致性。
分布式存储技术来源涉及分布式系统和数据库,它要求实现:
- 数据分布均匀;
- 数据一致性;
- 容错能力;
- 事务与并发控制;
- 易用性;
- 负载均衡;
- 数据的压缩和解压缩问题;
分布式存储面临的数据大致可以分为三类:
- 非结构化数据:视频、图片等;
- 半结构化数据:Html文档等,模式结构与数据混在一起;
- 结构化数据:一般存储在数据库中,由二维结构表表示。
分布式存储系统可以分为四类:
- 分布式文件系统:例如GFS、Moosefs等;
- 分布式键值系统:例如Amazon Dynamo
- 分布式表格系统:例如Hbase,其存储依赖分布式文件系统;
- 分布式数据库:例如:OceanBase
分布式文件系统
分布式文件系统用于存储图片视频等非结构化数据。
分布式文件系统存储三种类型的数据:Blob对象、定长块、大文件。
在分布式文件系统实现层面,分布式系统内部按照数据块来组织数据。一个大文件可以分为多个数据块,一个数据块可以分为多个Blob对象或者多个定长块。
分布式键值系统
用于存储简单半结构化数据,它提供了基于主键的CRUD功能。
系统实现有Taobao Tair、Amazon Dynamo等。
它是分布式表格系统的简单实现,主要用处为缓存(例如memcache)。
一致性哈希是分布式键值系统中常用的数据分布式技术,被用在Amazon Dynamo上而变得有名。
分布式表格系统
分布式表格系统用于存储复杂半结构化数据,支持主键CRUD以及扫描主键范围。分布式表格以表格为单位组织数据,每行有主键标识。
分布式表格系统借鉴了关系数据库中的很多技术,主要应用于对单张表格的操作。但是不支持多表操作。
分布式表格不要求多个数据行包含相同类型的列。
分布式数据库
分布式数据库采用二维表格组织数据,提供SQL查询,多表操作以及事务和并发控制功能,它的主要应用有mysql数据库分片集群。
传统的关系型数据库以及二维关系模型很难高效扩展到多个存储节点上,其还存在高并发的性能问题。
为了解决关系型数据库扩展性、高兴发性能问题,引入了NoSql非关系型数据库(memcache)。