对象存储(BLOBs)在系统设计中的解释
2024/9/29 21:02:33
本文主要是介绍对象存储(BLOBs)在系统设计中的解释,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
对象存储是一种专门设计用于处理大量非结构化数据的存储类型。
如果你正在为云设计系统或处理大规模数据集,那么你就需要使用某种对象存储。
这些服务包括:
- Amazon S3— 可能是最流行的一个,S3 是一种简单存储服务,用于存储大量文件并快速检索它们。
- Google Cloud Storage— Google Cloud 提供了一个名为 Google Cloud Storage 的对象存储服务。
- Azure Blob Storage— Azure 也提供了一个名为 Azure Blob Storage 的服务。
如你所见,一些服务,比如 Azure,也将其称为 BLOB 存储,即 二进制大对象。
什么是对象?所以,对象到底是什么呢?它其实就是一段数据。它可以是一张图片、一段视频,甚至是一整个虚拟机。
并且每个对象都带有一些基本信息:
- 数据: 您实际存储的二进制内容。
- 唯一标识符: 对象在存储系统中的地址。
- 元数据: 关于对象的信息(文件名、类型、大小、创建日期等)
但我们为什么不用数据库来存储这些大文件呢?
好吧,我们仍然使用数据库来存储这些图像或视频文件的URI以及一些元数据,但实际文件是存储在对象存储中的。
如果你把一堆大文件放进数据库里,那会引发性能问题,我们的查询执行速度会变慢。
关于文件系统呢?我们能否将这些图片和视频存储在类似Google Drive或OneDrive的文件存储中?或者我们将它们存储在我们服务器的文件系统中并从那里读取?
文件系统非常适合本地存储和组织,但它们不像对象存储那样容易扩展。
为什么?——因为文件系统具有层次结构,意味着它们像树一样由文件夹组成,而对象存储则是扁平且无结构的——这使得它们在文件检索方面具有高度可扩展性和快速性。
所以,这是否意味着对象存储中没有文件夹?
许多平台如 AWS S3 通过在对象名称中使用分隔符(例如,“photos/vacation/beach.jpg”)提供一种“文件夹”体验——这意味着它们使用正斜杠来分割对象路径,并将其表示为文件夹。
但这只是一个为了便于使用的错觉——实际上,在对象存储中并没有文件夹。
正如我们所见,每个对象都会获得一个唯一的标识符(可以将桶视为对象的容器)。这个标识符通常在桶(你的对象容器)内以及特定的存储服务(如Amazon S3)中是唯一的。
然而,由于桶名必须在所有 AWS 账户中唯一,因此你的对象名在全球范围内是唯一的,而不仅仅是你在桶内的唯一。
大多数对象存储提供了与对象交互的RESTful API。你可以发送HTTP请求(PUT、GET、DELETE)来操作数据。
例如,你可以通过发送 POST 请求或将对象直接上传到 AWS 平台上来上传对象到 S3 存储。
同样,你可以通过发送 GET 请求或使用 AWS 控制台来读取你上传的对象。
然而,编辑通常是通过用新版本替换整个对象来完成的。这与文件系统不同,在文件系统中,你可以就地修改文件的部分内容。
要编辑对象存储中的文件,您通常会使用 DELETE 请求删除该文件,然后使用 POST 请求创建一个更新后的文件。
此外,还有许多库和SDK可以使用不同的编程语言使此过程更简单。
总之,对象存储旨在提高速度 — 它能根据对象的标识符快速定位对象。
此外,许多对象存储使用 分布式架构 来在多个存储节点之间分配流量。
经常访问的对象会被存储在更快的内存(缓存)中,以便更快地检索。
许多对象存储平台提供了诸如签名的URL和签名的cookie之类的安全功能来控制对您对象的访问。如果您想了解更多关于这些功能的工作原理,请关注我即将发布的文章。
更多免费教程请访问 Web Dev Mastery 社区。
这篇关于对象存储(BLOBs)在系统设计中的解释的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23Fluss 写入数据湖实战
- 2024-12-22揭秘 Fluss:下一代流存储,带你走在实时分析的前沿(一)
- 2024-12-20DevOps与平台工程的区别和联系
- 2024-12-20从信息孤岛到数字孪生:一本面向企业的数字化转型实用指南
- 2024-12-20手把手教你轻松部署网站
- 2024-12-20服务器购买课程:新手入门全攻略
- 2024-12-20动态路由表学习:新手必读指南
- 2024-12-20服务器购买学习:新手指南与实操教程
- 2024-12-20动态路由表教程:新手入门指南
- 2024-12-20服务器购买教程:新手必读指南