【数据库中的存储桶】

        存储桶是对象存储系统中的一个核心概念,起源于Amazon S3(Simple Storage Service)并被其他对象存储解决方案(如MinIO、Google Cloud Storage等)广泛采用。在传统的文件系统中,我们通常使用目录和子目录来组织文件。但在对象存储系统中,存储桶充当这样的角色,作为数据的逻辑容器。

在云计算中,Bucket是一种用于存储云数据的容器,可以用于存储图片、视频、音频等各种类型的数据。

每个“桶”由两部分组成:一个存储数据的部分(Data Fields)和一个“指针”(Bucket Pointer),用来指向下一个“桶”(Nested Bucket)。

在数据库中,“桶”通常分为两类:数据“桶”(Data Bucket)和索引“桶”(Index Bucket)。其中数据“桶”用来存储数据库中的实际数据,而索引“桶”则存储数据在数据库中的索引信息。

桶对象存储(如Amazon S3、阿里云OSS、腾讯云COS等)使用扁平化结构来存放对象,这是指在这些存储服务中,对象(如文件、图片、视频等)是直接存储在一个“桶”(Bucket)中的,并没有传统文件系统中的目录(文件夹)层级结构。

在扁平化结构中,每个对象都有一个唯一的键(Key),这个键用于在桶中唯一标识和定位对象。这个键可以包含类似路径的分隔符(如/),但这只是键的一部分,并不表示真实的目录结构。对象存储系统并不会根据键中的分隔符来创建实际的目录或文件夹。

例如,如果你有一个键为folder1/folder2/image.jpg的对象,这并不意味着在桶中有一个名为folder1的目录,该目录下又有一个名为folder2的子目录,子目录中存放着image.jpg文件。实际上,folder1/folder2/image.jpg只是该对象在桶中的唯一标识符,你可以通过这个键来访问和下载这个对象。

这种扁平化结构的设计带来了几个好处:

  1. 简单性:不需要维护复杂的目录结构,使得对象存储系统更加简单和高效。

  2. 可扩展性:由于没有目录结构的限制,可以轻松地存储和访问数十亿个对象。

  3. 灵活性:可以通过在键中使用分隔符来模拟目录结构,方便数据的组织和管理。

然而,也需要注意,由于扁平化结构中没有真实的目录结构,因此在对象存储系统中进行批量操作(如删除某个目录下的所有对象)可能会更加复杂,通常需要遍历桶中所有对象并匹配相应的键来实现。

简单解释

存储桶是用于组织和管理在对象存储服务中存储的数据(即对象)的逻辑单位。它相当于一个高度可配置和可扩展的“文件夹”。与传统的文件夹不同,存储桶可以拥有更多的元数据和访问控制策略。每个存储桶都有一个全局唯一的名称,并且通常用于存放一组相关的数据。

场景:图片存储和分发服务

背景

假设你正在运营一个社交媒体平台,需要存储用户上传的大量图片。这些图片包括用户头像、帖子图片和评论中的媒体内容。由于流量巨大,你需要一个高性能、可扩展和成本有效的存储解决方案。

技术选型

在这种情况下,对象存储(例如Amazon S3或MinIO)会是一个很好的选择,相对于传统的文件系统或关系数据库。对象存储优于文件系统在于其可扩展性和元数据管理,优于关系数据库在于成本和对大文件的处理能力。

存储桶的角色

你可以创建一个名为 UserMedia的存储桶来专门存储所有用户媒体文件。这个存储桶内部不会有传统意义上的文件夹结构,但你可以通过对象键(Object Key)模拟目录结构。例如,头像可以存储在 avatars/用户ID.jpg这样的键下。

配置与策略

存储桶 UserMedia可以配置多种访问控制策略,例如仅允许特定服务进行写操作,或设置CDN(内容分发网络)以加速图片加载。这些配置都可以直接在存储桶级别进行,无需为每个文件单独设置。

