对象存储是一种用于非结构化数据的灵活并且可扩展的云存储模式。
阅读本文后,您将能够:
复制文章链接
对象存储是一种将大量数据保存在云中的方法,尤其是非结构化数据。商业活动产生的大部分数据都是非结构化数据 — 包括日志、视频和照片内容、传感器数据和网页等等。对象存储跨多个云服务器保存这些数据,其中,每个文件或数据段都是自己的对象,结合元数据和唯一的名称或标识符可以进行数据检索。
传统的基于文件的层次结构将对象存储在文件夹中,对象存储并不是这样,它会将所有对象一起存储在一个“数据湖”(也称之为“数据池”)中。因此,对象存储可以非常快速地存储大量数据,就像打包旅行时,将衣服塞进袋子里比仔细地将衣服叠好并分类放入行李箱中要快。
对象存储可以包含几乎无限的数据。此外,它也比其他一些可用的云存储方法更具成本效益。然而,在数据被存储后,访问数据的成本(被称为“数据出口”)有时极高,具体取决于供应商。
一般来说,要进行云计算,就要向云供应商租用计算能力和存储空间,而不是使用本地服务器和计算机。简单来说,云存储就是将数据存储在云供应商的基础设施上,而这些基础设施可能存在于一个或多个远程物理位置。
在云存储背景下,一个对象就是数据的一个单位。一个对象可以是任何格式和任何大小。照片、音频文件、网络日志和电子邮件都可以作为一个对象来存储。
与典型的台式电脑本地存储,或基于云的文件存储不同,对象存储不被分类到文件夹中。没有一个层次路径可以到达每个对象;对象可以通过各种路径到达。如果杰里在他的电脑 C:驱动器中保存了一张鱿鱼的照片,他可能会将其保存在一个名为“Photos”(照片)的文件夹中,并在一个名为“Squid Pictures”(鱿鱼照片)的子文件夹中。为了稍后看到这张照片,杰里需要打开 C:,然后打开“Photos”(照片),再打开“Squid Pictures”(鱿鱼照片),然后是照片本身。杰里到达照片的路径如下:
桌面电脑 --> C: -->“Photos”(照片)-->“Squid Pictures”(鱿鱼照片)--> 打开照片
但是,如果杰里的计算机是以对象存储的方式运行,他会使用关于鱿鱼图片的元数据 — 也许是文件的名称、拍摄日期或其精确尺寸 — 来在以后找它。他不会遵循像上面那种结构化的路径,而是可以直接找到并打开文件:
桌面电脑 --> 搜索照片 --> 打开照片
这更像是对象存储的工作方式。对象可以直接被访问,而不是被存储在一系列的子文件夹中;它们都被一起存储在一个数据湖中(定义见下文)。
对象存储的其他关键组成部分包括:
元数据:元数据是一个文件的相关信息,比如它的名字、类型或大小。元数据的使用有助于将对象存储与块存储 — 另一种云存储方法 — 区分开来。由于对象存储是非结构化的,因此元数据可以随心所欲地扩展并且可以采用任何形式。例如,杰里可以为他的鱿鱼照片分配任何数量的元数据标签,以确保他以后能迅速找到这张照片。他甚至可以给它分配一个独特的数字,或一个“独特的标识符”。
唯一标识符:唯一标识符是为对象存储中的每个对象分配的一个字符串(一串字符),以便以后可以更快地查询和检索该对象。
数据出口:当对象存储客户要求加载或访问一个对象时,存储提供商必须通过网络将其传输给客户。这个过程被称为数据出口。许多对象存储供应商对读取存储的数据收取高额费用,这可能使对象存储对许多企业来说成本效益降低。
数据湖,或数据池,是一个非结构化数据的集合,其规模可以根据需要而定。数据湖可以存储任何数量的数据。数据湖中的数据在进入湖中之前不需要被放入一个结构中,不需要重新格式化,不需要压缩,也不需要对其做任何其他处理 — 就像现实世界中的水可以从多条河流和小溪进入湖中,而且是固体,也可以是液体。
Blob 存储是对象存储的一种类型。它可以存储二进制大对象(俗称“blob”),工作原理类似对象存储。Blob 不需要遵循特定的格式,也不需要有任何与之相关的元数据。它们是一系列字节,每个字节由 8 位组成(一个 1 或一个 0,由此得到“二进制”描述符),任何类型的数据都可以放在 blob 中。
对象存储可能适用于任何产生大量数据的活动。如果数据不需要经常被访问,则更是如此。包括以下示例:
对象存储往往具有以下特性:
数据出口费可以抵消对象存储的成本优势。这篇博文很好地分析了对象存储供应商有时是如何对访问存储对象收取高额费用的。
对象存储的性能可能比较慢,特别是数据检索。块存储的设计可以更快地加载所请求的数据,但它的成本往往也相应更高。
Cloudflare R2 是不收取出口费用的对象存储,这使得它比许多其他云存储选项更实惠。Cloudflare R2 与 Cloudflare 的全局 CDN 结合可以实现最大性能。它还可以与 Cloudflare Workers 结合,以增强决策和定制请求路由。进一步了解 R2 对象存储。