对象存储

对象存储(Object Storage)是一种数据存储架构,其核心特点是将数据存储为“对象”,而不是传统的文件或块存储方式。每个对象包含数据、元数据和一个唯一的标识符(ID),通过这种方式管理和存取数据。对象存储特别适合大规模、非结构化的数据存储,如文档、音频、视频、备份和日志文件。

1. 对象存储的基本概念

在对象存储中,数据被分为独立的“对象”。每个对象由以下几个组成部分构成:

  • 数据:存储的实际内容,比如图片、视频、文档等。
  • 元数据:描述对象的数据,比如文件类型、创建时间、文件大小、权限等。元数据可以根据应用的需求自定义,灵活性强。
  • 唯一标识符:每个对象都有一个唯一的标识符(ID),用于标识和访问该对象。通常可以通过URI、URL或其他形式的ID来访问对象。

对象存储不依赖于传统的文件系统结构,如目录和子目录树,而是通过对象的唯一标识符进行访问。

2. 工作原理

2.1 数据访问

对象存储不使用传统的文件路径来访问数据,而是通过对象的唯一标识符(通常是一个长字符串或UUID)来检索对象。用户通过API(通常是RESTful API)进行访问,常见的API协议是Amazon S3协议,这意味着支持S3兼容的系统能够相互访问和操作数据。

2.2 数据存储

  • 数据被存储为对象,存储过程是异步的,因此不需要等待整个操作完成。
  • 对象存储的服务通常是分布式的,数据分布在多个物理位置的服务器上。
  • 数据的冗余和容错机制通常由存储服务提供商管理,保证数据的高可用性和持久性。

2.3 扩展性

  • 水平扩展:对象存储支持通过增加更多节点来扩展存储容量,通常不需要停机或重新配置。
  • 弹性:系统可以根据存储需求动态调整存储资源,适应不断变化的存储需求。

3. 对象存储的优势

3.1 可扩展性

对象存储能轻松处理PB级甚至EB级的数据存储需求。它采用分布式架构,可以根据需求水平扩展存储容量,而不需要像传统存储系统那样进行垂直扩展。

3.2 低成本

对象存储具有较低的存储成本,特别适合存储大量的非结构化数据。与传统块存储或文件存储相比,按需扩展的对象存储通常可以大幅度降低存储费用。

3.3 高可靠性

对象存储通常具有内建的数据冗余和容错机制。数据通常会在多个地理位置的节点间进行复制或纠删码存储,保证数据的持久性和可靠性。即使某些存储节点出现故障,数据也可以通过其他副本恢复。

3.4 简化的管理

对象存储不需要管理复杂的目录结构,数据访问通过唯一的标识符来进行。存储的对象可以是任何格式或大小,管理起来更加简单。

3.5 适用于非结构化数据

对象存储特别适合存储非结构化数据(如音视频、图片、日志文件、备份文件等),这些数据没有固定的格式,并且通常需要大规模的存储空间。

4. 对象存储的缺点

4.1 访问延迟较高

由于对象存储通常通过HTTP/HTTPS协议访问,且访问方式是基于API调用而非本地文件系统,访问延迟通常较高。这使得对象存储不适合对低延迟有高要求的应用(如数据库存储或实时数据处理)。

4.2 不适合频繁的更新

对象存储的设计是基于批量存储和访问,适合写入一次后频繁读取的场景。如果需要频繁更新或修改数据,性能可能较差。每次更新需要修改整个对象,因此不适合频繁的小范围数据更新。

4.3 缺乏传统文件系统的目录结构

尽管对象存储可以存储大规模的非结构化数据,但缺乏传统文件系统的层次化目录结构,这可能使得一些数据的查找和管理不如传统文件存储直观。尽管一些服务提供了类似目录的功能(例如通过元数据模拟目录结构),但本质上这些仍然是平面结构。

4.4 复杂的查询和索引

对象存储不提供传统文件系统中的索引功能,数据检索依赖于API和元数据。虽然可以通过元数据进行搜索,但对于更复杂的查询,性能可能不如数据库或文件系统。

5. 应用场景

5.1 大数据存储

对象存储非常适合存储大规模的非结构化数据。例如,企业生成的海量数据(如日志、监控数据、传感器数据等)可以使用对象存储来存储和管理。

5.2 媒体存储

对象存储广泛应用于视频、音频、图片等多媒体文件的存储。其高容量、低成本和高冗余性使得它成为云视频流、图像处理和多媒体存储的理想选择。

5.3 备份与灾难恢复

由于对象存储具有高可靠性和低成本特点,它非常适合用于备份存储和灾难恢复。许多企业利用对象存储进行定期的全量或增量备份。

5.4 云存储服务

云服务提供商(如AWS、Google Cloud、Azure等)通常使用对象存储为用户提供弹性、可扩展的存储空间。Amazon S3、Google Cloud Storage和Azure Blob Storage等都是知名的对象存储服务。

5.5 静态网站托管

