什么是对象存储

时间:2020-03-21 11:48:44  来源:igfitidea点击:

在IDC数据中,90%是非结构化数据。
什么是非结构化数据?

“数据库以外的任何东西都可以称为非结构化数据.”嗯,这太笼统了。
非结构化数据通常不驻留在行和命名列中。
非结构化数据的问题在于,很难对其进行进一步分析以做出有意义的决定。

非结构化数据的一些示例包括音频文件,视频文件,图像文件,电子邮件等。
这些是我们每天都会使用的数据类型。
现在我们可以想象为什么非结构化数据占所有数据预测大小的90%。

从数据的角度来看,对象和文件之间没有太大区别。
主要优点是克服了文件系统存储大量数据的限制。
因此,如果我的文件系统中有文件,则将该文件上载到s3之类的对象存储中将使它成为具有唯一标识符的对象,以便以后更快地检索该对象。
当我阅读有关对象存储的内容时,大多数人都将其与停车罚单进行了比较。

当我们将车停在停车位时,那边的人将把车停下来并退还车票。
当我们不在时,汽车将可以转移到另一个位置,以容纳其他汽车,但是当我们将停车票交还给他时,负责它的人会把汽车还给我们。

与停车票类推类似,我们使用全局唯一标识符来唯一标识对象存储中的对象。
全局唯一标识符可以是数据的哈希值(哈希随着数据的变化而变化)。
但是我们作为人类,无法记住这些哈希值在以后的某个时间点检索对象。
因此,大多数公共云对象存储解决方案使用户能够在存储对象的同时定义自己的唯一标识符。
这是对象名称本身的大多数情况(基础对象存储可以维护一个数据库,该数据库将用户定义的对象名称映射到对象的哈希值以唯一地检索对象)

除了在平面名称空间中唯一,快速地标识对象之外,对象存储还为开发人员提供了另一个巨大的优势。
开发人员大多数时候在设计应用程序时需要一个数据库来存储有关特定文件的详细信息。
例如,我有一个应用程序,用于存储多个用户上载内容的电视连续剧的媒体文件。
我必须有一种方法来存储诸如系列标题之类的内容,如果该系列是一个多部分系列,那么它的对应部分,该系列的作者等等。
应用程序可能需要这些元数据才能显示给最终用户。

对象存储提供了一种在存储对象时包括用户定义的元数据(称为自定义元数据)的机制。
所有主要的公共云对象存储(S3,Google云存储,Azure,Openstack Swift等)都提供自定义元数据字段。
这些元数据分配有用户定义的名称值对,同时使用PUT/POST将对象存储在存储器中

下面提到的是有关对象和对象存储的一些要点。

  • 可以将一个对象及其所有元数据作为一个文件查看,全部打包在一个包中。
  • 存储在对象存储中的每个对象都有一个唯一的ID(该唯一ID主要取决于对象的内容),但是为了用户和应用程序的简便性,用户可以命名自己的对象ID。
  • 使用对象的唯一ID从对象存储中检索对象
  • 对象存储在平面名称空间容器中
  • 对象绝不限于元数据的类型或者数量
  • 容器中的对象可以是本地对象,也可以是远程对象。
  • 在将对象存储在对象存储中的同时,还可以使用相应的元数据来完成数据保护级别,复制级别,将对象移动到其他存储层等操作

对象存储使用的硬件和存储方法如何?

我没有关于前面讨论的大多数公共云存储的任何内部体系结构细节。
但是像开放堆栈swift这样的开放源代码对象存储解决方案可以为我们提供有关构建类似大型体系结构的深入思路。
Open Stack Swift提供了几乎所有企业公共云存储解决方案所提供的所有功能。

任何需要无限制扩展的大型存储架构都需要基于集群分布(因为扩展既需要存储又需要计算能力)。

Gluster是一种可以扩展到Peta字节级别的基于文件的存储。
即使是基于分布式集群的存储,其中添加更多存储节点也将增加存储容量以及处理能力。
如果我们是gluster的新手,我建议通过以下文章。

阅读:什么是Gluster文件系统及其工作方式

就对象存储的硬件而言,主要是基于普通商品服务器及其自身直接连接的存储设备。
与gluster相似,在商品服务器上添加更多存储节点可以增加对象存储的存储空间以及性能(这就是为什么有时将其称为线性扩展解决方案的原因)。

是的,我们可以在这些商用服务器上使用RAID阵列为存储节点添加另外级别的保护。
但这将增加成本。
具有常规直接连接存储设备的商品硬件是最好的,因为对象存储体系结构本身提供了多个级别的冗余,并将对象存储在多个存储节点中。

相关:什么是RAID,以及不同级别的RAID工作方式

开放堆栈快速使我们甚至可以在数据中心级别保护对象。
换句话说,多个数据中心将具有数据的相同副本,并且可以承受包含存储节点的整个数据中心的故障。

因此,作为硬件要求的脚注,对象存储不需要构建任何特殊的硬件(仅需要具有内部存储的商品服务器)。
而且,对象存储的大多数实现仅是一种软件(将多个单独的硬件节点结合在一起,以便在单个/多个对象容器内进行计算和存储)

与不同设备的兼容性

在任何操作系统上运行的任何应用程序都可以使用RESTfull API轻松访问数据对象。
简而言之,依赖于操作系统的文件系统存储方法不再是对象存储的概念。
此外,对象存储提供的安全级别允许我们定义每个对象的安全性。

使用对象存储系统,我们可以将对象定义为可公开访问的对象,在该对象上可以使用任何设备上的简单Web浏览器下载或者访问该对象。
由于其基于HTTP方法,因此在访问它时不存在兼容性问题。

对象存储的用例

  • 对象存储的主要用例是出于存档目的(数据存储为备份)。
  • 它不太适合数据库存储,也不适合数据库
  • 我们不能使用对象存储来引导操作系统。
  • 如果需求是无限增长,那么没有什么可以击败基于对象的存储
  • 它是应用程序而非操作系统的存储
  • 具有多个副本的节点级和数据中心级复制(全部通过元数据完成)
  • 一个名称空间可能会跨越不同的地理位置。