对象存储缺乏公认的定义

显然,对象存储对于不同的人意味着不同的事情,所以它缺乏一个公认的定义。要分析什么样的存储系统属于对象存储,就要看这些属性,它们既是必须的,同时又支持的很好。

对象。不是要管理块和文件,纯粹的对象存储系统管理的是对象。更精确的讲,所有现在的对象存储系统把文件作为对象来管理。对象通过唯一的ID进行标识,就像在基于文件的存储系统中,文件通过路径来标识一样。对象存放在扁平的地址空间中,这样可消除基于文件的存储系统中,分层的文件系统的复杂性和扩展性的挑战。

元数据。对象由元数据(可提供对象中数据的上下文关系信息)、有效负载和实际数据组成。在基于文件的存储系统中,元数据仅仅是指文件的属性;对象存储系统中的元数据可以添加任何客户化的属性。基于文件的存储系统要做到这一点,需要应用程序(数据库)处理文件相关的其它额外信息。利用客户化的元数据,你可以把和一个文件(对象)相关的所有信息都保存在对象自身内部。“客户化元数据允许建立丰富的、自包含的文件对象,可以存储在对象存储内部,能够以较少的管理开销建设大规模的非结构化数据存储,”Terri McClure说,马萨诸塞州米尔福德的企业策略集团(ESG)的高级分析师。

固定对象。纯对象存储代表一个固定内容的仓库;这意味着对象可以被创建、删除和读取,但不能被修改。相反,对象的修改是通过创建一个新版本的对象来实现的。因此,锁定和多用户访问的挑战——基于文件的存储系统所棘手的问题——在对象存储系统中是不存在的。“如果多个用户同时修改同一个文件(对象),对象存储系统会简单的生成这个文件的多个版本,”Tim Russell说,NetApp公司Data Lifecycle Ecosystem Group副总裁(VP)。不支持就地更新,使对象存储更加适合分布式的存储和分布式的访问。

冗余性。对象存储通过在多个节点上存储相同对象的多个副本实现冗余性和高可靠性。在创建对象的时候,它首先由一个节点创建,随后根据适当的策略复制到一个或多个其它节点。节点可以部署在同一个数据中心,也可以是地理上分开的。由于不支持就地更新,使得多节点副本对象冗余的复杂度很小。对于传统的存储系统,保留拷贝(复制)的文件和块的同步访问的多个实例是一个巨大的挑战;这是非常复杂的,只能够通过设置严格的限制条件实现,例如在定义好的延迟约束之内。

协议支持。传统的基于块和基于文件的协议在数据中心工作的很好,性能优良,延时也不是问题。但它们并不适合地理上分开的访问方式,且由于延时不可预知,所以也不适合构建云。此外,传统的文件系统协议(CIFS和NFS)利用TCP端口进行通信,这些只在内部网络可用,很少出现在互联网上。相反,对象存储通常通过基于HTTP协议的REST API访问。命令通过HTTP发送到对象存储的方式非常简便:put用来建立一个对象,get用来读取一个对象,delete用来清除对象而list用来列出对象列表。

应用软件支持与集成。由于缺乏传统的数据存储协议的支持,因此依赖REST API需要成为访问对象存储的一体化努力。除了客户化应用程序集成,一些商业应用,特别是备份和归档应用,已经增加了对于对象存储集成的支持,主要连接到 Amazon S3云存储。由于业界仍然在争论标准,对象存储的集成仍然没有得到广泛的推广。对象存储网关,通常叫做云存储网关,提供了另外一种访问对象存储的方式。其定位于传统存储和对象存储之间,它们通常通过预定义的策略构建在两者之间。

云功能。因为云存储和WEB 2.0应用是对象存储的核心目标,因此通过互联网进行共享访问的相关功能是非常重要的。多租户和不同用户数据的安全隔离,对于用于企业应用的对象存储产品是必须的功能。安全性不仅仅是指加密,还包括对于租户、命名空间以及对象访问的控制。服务水平协议(SLA)管理和支持多种服务级别对于云的使用也非常重要。策略引擎可以帮助SLA的执行,例如对象实例的数量和每个实例应该存储到哪里,这是一个任何对象存储都应该提供的设备。此外,使用云的计量和收费的自动跟踪是必不可少的。

用例。纯粹的对象存储并不适合用于交易数据频繁变化的情况,例如数据库。它也没有设计成用来替代NAS的文件共享;它只是简单的做到了没有锁机制,而且通过提供文件的多个不同的版本实现单个“真实”文件的共享。对象存储在经常变化的非常大的非结构化数据存储中工作的非常好,也可作为不活跃数据的交易存储层之外的存储层,或者是归档存储。在云空间中,它适合用于文件内容,特别是图像和视频。“今天,对象存储适用于媒体、娱乐和医疗行业等后处理类型的数据,包括归档,”Jeff Lundberg说,他是日立数据系统公司(HDS)的高级产品市场经理。“而随着性能的不断提升和功能的不断完善,它不仅仅可以支持云存储,而且会适用于分散的IT环境。”