对象存储是一种将数据作为对象进行管理的计算机数据存储体系结构,与其他存储体系结构以及将数据作为块和扇区内的块进行管理的块存储相对。每个对象通常包括数据本身,可变数量的元数据和全局唯一标识符。
对象存储(Object Storage)是一种将数据作为对象进行管理的计算机数据存储体系结构,与其他存储体系结构(例如将数据作为文件层级管理的文件系统)以及将数据作为块和扇区内的块进行管理的块存储相对。每个对象通常包括数据本身,可变数量的元数据和全局唯一标识符。
对象存储可以在多个级别实现,包括设备级别(对象存储设备),系统级别和接口级别。在每种情况下,对象存储都试图实现其他存储架构无法解决的功能,例如可以由应用程序直接编程的接口,可以跨越多个物理硬件实例的命名空间,以及数据管理功能,如数据复制和数据分发在对象级粒度。
相比于数据库这种面向结构化数据存储的技术,对象存储主要面向存储大量的非结构化数据,通俗来说,我们日常生活中生成的照片、视频、音频、文档等都属于非结构化数据。这些日常产生的数据都适合存储在对象存储中。
使用方式
我们常规使用的存储设备比较直接,例如移动硬盘插到电脑上就能存资料进去,NAS 设备的 CIFS/Samba 共享只要通过网上邻居就能访问。相比之下,对象存储要复杂一些,通常需要通过 RESTFul API 进行访问。不懂开发也不要紧,像亚马逊 AWS S3 这样知名度非常高的对象存储服务,既有官方提供的客户端,也有第三方提供的和客户端可以供我们使用。
对象存储是用来描述解决和处理离散单元的方法的通用术语。对象在一个层结构中不会再有层级结构,是以扩展元数据为特征的。
基本定义
对象存储,也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。
就像文件一样,对象包含数据,但是和文件不同的是,对象在一个层结构中不会再有层级结构。每个对象都在一个被称作存储池的扁平地址空间的同一级别里,一个对象不会属于另一个对象的下一级。
文件和对象都有与它们所包含的数据相关的元数据,但是对象是以扩展元数据为特征的。每个对象都被分配一个唯一的标识符,允许一个服务器或者最终用户来检索对象,而不必知道数据的物理地址。这种方法对于在云计算环境中自动化和简化数据存储有帮助。
对象存储经常被比作在一家高级餐厅代客停车。当一个顾客需要代客停车时,他就把钥匙交给别人,换来一张收据。这个顾客不用知道他的车被停在哪,也不用知道在他用餐时服务员会把他的车移动多少次。在这个比喻中,一个存储对象的唯一标识符就代表顾客的收据。
由于对象存储将遍布于很多节点且最新的数据并非总是可用,这将成为对象存储最终一致性的问题。 所有的数据存储都涉及到简称为 CAP 的三个元素:一致性、可用性和分区。 如果只是执行了写操作从而改变了一个对象,但有人正在从另外的节点访问这个对象。节点可能会在不同的物理位置,因为对象存储支持很大的地理扩展。新用户可能正在读取对象,但那是旧版本。这就是对象存储的最终一致性问题,此时并没有及时的同步。 这将成为问题,特别是利用对象存储做协同的时候,厂商为保证对象存储的一致性做了很好的工作,像是 Joyent 以及他的 Manta 存储服务,一旦对象更改将不支持读取旧的内容。你必须等待,但你所读取的内容会是一致的。
迁移访问
企业对存储的诉求有一定的延续性,但其访问的介质不外乎是主机、PC、移动端以及应用,针对不同的访问介质来看,面向对象存储的解决方案也有所不同。然而如果应用软件不支持 HTTP 下 REST API 的方式,需要以传统文件服务器协议的方式访问,则需要在面向存储对象前面加一个网关进行协议的转换。
没有了文件存储系统中的 NFS 或 CIFS 来给应用提供数据,面向对象的存储系统需要替换掉位于磁盘上的原始数据块和应用可以理解的文件之间的这个抽象层。面向对象的系统使用类似 REST 标准的 API 或者私有的 API 来告诉应用如何存储和读取对象标识。
总体而言,对于面向对象的存储的操作的本质并不会改变。开源对象存储系统 O 基本上就是 POST,GET ,PUT 和 DELETE 操作,如果需要上传大量的数据,则需要编写一个脚本就可以实现。
平台选择
基本上有四个选择:
1.从当下各种厂商处购买完整功能的对象存储平台。
2.购买对象存储软件并将其安装在你选择硬件上(服务器和存储)。
3.在选择的文件和块存储整列中安装软件,这个阵列对现有存储增加了对象接口。
4.使用网关解决方案连接现有应用到公有云。
使用方式
对象存储根本上改变了存储蓝图。它处理和解决了曾经被认为是棘手的存储问题:不间断可扩展性、弹性下降、限制数据持久性、无限技术更新和成本失控。存储专家对其潜在的优势感到兴奋,尤其是他们的绝大多数数据都碰巧是被动的或者是冷数据。
对象存储的本地应用程序接口是一个 RESTful API。RESTful 本质上是 HTTP 输入和输出,或者是互联网语言。这个语言对于 Web 浏览器是本地化的,但是对于大多数 IT 应用并非如此。这也为这个问题提供了一个答案,对 RESTful API 是一种检验,检测其变化、标准、事实标准以及在本地使用有哪些必须要做的事情,以及有哪些现成的软件可以实现。
最佳的方式就是通过 RESTful API 使用对象存储系统。它是一个本地接口,具备最低延迟和最快的响应时间,能够同大多数的控制。