对象存储可以用来托管静态网站的内容(如HTML文件、图片、视频等),尤其适合无需复杂计算或动态内容的网站。

5.6 数据归档

由于对象存储的低成本特性,它非常适合长期存储和归档数据。许多企业使用对象存储作为其数据归档解决方案。

6. 常见的对象存储服务

  • Amazon S3(AWS)可能是最著名的对象存储服务,提供高度可扩展、低成本的存储,广泛应用于各种企业和开发者。
  • Google Cloud StorageGoogle的云存储服务,提供高可用性、低延迟和强大的安全性。它支持多种存储类和生命周期管理。
  • Microsoft Azure Blob StorageAzure的对象存储服务,适用于高可用、高性能的对象存储,支持数据加密和冗余备份。
  • Alibaba Cloud Object Storage Service (OSS)阿里云的对象存储服务,提供高可用性和低成本的云存储解决方案,广泛用于大数据分析和云存储。
  • MinIO一个开源的高性能对象存储,兼容Amazon S3 API,适用于私有云部署。

7. 对象存储与其他存储类型的对比

特性

对象存储

块存储

文件存储

数据结构

数据+元数据+唯一标识符(对象)

数据块(固定大小的块)

文件+目录树结构

扩展性

极高,水平扩展

有限,垂直扩展

中等,适合共享文件

性能

较低的延迟和吞吐量

高性能,低延迟

中等,适合文件共享

访问方式

HTTP/REST API(如S3)

通过块设备访问(如iSCSI)

文件系统协议(如NFS、SMB)

适用场景

非结构化数据、大数据、媒体存储

数据库、高IOPS需求的应用

文件共享、协作、文档管理

全部评论

相关推荐

