什么是块存储
数据被存储在固定大小的块内。块内只存储数据本身;Address就是块唯一的识别信息;对于块存储,没有metadata. 当应用和数据都在本地的时候,性能会比较好;当应用和数据在地理位置上分离较远的时候,性能会较差。
常见的企业级块存储由SAN提供。
适用场景:
块存储适合用于事务型数据库。一个重要原因是块存储是强一致性的。
什么是对象存储
每个对象包括3个部分:
- 数据本身
- 可定制化的metadata,其类型和数量也没有限制
包括“数据是什么”的上下文信息、用途、安全信息、等等。 - 全局唯一标识符
对象存储特点:
- 易于扩展:所有对象都是平级的,没有等级关系;对象的数目没有限制
- 易于分类和搜索:因为metadata tags,所以对象是自描述的
适用场景:
- 易于搜索和易于扩展的特性,使得对象存储适用于存储非结构化的数据。比如,网盘存储的用户的音频、视频文件就是非结构化数据,因此,对象存储常常用来作为网盘的后端。
- 对象存储不支持增量地修改一个文件的某一个部分(而块存储支持)。组成一个文件的所有对象必须被当成一个整体来访问、更新、重写。这样会影响性能。因此,对象存储更适用于读多写少的场景。
对象存储的缺点:
对象存储是最终一致性的(块存储是强一致性的),因此,对象存储不能保证一次读请求返回的是最新版本的数据。(注:似乎Ceph是强一致性的,这里还有待再研究一下)
块存储与对象存储的差异
对象存储 | 块存储 | |
适合用场景 | 非结构化数据,尤其是读多写少的场景 | 结构化数据、事务型数据库 |
一致性 | 最终一致性 | 强一致性 |
扩展性 | 扩展无限制,可达PB级或更高 | 不易扩展 |
分析性 | 易于搜索与获取数据 | 因没有metadata,不易搜索与获取数据 |
存储位置 | 数据可以跨不同的地理位置存储 | 数据和应用的距离越远,性能越差 |
另外,操作系统可以直接将块存储作为挂载的卷进行访问,而对象存储则无法在不显著降低性能的情况下进行访问。 因为块存储(例如重新映射卷)的存储管理开销很小,而对象存储的存储管理开销较大。
(完)