如今的组织会生成并处理海量的非结构化数据。这些数据涵盖了各种类型,从图片和视频到备份、日志文件和用于分析的大型数据集等等,不一而足。要有效地存储、管理和访问这些多样化且通常非常大型的文件,需要专门的存储解决方案。二进制大型对象 (BLOB) 存储已成为应对这些挑战的关键技术,它提供了一种可伸缩且经济高效的方式来处理非结构化数据。
二进制大型对象存储系统旨在实现大规模扩缩和高持久性,有助于提高成本效益,帮助用户存储大量非结构化数据。
要充分了解二进制大型对象存储,首先需要定义其核心组件:对象存储和二进制大型对象 (BLOB) 本身。
对象存储是一种数据存储架构,它将数据作为独立的单元(称为对象)来进行管理。文件系统以分层目录结构(文件夹和文件)组织数据,块存储以固定大小的数据块形式管理数据,对象存储系统则不同,它将每条数据视为一个独立的对象。
每个对象通常包含以下部分:
BLOB 是二进制大型对象 (Binary Large Object) 的缩写,指的是以单个实体形式存储的二进制数据集合。“二进制”一词意味着数据可以是任何类型,并不局限于文本或特定格式。它可以是可执行文件、图片、音频或视频内容、压缩包、数据库备份,也可以是任何其他类型的数字信息。名称中的“大型”一词表示 BLOB 通常用于存储特别大的文件,这些文件太大,无法与结构化数据一起方便高效地直接存储在传统数据库字段中。
因此,二进制大型对象存储本质上是将这些 BLOB 以单独对象的形式存储在对象存储系统中。例如,您不会直接将大型视频文件嵌入到数据库记录中,而是将视频文件存储在对象存储系统中,然后在数据库中存储对该 BLOB 的引用(对象的唯一标识符或网址)。
使用二进制大型对象存储的过程通常涉及几个关键步骤,这些步骤由对象存储系统提供支持:
当用户或应用需要存储大型二进制文件时,会通过 API 调用(通常是基于 HTTP/S 的 RESTful API)将数据和任何相关元数据发送到对象存储系统。该存储系统会接收此数据。
对象存储系统会接收上传的二进制数据及其元数据,并将它们封装成一个“对象”。然后,它会为这个新对象分配一个唯一标识符。此标识符至关重要,因为稍后将通过它来寻址和检索对象。
该系统存储对象时,通常会在多个物理存储设备中,有时甚至会在不同的数据中心分发和复制对象。这种分布式方法可提高数据持久性(防范硬件故障)和可用性。具体的复制策略可能因所选的存储类别或提供商政策而异。
与 BLOB 关联的元数据已建立索引。这样,即使您有数十亿个对象,也可以根据对象的元数据标记来搜索对象或将其分类。
当用户或应用需要访问 BLOB 时,会使用对象的唯一标识符向对象存储系统发送请求。该系统会找到该对象,并将二进制数据流式传输回请求者。
对象存储系统提供了一些机制来控制谁可以读取、写入或删除 BLOB。这通常通过身份和访问权限管理 (IAM) 政策、访问控制列表 (ACL) 或授予临时访问权限的签名网址来进行管理。
采用二进制大型对象存储在管理非结构化数据方面具有显著优势:
可伸缩性
对象存储系统可以扩展到 EB 级及以上,以容纳大量数据和对象。这使得它非常适合生成大量数据的应用。
成本效益
在传统的高性能文件系统或数据库中存储大量不常访问的数据可能会花费高昂的成本。对象存储通常提供分层选项,可以根据访问频率和耐用性要求而收取不同的费用,这有助于优化成本。
耐久性和可用性
领先的对象存储服务通常可以通过在多个设备或地理位置冗余存储对象,来提供高水平的数据持久性。这可以最大限度地降低因硬件故障导致数据丢失的风险,并支持高可用性。
丰富的元数据
能够将广泛的自定义元数据与每个 BLOB 关联,有助于更好地组织数据、更轻松地进行搜索,并提供更精细化的数据管理和分析功能。
简化了数据访问
通过标准 HTTP API 访问 BLOB 可简化与 Web 应用、移动应用和其他云服务的集成。每个对象的唯一标识符允许直接访问,而无需浏览复杂的文件路径。
解耦
将 BLOB 存储在数据库或应用服务器外部,可以提高这些主系统的性能和可伸缩性。数据库无需管理庞大而笨重的数据类型,应用可以卸载静态内容传送。
托管 BLOB 的对象存储服务通常提供不同的存储类别或层级,这些类别或层级按访问频率、检索时间和费用进行分类。这些层级可以帮助组织根据数据的使用方式优化存储费用。主要有以下几类:
专为需要低延迟和高吞吐量的频繁访问数据而设计。此层级适合活跃的网站内容、移动应用数据,或正在由分析工作负载积极处理的数据。它的存储费用通常较高,但有助于降低访问费用。
适合访问频率较低(例如,每月一次),但仍需在需要时随时可用的数据。与标准存储相比,它可提供更低的存储费用,但访问费用或每次检索费用可能会略高。此类别非常适合长期备份、需要偶尔快速访问的数据归档或灾难恢复文件。
专为长期数据归档、合规性和保留而构建,数据访问频率极低(例如,每年一次或更低)。此层级可提供较低的存储费用。检索时间可能更长,从几分钟到几小时不等,访问费用也可能更高。这可能适合法规归档数据或需要出于历史目的保留但日常运营不需要的数据。
有些提供商甚至为极少访问且可以容忍较长检索时间(例如,数小时)的数据提供更冷的层级。这些层级提供绝对最低的存储费用。
BLOB 存储具有多功能性和可伸缩性,因此适合各个行业的各种应用:
使用场景 | 功能 |
多媒体内容传送 | 存储和传送图片、视频、音频文件和其他富媒体,供网站、在线媒体服务和移动应用使用。 |
数据湖和分析 | 将来自各种来源的大量原始数据(结构化、半结构化和非结构化)以原生格式存储在数据湖仓中,用于大数据处理、机器学习模型训练和商业智能。 |
日志文件归档 | 存储应用服务器日志、安全日志和审核跟踪,用于问题排查、安全分析和合规性目的。 |
文档管理系统 | 存储和管理大量文档、PDF、扫描图片和其他业务记录。 |
静态网站托管 | 直接从对象存储区托管网站的静态资产(HTML、CSS、JavaScript、图片),这具有高度可伸缩性和成本效益。 |
软件分发 | 存储和分发大型软件包、更新和安装程序。 |
医疗保健数据管理 | 以安全合规的方式存储医学影像(X 光片、MRI)、患者记录和基因组数据。 |
科学研究 | 存储来自实验、模拟和传感器网络的大型数据集,以供分析和协作。 |
使用场景
功能
多媒体内容传送
存储和传送图片、视频、音频文件和其他富媒体,供网站、在线媒体服务和移动应用使用。
数据湖和分析
将来自各种来源的大量原始数据(结构化、半结构化和非结构化)以原生格式存储在数据湖仓中,用于大数据处理、机器学习模型训练和商业智能。
日志文件归档
存储应用服务器日志、安全日志和审核跟踪,用于问题排查、安全分析和合规性目的。
文档管理系统
存储和管理大量文档、PDF、扫描图片和其他业务记录。
静态网站托管
直接从对象存储区托管网站的静态资产(HTML、CSS、JavaScript、图片),这具有高度可伸缩性和成本效益。
软件分发
存储和分发大型软件包、更新和安装程序。
医疗保健数据管理
以安全合规的方式存储医学影像(X 光片、MRI)、患者记录和基因组数据。
科学研究
存储来自实验、模拟和传感器网络的大型数据集,以供分析和协作。
保护大型二进制对象非常重要,尤其是在处理敏感数据或关键任务数据时。有效的安全策略通常涉及多层安全保护:
加密
传输中加密对所有 API 请求使用 HTTPS (TLS/SSL)。静态加密可确保 BLOB 在存储时进行加密,并提供服务器端加密(提供方管理的密钥)或客户管理/提供的密钥(CMEK/CSEK)选项,以增强控制。
身份和访问权限管理 (IAM):
实施精细的访问权限控制政策来定义谁(用户、组或服务账号)可以对特定 BLOB 或 BLOB 集合(通常称为存储桶或容器)执行哪些操作(读取、写入、删除、列出)。遵循最小权限原则,仅授予必要的权限。
访问控制列表 (ACL)
ACL 可以帮助提供另一层控制,允许您为个别对象或存储桶向个别用户或群组授予特定权限。与大规模管理相比,它们可能更适合精细控制需求,为特定的详细权限设置提供精细的方法。
签名网址/预签名网址
对于需要向特定 BLOB 授予临时有限访问权限的场景(例如,允许用户下载他们购买的文件),签名网址是一种安全机制。这些网址授予有时间限制的权限,允许用户执行特定操作,而无需用户拥有完整凭证
版本控制
启用对象版本控制,以保留 BLOB 的多个版本。这可以防止意外覆盖或删除,因为您可以根据需要恢复以前的版本。
审核日志记录
启用审核日志记录,跟踪对 BLOB 和存储桶的访问请求和执行的操作。这有助于进行安全分析、生成合规性报告,以及识别任何未经授权的访问尝试。