在处理庞大的数据集合时,你一定不想要耗费大量系统资源来检索所有的文件才查找得到你想要的信息。对象存储,与其特有的识别符,很大程度上简化了这个过程。

在对象存储体系架构的最底层,所有的数据仍以块存储的形式加以存放。对象存储作为块存储的上层,包含了数据(即包含所存储信息详细描述的元数据)以及独有的识别符,将其封装成为特定的对象。由于对象存储的逻辑结构位于块存储之上,它与下层的硬件层无关,于是便可使用任何x86处理器、内存、磁盘驱动器以及固态闪存,而不需要专属硬件来支持特定的对象存储。事实上,绝大多数对象存储都运行在消费级的产品上,或使用白壳机配合硬件与固态闪存。

一个对象存储体系架构通常包含了海量的元数据。常见的元数据包括安全策略,即诸如控制对象访问权限以及对象加密与否的信息、数据保护政策或管理策略。

对象并不会像文件存储或NAS中的文件那样用索引来组织;相反,它们只需存储在非等级寻址空内(Fat Address Space)。对象的定位与操作经由其独特的识别符与元数据完成。这与传统的数据块存储截然不同,在块存储中,数据被放置在系统中实际物理存储的位置,或者文件位置可以通过集中化的文件目录重新指向。

对象存储更适合于大型的数据集合

对象存储体系架构中的非等级寻址空间使其较传统的NAS或SAN 存储系统更适合大型数据的存储。NAS系统中单一文件的检索会涉及到一次详细搜索——通常被称为文件遍历(File Crawl)——完整的索引才能找出某个文件。该过程消耗了文件系统的大量资源,会影响到所有的读写操作,而且系统耗费的时间会随着文件系统的扩展而显著提升。随着系统存取需求提高以及文件数量的增大,文件索引的方式会在某个时刻到达瓶颈。

对象存储的检索明显会来得更快,因为其只会搜索唯一识别符和元数据。由于不需要遍历整个文件系统或索引,对象存储的扩展性更强,对性能的影响则更低。

绝大多数的对象体系架构在标准的RESTful应用程序接口之外都有相应的文件接口,例如NFS、SMB以及Hadoop分布式文件系统(HDFS)。这使得对象存储可以像NAS那样读写数据,同时保持自身的优势。HDFS接口使得对象存储成为Hadoop方案中更具成本效益的体系架构。

对象存储的上述差异性使其更为以下多种应用环境中更具成本效率的方案,包括了:

冷热数据的归档

检索

分析

备份

合规文档

社交媒体

文件分享

云存储

用简单构想一下就能理解为什么对象存储会成为大部分云存储供应商的首选数据存储模式,包括Amazon的Web Services、Google、IBM的SoftLayer、Microsoft的Azure和其它许多服务商。

对象存储提升了数据保护等级

对象存储中的海量元数据与非等级存储池结构使其成为纠错码的理想选择。纠错码需要相当多的元数据,但其比传统RAID方式来防护磁盘或硬件故障更加经济且更具弹性。纠错码将数据松散地分解存储在一系列对象中,称之为数据宽度(Width)。阅读取回数据只需要找到数据宽度的一个子集,称之为数据广度(Breadth)。当数据广度可以被读取到时就代表着元数据可以被访问到,这时便无需获取到整个数据宽度来得到完整的数据。

假如不能阅读到所有的对象说明在读取过程中发生了错误。数据本身并不受影响。这时会重新创建新的对象来替代那些读取失败或无法找回的部分。在占用冗余存储量角度看,纠错码比RAID或镜像复制更有效率。

随之多处硬件并发故障的情况日益增多,所需的保护等级也逐渐提升。这里举一个例子,假如数据需要足够的容错性来防止6个硬件同时出错的情况,用多镜像复制的方式需要7倍的复制量,即占用额外600%的冗余存储空间;RAID压根无法提供7位的奇偶校验,你最多只能选择RAID 6来实现三重校验并对整个RAID进行镜像复制。这种配置方式需要大致2.5倍的复制量,即占用额外150%的冗余空间。此外,这还会大幅降低存储性能,尤其在发生重构的时候。对象存储体系架构用纠错码的方式,20位的数据广度占用26位的数据宽度,或者要性能更好的话,用16位的数据宽度代表10位的数据广度,这会占用额外30%~60%的存储空间,即1.3到1.6倍的冗余量。在达到同样硬件保护级别上这是巨大的成本差异。