什么是分布式存储系统?分布式存储系统是大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务,具有可扩展、低成本、高性能、易用、挑战等特性。
分布式存储系统的挑战主要在于数据、状态信息的持久化,要求在自动迁移、自动容错、并发读写的过程中保证数据的一致性。分布式存储涉及的技术主要来自两个领域:分布式系统以及数据库。
数据分布
一致性
容错
负载均衡
事务与并发控制
易用性
压缩/解压缩
分类:
非结构化数据,一般的文档。
结构化数据,存储在关系数据库中半结构化数据,HTML文档。
不同的分布式存储系统适合处理不同类型的数据:
分布式文件系统:
非结构化数据,这类数据以对象的形式组织,不同对象之间没有关联,这样的数据一般称为Blob(二进制大对象)数据。
典型的有Facebook Haystack 以及 Taobao File System。
另外,分布式文件系统也常作为分布式表格系统以及分布式数据库的底层存储,如谷歌的GFS可以作为分布式表格系统Google Bigtable 的底层存储,Amazon的EBS(弹性存储块)系统可以作为分布式数据库(Amazon RDS)的底层存储。
总体上看,分布式文件系统存储三种类型的数据:Blob对象、定长块以及大文件。
分布式键值系统:
较简单的半结构化数据,只提供主键的CRUD(创建、读取、更新、删除)。
典型的有Amazon Dynamo 以及 Taobao Tair。
分布式表格系统:
较复杂的半结构化数据,不仅支持CRUD,而且支持扫描某个主键范围。
以表格为单位组织数据,每个表格包括很多行,通过主键标识一行,支持根据主键的CRUD功能以及范围查找功能。
典型的有Google Bigtable 以及 Megastore,Microsoft Azure Table Storage,Amazon DynamoDB等。