相关书籍:《大规模分布式存储系统:原理解析与架构实战》
1. 分布式存储概念
分布式存储系统是大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务。
特性:可拓展、低成本、高性能、易用。
挑战:数据、状态信息持久化;数据一致性。
涉及到的技术:数据分布、一致性、容错、负载均衡、事务与并发控制、易用性、压缩/解压缩。
2. 分布式存储分类
数据类型:非结构化数据、结构化数据、半结构化数据。
系统类型:分布式文件系统、分布式键值(Key-Value)系统、分布式表格系统、分布式数据库。
2.1 分布式文件系统
存储数据种类:Blob对象(对象之间无关联,如图片、照片、视频)、定长块、大文件。
常用作分布式表格系统和分布式数据库的底层存储。
系统内部按照数据块(chunk)来组织数据,每个数据块的大小大致相同,每个数据块可以包含多个Blob对象或者定长块,一个大文件也可以拆分为多个数据块。
2.2 分布式键值系统
存储关系简单的半结构化数据,只提供基于主键的CRUD。
分布式键值系统是分布式表格系统的简化实现,一般用作缓存。
常用数据分布技术:一致性哈希(一致性哈希原理)
2.3 分布式表格系统
存储关系较为复杂的半结构化数据。
以表格为单位组织数据,通过逐渐标识一行,支持根据主键的CRUD功能以及范围查找功能。
支持单行事务、某个实体组(Entity Group)下的多行事务。
和分布式数据库相比,分布式表格系统主要支持针对单张表格的操作,不支持复杂操作如多表关联、多表联接、嵌套子查询;同一个表格的多行数据不要求包含相同类型的列,适合半结构化数据。
2.4 分布式数据库
存储结构化数据。
采用二维表组织数据,提供SQL查询语言,支持多表关联、嵌套子查询,数据库事务及并发控制。
可扩展性的挑战:二维关系模型很难高效地扩展到多个存储节点;对于要求高并发的应用在性能上优化空间较大。