与其他技术的互动

  • CDN:你可能会使用内容分发网络(如Cloudflare或Akamai)与存储桶结合,以更快地向用户分发媒体。

  • 数据库:用户的元数据(如图片的标题或标签)可能存储在一个关系数据库(如MySQL)中,其中会存有指向存储桶中特定对象的引用。

通过这个场景,你可以看出存储桶不仅仅是一个“文件夹”,而是一个功能丰富、高度可配置的数据存储单位,能与多种其他技术协同工作。

有的云存储服务或框架不支持事务,这就意味着下载文件或目录到本地时这个过程不是以事务的方式执行的,如果下载过程中出现错误(网络中断、存储桶中的文件被删除或修改),不会提供像传统数据库一样的回滚或恢复机制来确保数据的一致性。

回顾一下事务的概念,ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

在数据库和许多其他系统中,事务是一个作为单个逻辑单元执行的工作单位。它要么完全执行,要么完全不执行,从而确保数据的完整性和一致性。

用户可能需要自己通过重试机制、检查点或其他方式来确保数据的一致性和完整性。所以在使用不支持事务的云存储服务时,用户应确保他们的操作是可靠的,并准备号处理可能出现的错误和异常情况。使用像校验和、版本控制或其他数据完整性检查机制来验证下载的数据是否完整准确。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/34275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

选择门店收银系统要考虑哪些方面?美业系统Java源码分享私

开店前的一个重要事件就是选择门店收银软件/系统,尤其是针对美容、医美等美业门店,一个优秀专业的系统十分重要,它必须贴合门店的经营需求,提供更全面、便捷、高效的管理功能,帮助提升门店的服务质量和经营效益。 以下…

Python笔记 文件的读取操作

1.open()打开函数 再Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下 open(name,mode,encoding) name:是要打开的文件名的字符串(可以包含文件所在的具体路径) mode&…

系统集成要求

系统集成要求 投标人需要支持通过标准化方式实现院内信息系统、信息平台、数据中心、运营管理等各系统之间通过标准化数据集建设实现各系统无缝集成。系统集成包含界面集成及数据层面的集成,为方便用户使用,高度集成临床工作站操作模块,比如消…

Apple-how can i use apple account sign in my app

If you’re enabling an App ID for the first time or for a new app, enable the App ID as a primary 在Apple Developer网站上启用Apple登录服务(Sign in with Apple)。 生成Sign in with Apple的Key,以及相关的App ID配置。 注册你的应…

【几何】多少正方形?

题目枚举边长为1边长为 2 \sqrt{2} 2 ​边长为 5 \sqrt{5} 5 ​边长为 8 \sqrt{8} 8 ​边长为 13 \sqrt{13} 13 ​ 扩展-使用代码来数1、定义点对象2、定义正方形对象3、初始化所有点4、调用完整代码 题目 多少正方形? 枚举 设每个横纵相邻点得间距为1&#xff0…

AMHS工程师的作用

1、AMHS Automatic Material Handling System,自动物料搬运系统在半导体厂中扮演着至关重要的角色。它通过自动化的方式,提高了晶圆厂的空间利用率、减少了机台的闲置时间、提升了生产效率以及产品良率。随着半导体制造工艺的不断进步,特别是…

线程池概念、线程池的不同创建方式、线程池的拒绝策略

文章目录 💐线程池概念以及什么是工厂模式💐标准库中的线程池💐什么是工厂模式?💐ThreadPoolExecutor💐模拟实现线程池 💐线程池概念以及什么是工厂模式 线程的诞生是因为,频繁的创…

3D Web轻量化引擎HOOPS Commuicator是如何创建AEC查看器的?

在当今数字化时代,建筑、工程和施工(AEC)行业正经历着一场技术革命。HOOPS Communicator,一款基于HOOPS Web平台的3D Web轻量化引擎,正是这场革命的先锋之一。本文将探讨HOOPS Communicator是如何创建AEC查看器的&…

【CentOS 7】深入指南:使用LVM和扩展文件系统增加root分区存储容量