05-05 12:26
门头沟学院 Java
转眼就到五月了,天气还没热起来,回过头看,这大概是过去一年中最忙碌的一段时间。2 月到 4 月几乎没有休息,等节奏慢下来,才发现夏天已经快开始了, 暑期也正式落下帷幕。最后可能会去字节,后面还剩个 B 站和饿了么的面试,但大概率不会再继续投了。我总想为这一年的奔波写点什么,不是为了炫耀什么经历,而是怕自己在未来某个疲惫的清晨,忘了这一路上遇到的人、做过的选择、受过的打击。美团很大,但我所在的组像是一艘大船上的仓库,琐碎、边角,不起眼。小红书则像一条快艇,核心、紧凑、推得很猛,我第一天就被拉去开会,接需求,像是被丢进战场的菜鸟,幸好 mentor 是个特别好的人,用他稳重的方式接住了我的慌张。而字节也算是核心组,目前还没入职,但面试就折磨了我一个月, 面了足足五轮.这一年里,我遇到过一些很重要的人。比如sf师兄,他是我坚持做后端开发最关键的支持者。我实验室工位搬到他旁边后,他几乎是手把手带我,给我发资料、讲面经,一次次帮我梳理思路。没有他,我可能早就放弃了这条路。在小红书实习的时候,我也特别幸运,遇到了 mar 哥和hk。我们经常一起讨论接过需求、代码、实现方案, 当然基本是我听他们说哈哈哈哈,他们对实习, 业务的理解也影响了我很多。记得第一次面 WXG,被评“算法还可以,但缺乏刨根问底的精神”。那时我不太理解这句话的意思,现在回头看,似乎懂了一些。我是 211 硕士,26 届,机械转码。读研前几乎没接触过编程,只会点最基础的 Python。考研上岸之后有段时间沉迷 APEX 和 LOL,代码完全扔下了,直到后来偶然接触了伯克利的 CS61 系列,才真正开始把基础打扎实。之后也写过一些小的轮子项目,刷题刷到 1700 分,算是慢慢找到方向了。研一的时候,我跟的是一个年轻导师。他非常 push, 当时研零还没正式进组,就给我派了几个活。但人很实在, 我一直觉得他适合去工作, 但是他选择了高校当老师, 他说想把他觉得好的知识教给大学的学生, 他是非常非常好的人。我记得刚开始连函数怎么写都不太会,是他让我坐到他办公桌旁边,一行一行教我 Python,看不懂代码就带我一行一行的读, 我就在旁边当气氛组。说实话,他可能是我见过国内能力最强的 CS 专业的老师,全栈还全干,项目、科研、代码都能上。他给钱也很大方,从不抠,不过就是会被他导师拉去干一些没人愿意接的活,但从来没把这些事压到我们头上。后来我实习,他也很支持。嘴上偶尔抱怨项目没人干了,可从没说过什么“必须回来”这类话,心里清楚他是在成全我。研一那段时间,实验室管得不多,课程也不是特别重。我花了不少时间去上国外网课,比如算法、数据结构、Python、Java 这类基础课程。印象最深的是数据结构,国外老师讲得真好,把很多概念讲得特别透。后来面试的时候,数据结构这块几乎没怎么被问住,心里其实挺感激那些屏幕另一头素未谋面的老师。除此之外,剩下的时间说实话也没做太多正经事,打了不少游戏,LOL、APEX、怪猎,一晃就过去了一年。到 2024 年 7 月,我开始写一篇小论文,同时也开始认真想未来的方向。是工作,还是继续读博?我读研时曾觉得读博是终点,是最理想的归宿。可现实总比想象复杂,慢慢发现自己可能并不那么适合科研。不管是国内的人情世故,还是对专注力和长期热情的要求,我都不太能达到。其实要是随便找个博读读,毕业后去个大专当老师,这条路应该问题不大。但我也明白,那并不是我想要的生活。8 月份,小论文的实验差不多做完了,我开始正式学黑马视频,补后端知识。这时候还好,之前算法和数据结构的基础都还在,真正需要补的是 JavaWeb、计算机网络、操作系统这些偏工程和八股的内容。刚开始看着觉得很多,其实沉下心来学,发现真正需要长期记住的没那么多。那段时间我基本是边学边问,师兄还是那个师兄,帅峰。那会儿他还在美团实习,平时很忙,只能周末抽空,我就一口气把一周积攒下来的问题全甩给他。他也从没烦过我,慢慢帮我分析,一点点讲,讲完再去永劫启动到了国企最后一天,  10 月 7 号,我把 JavaWeb 和 Spring 全家桶都看完了,也过了一遍小林 Coding 的计网笔记。为什么我记得那么清楚呢,因为我在家写完了苍穹外卖。那本来是和朋友约好去旅行的日子,但被我鸽了哈哈哈哈,就留在家里写项目, 虽然主要是因为我妈让我回去相亲……这个项目加上之前在实验室做的一个项目,差不多就是我实习投递的主要材料了。当时也不太懂投递策略,想着“先试试看”,就直接把所有知名互联网公司几乎投了个遍, 小厂基本没投过, 心比天高, 命比纸薄。结果就是一整周过去了没有一个面试邀约,整个人挺焦虑的。白天学操作系统,晚上等消息,邮箱看了一遍又一遍。也不是没心理准备,但那种空等的感觉,真的挺消耗人的...
点赞 评论 收藏
分享
经过一个月的突击复习和两个月面试的挣扎,鼠鼠终于黄袍加身入美团了先介绍一下主包情况,bg本2硕9,科班鼠鼠,研究方向是cv,但是实验室不科研所以找java后端,导师同意放实习,水过两段实习,一段测开一段java2.17回校开始全力突击算法和八股,算法跟着代码随想录刷的,hot100一年前刷过一遍,八股之前一点没看过,痛苦从java基础开始地毯式预习3.16把代码随想录刷过一遍,hot100第二遍刷完了,八股把最基本的java,juc,jvm,mysql,kafka,spring八股过了一遍,然后开始投简历面试timeline:3.24 淘天电话面(挂)3.26 快手一面(挂)3.26 京东一面3.31 京东二面4.2 美团一面(挂)4.8 京东三面(泡池子,泡到5.6打电话问我意向,抽象)4.21 淘天一面(挂)4.22 小红书日常一面(约二面)4.24 腾讯企业IT(秒挂)4.25 滴滴日常一面4.25 心识宇宙一面4.27 美团骑行事业部一面4.28 小红书日常二面(泡)4.28 心识宇宙二面(5.5 offer,小而美的ai初创,公司真的很好)4.28 美团骑行事业部二面4.28 美团骑行事业部hr面(5.6 offer)4.30 腾讯云一面面试一开始连基础的分库分表都答不上来,什么也不会但是还觉得面试表现不错,到后面答得还行但还会怀疑自己答得不好总结一下心得:1.没有见到正式offer之前不要停止找实习面试,我在找实习的过程中犯得最大的错误就是当时以为面完东子三面稳了就开始等,但是东子把我泡了一个月我直接心态爆炸,四月中旬一周都是空档没有笔面,但这段时间其实是约面高峰,成长时间大大浪费2.八股太多了,背不完的,面试重点就是你的简历,所以针对简历复习八股很重要,同样简历上不要有多余的你不会的内容。每次面试结束都总结问题,然后针对性复习,面多了就知道什么常问常考,需要深入了解了。3.面试是一个讲故事的过程。实习或者项目(非点评外卖)面试官大概率不懂,故事的重点在于项目架构以及实现重难点;八股面试官一般比你更懂,故事的重点需要展示你的逻辑性和知识点理解的深入程度,以及dfs相关知识点的思考,纯背是扛不住问的。4.每个人都会有自己的offer的,虽然过程很难,不放弃、在失败中总结经验教训就已经超过了之前的你,不断提高自己总会有机会找上门的。5. 运气和实力同样重要,东子速通hr面但是泡一个月说明运气和实力不匹配就会被泡,团子我暑期三志愿全挂但是依然人才库被捞说明实力到了运气自然会来。最后希望大家都能收获自己心仪的offer
点赞 评论 收藏
分享
评论
3
5
分享

创作者周榜

更多
牛客网
牛客企业服务