什么是块存储

数据被存储在固定大小的块内。块内只存储数据本身;Address就是块唯一的识别信息;对于块存储,没有metadata. 当应用和数据都在本地的时候,性能会比较好;当应用和数据在地理位置上分离较远的时候,性能会较差。
常见的企业级块存储由SAN提供。

适用场景:
块存储适合用于事务型数据库。一个重要原因是块存储是强一致性的。

什么是对象存储

每个对象包括3个部分:

  • 数据本身
  • 可定制化的metadata,其类型和数量也没有限制
    包括“数据是什么”的上下文信息、用途、安全信息、等等。
  • 全局唯一标识符

对象存储特点:

  1. 易于扩展:所有对象都是平级的,没有等级关系;对象的数目没有限制
  2. 易于分类和搜索:因为metadata tags,所以对象是自描述的

适用场景:

  1. 易于搜索和易于扩展的特性,使得对象存储适用于存储非结构化的数据。比如,网盘存储的用户的音频、视频文件就是非结构化数据,因此,对象存储常常用来作为网盘的后端。
  2. 对象存储不支持增量地修改一个文件的某一个部分(而块存储支持)。组成一个文件的所有对象必须被当成一个整体来访问、更新、重写。这样会影响性能。因此,对象存储更适用于读多写少的场景。

对象存储的缺点:
对象存储是最终一致性的(块存储是强一致性的),因此,对象存储不能保证一次读请求返回的是最新版本的数据。(注:似乎Ceph是强一致性的,这里还有待再研究一下)

块存储与对象存储的差异

对象存储

块存储

适合用场景

非结构化数据,尤其是读多写少的场景

结构化数据、事务型数据库

一致性

最终一致性

强一致性

扩展性

扩展无限制,可达PB级或更高

不易扩展

分析性

易于搜索与获取数据

因没有metadata,不易搜索与获取数据

存储位置

数据可以跨不同的地理位置存储

数据和应用的距离越远,性能越差

另外,操作系统可以直接将块存储作为挂载的卷进行访问,而对象存储则无法在不显著降低性能的情况下进行访问。 因为块存储(例如重新映射卷)的存储管理开销很小,而对象存储的存储管理开销较大。

(完)