【CentOS 7】深入指南:使用LVM和扩展文件系统增加root分区存储容量 大家好 我是寸铁👊 【CentOS 7】深入指南:使用LVM和扩展文件系统增加root分区存储容量 ✨ 喜欢的小伙伴可以点点关注 💝 前言 在运行CentOS 7服务器或虚拟机时&a…

用户 token 持久化

用户 token 持久化 业务背景:Token的有效期会持续一段时间,在这段时间内没有必要重复请求token,但是Vuex本身是基于内存的管理方式,刷新浏览器Token会丢失,为了避免丢失需要配置持久化进行缓存 基础思路:…

windows powershell 自动补全/自动suggestion

安装PSReadLine 超级管理员下 Install-Module -Name PSReadLine -RequiredVersion 2.3.5具体最新版本:https://www.powershellgallery.com/packages/PSReadLine/ 编辑powersheel配置文件 在~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 如果没有则…

【扫雷游戏】C语言详解

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

lvs集群 Keepalived

Keepalived高可用集群 Keepalived概述 功能 LVS规则管理LVS集群真实服务器状态监测管理VIP Keepalived实现web高可用 安装keepalived软件 在webservers上配置 启动服务 webservers systemctl start keepalived.service ip a s | grep 192.168 #web1主机绑定vip 测试…

o(n)求逆元

线性时间计算逆元 for (int i 2; i < n; i) {inv[i] MOD - (MOD / i * inv[MOD % i] % MOD) % MOD;}线性时间计算阶乘逆元 //先计算出n!的逆元for (int i n - 1; i > 0; i--) {inv[i] inv[i 1] * (i 1) % MOD;}1-n的LCM 对于1-n中所有数的lcm,其应该等于1-n中每个…

Windows资源管理器down了,怎么解

ctrlshiftesc 打开任务管理器 文件 运行新任务 输入 Explorer.exe 资源管理器重启 问题解决 桌面也回来了

5.浏览器存储

1.浏览器本地存储方式 &#xff08;1&#xff09;Cookie 特性: 名称创建后不可修改。遵循同源策略&#xff0c;不能跨域名共享。每个域名下Cookie数量和大小受限&#xff08;约20个&#xff0c;每个4KB&#xff09;。安全性问题&#xff1a;易被拦截&#xff0c;用于会话劫持。…

MoonBit 周报 Vol.46:支持32位无符号整数!

MoonBit 更新 支持了 32 位无符号整数 let num 100U // 32位无符号整数的字面量需要后缀U在 wasm 后端导出返回值类型为 Unit 的函数时&#xff0c;之前导出函数的类型中会有 (result i32)&#xff0c;现在 MoonBit 编译器会自动生成一个没有返回值 wrapper 函数&#xff0c…

爬虫day3

爬虫如何提高效率&#xff1f; 我们可以选择多线程&#xff0c;多进程&#xff0c;协程等操作完成异步爬取。 异步&#xff1a;把一个变成多个 线程&#xff1a;执行单位 进程&#xff1a;资源单位&#xff0c;每一个进程至少有一个线程 if __name__ __main__: print(&qu…

都说HCIE“烂大街”了,说难考都是假的?

在网络技术领域&#xff0c;华为认证互联网专家&#xff08;HCIE&#xff09;长期以来被视为一项高端认证&#xff0c;代表着专业技能和知识水平。 然而&#xff0c;近几年来&#xff0c;考证的重视度直线上升&#xff0c;考HCIE的人越来越多了&#xff0c;考过的人好像也越来越…

C++ | Leetcode C++题解之第162题寻找峰值

题目&#xff1a; 题解&#xff1a; class Solution { public:int findPeakElement(vector<int>& nums) {int n nums.size();// 辅助函数&#xff0c;输入下标 i&#xff0c;返回一个二元组 (0/1, nums[i])// 方便处理 nums[-1] 以及 nums[n] 的边界情况auto get …