【数据库中的存储桶】
存储桶是对象存储系统中的一个核心概念,起源于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只是该对象在桶中的唯一标识符,你可以通过这个键来访问和下载这个对象。
这种扁平化结构的设计带来了几个好处:
-
简单性:不需要维护复杂的目录结构,使得对象存储系统更加简单和高效。
-
可扩展性:由于没有目录结构的限制,可以轻松地存储和访问数十亿个对象。
-
灵活性:可以通过在键中使用分隔符来模拟目录结构,方便数据的组织和管理。
然而,也需要注意,由于扁平化结构中没有真实的目录结构,因此在对象存储系统中进行批量操作(如删除某个目录下的所有对象)可能会更加复杂,通常需要遍历桶中所有对象并匹配相应的键来实现。
简单解释
存储桶是用于组织和管理在对象存储服务中存储的数据(即对象)的逻辑单位。它相当于一个高度可配置和可扩展的“文件夹”。与传统的文件夹不同,存储桶可以拥有更多的元数据和访问控制策略。每个存储桶都有一个全局唯一的名称,并且通常用于存放一组相关的数据。
场景:图片存储和分发服务
背景
假设你正在运营一个社交媒体平台,需要存储用户上传的大量图片。这些图片包括用户头像、帖子图片和评论中的媒体内容。由于流量巨大,你需要一个高性能、可扩展和成本有效的存储解决方案。
技术选型
在这种情况下,对象存储(例如Amazon S3或MinIO)会是一个很好的选择,相对于传统的文件系统或关系数据库。对象存储优于文件系统在于其可扩展性和元数据管理,优于关系数据库在于成本和对大文件的处理能力。
存储桶的角色
你可以创建一个名为 UserMedia的存储桶来专门存储所有用户媒体文件。这个存储桶内部不会有传统意义上的文件夹结构,但你可以通过对象键(Object Key)模拟目录结构。例如,头像可以存储在 avatars/用户ID.jpg这样的键下。
配置与策略
存储桶 UserMedia可以配置多种访问控制策略,例如仅允许特定服务进行写操作,或设置CDN(内容分发网络)以加速图片加载。这些配置都可以直接在存储桶级别进行,无需为每个文件单独设置。
与其他技术的互动
-
CDN:你可能会使用内容分发网络(如Cloudflare或Akamai)与存储桶结合,以更快地向用户分发媒体。
-
数据库:用户的元数据(如图片的标题或标签)可能存储在一个关系数据库(如MySQL)中,其中会存有指向存储桶中特定对象的引用。
通过这个场景,你可以看出存储桶不仅仅是一个“文件夹”,而是一个功能丰富、高度可配置的数据存储单位,能与多种其他技术协同工作。
有的云存储服务或框架不支持事务,这就意味着下载文件或目录到本地时这个过程不是以事务的方式执行的,如果下载过程中出现错误(网络中断、存储桶中的文件被删除或修改),不会提供像传统数据库一样的回滚或恢复机制来确保数据的一致性。
回顾一下事务的概念,ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
在数据库和许多其他系统中,事务是一个作为单个逻辑单元执行的工作单位。它要么完全执行,要么完全不执行,从而确保数据的完整性和一致性。
用户可能需要自己通过重试机制、检查点或其他方式来确保数据的一致性和完整性。所以在使用不支持事务的云存储服务时,用户应确保他们的操作是可靠的,并准备号处理可能出现的错误和异常情况。使用像校验和、版本控制或其他数据完整性检查机制来验证下载的数据是否完整准确。
相关文章:
【数据库中的存储桶】
存储桶是对象存储系统中的一个核心概念,起源于Amazon S3(Simple Storage Service)并被其他对象存储解决方案(如MinIO、Google Cloud Storage等)广泛采用。在传统的文件系统中,我们通常使用目录和子目录来组…...
多选项卡的shiny
下面是一个包含多个选项卡的 Shiny 应用程序示例代码。在这个例子中,我们创建了一个包含三个选项卡的 Shiny 应用程序,每个选项卡中都有不同的内容。 library(shiny)# Define UI ui <- fluidPage(titlePanel("多选项卡 Shiny 应用"),tabse…...
Python项目Django框架发布相关
1.Nginx配置 server { listen 80; server_name 域名地址;location / { uwsgi_pass 0.0.0.0:4563;// 运行地址include uwsgi_params;} location /static{ // 静态文件路径alias /www/wwwroot/djserverproject/static;}}server { listen 443; server_name 域名地址;ssl_certific…...
kettle使用手册 安装9.0版本 建议设置为英语
0.新建转换的常用组件 0. Generate rows 定义一个字符串 name value就是字符串的值 0.1 String operations 字段转大写 去空格 1. Json input 来源于一个json文件 1.json 或mq接收到的data内容是json字符串 2. Json output 定义Jsonbloc值为 data, 左侧Fieldname是数据库…...
golang string、byte[]以及rune的基本概念,用法以及区别
在 Go 语言中,string、byte[] 和 rune 是处理文本和字符的三种不同数据类型。它们有各自的用途和特点,下面将详细介绍它们的基本概念、用法以及区别。 1. string 基本概念 字符串类型:string 是 Go 语言中的一种基本类型,用于表…...
全国211大学名单及排名
序号 名称 省份 985 211 双一流 1 北京大学 北京 是 是 是 2 清华大学 北京 是 是 是 3 复旦大学 上海 是 是 是 4 上海交通大学 上海 是 是 是 5 浙江大学 浙江 是 是 是 6 国防科技大学 湖南 是 是 是 7 中国人民大学 北京 是 …...
ASR 语音识别相关
ASR 语音识别 ASR(Automatic Speech Recognition,自动语音识别)是一种能够将语音转换为文本的技术。这种技术使得计算机能够“听懂”我们说的话,并将它们记录下来。这项技术被广泛应用于日常生活中的各种场景,比如语音…...
kotlin require和assert 区别
在 Kotlin 中,require 和 assert 是两种用于验证条件的方法,主要区别在于它们的使用场景和触发机制。 require require 用于函数参数的验证。如果条件不满足,它会抛出 IllegalArgumentException 异常。这通常用于对公共 API 的输入参数进行…...
考研:数学一/二 和英语一/二 有什么区别
考研数学一/二 区别: 考试内容: 数学一:考查内容包括高等数学、线性代数、以及概率论与数理统计,覆盖的知识面较为全面,题目难度也相对较高。数学二:考试内容包含高等数学和线性代数,不包括概率…...
地铁中的CAN通信--地铁高效安全运转原理
目前地铁采用了自动化的技术来实现控制,有ATC(列车自动控制)系统可以实现列车自动驾驶、自动跟踪、自动调度;SCADA(供电系统管理自动化)系统可以实现主变电所、牵引变电所、降压变电所设备系统的遥控、遥信、遥测;BAS(环境监控系统)和FAS(火灾报警系统)可以实现车站…...
简化数据提取:Excel-Extractor 使用指南
前言 在当今数据驱动的世界中,从复杂的 Excel 文件中提取和分析数据是许多业务和研究工作的基本需求。为了简化这一过程,Excel-Extractor 项目应运而生。本文将为你介绍 Excel-Extractor 的功能和如何在你的项目中使用它。 什么是 Excel-Extractor&…...
用户中心项目全流程
企业做项目流程 需求分析 > 设计(概要设计 、 详细设计) > 技术选型 >初始化项目 / 引入需要的技术 > 写个小demo > 写代码 (实现业务逻辑) > 测试(单元测试)> 代码提交 / 代码评审 …...
达梦数据库的系统视图v$database
达梦数据库的系统视图v$database 基础信息 OS版本: Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本: DM Database Server 64 V8 DB Version: 0x7000c 03134284132-20240115-215128-20081在达梦数据库(Dameng Database…...
Vue.js中的虚拟DOM
一.节点和状态 在我们平常对DOM操作的时候,之前在vue没有诞生之前,以命令式的方式对DOM进行操作,页面上的每一个元素都可以看做成一个节点状态。 二.剔除和渲染 框架都有自己渲染的方式,假设一个页面的状态,随着Ajax请求的放松,状态发生改变,有以下的两种方式供你选择&#…...
【设计模式之迭代器模式 -- C++】
迭代器模式 – 遍历集合,无需暴露 迭代器模式是一种设计模式,用于顺序访问集合对象的元素,而无需暴露其底层实现。迭代器模式分离了集合对象的遍历行为,使得访问元素时,可以不必了解集合对象的底层实现。 组成 迭代…...
Linux网络编程:套接字编程
1.Socket套接字编程 1.1.什么是socket套接字编程 Socket套接字编程 是一种基于网络层和传输层网络通信方式,它允许不同主机上的应用程序之间进行双向的数据通信。Socket是网络通信的基本构件,它提供了不同主机间的进程间通信端点的抽象。一个Socket就是…...
多电商账户为什么要用指纹浏览器?
随着电子商务的蓬勃发展,越来越多的商家选择开设多店来扩大经营规模。然而多店运营也带来了一系列的挑战,其中之一就是账号安全。 1. 了解反检测浏览器和代理服务器 在我们开始讨论如何有效地使用反检测浏览器之前,我们首先需要了解这两个工…...
用Rancher2.8.5部署K8s集群
参考:通过Rancher 2.7.5部署企业生产级K8s集群 新K8s集群的环境信息 Rancher1台,K8s集群6台(1台rancher,3台master,4台node)。 Name|lmage Name|IP Address|Flavor|Comment project-root-dev-rancher|Ro…...
未来已来,如何打造智慧养殖场?
近年来,国家出台了一系列扶持政策,以促进养殖行业高质量发展,推动行业转型升级。在国家政策和市场需求的双重驱动下,养殖行业正迎来前所未有的发展机遇。智慧养殖以其高效、智能和可持续的特点,正逐步取代传统养殖方式…...
代码随想录算法训练营第七天|454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
打卡Day7 1.454.四数相加II2.383. 赎金信3.15. 三数之和4.18. 四数之和 1.454.四数相加II 题目链接:四数相加II 文档讲解: 代码随想录 class Solution {public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {int res 0;Map…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
