初识对象存储

初识对象存储

 

一、前言

    随着数字化浪潮的不断推进,全球的数据量呈爆炸式增长。据IDC预估,到2025年全球数字数据将达到近175ZB,其中约80%的数据是非结构化数据(如音频、视频、图像、文档、网页内容、企业级备份等)。在过去数据量不大的时候,企业采用NAS、SAN等传统存储架构可满足存储需求。但随着存储数据量的增长,传统存储架构在性能、扩容、管理及成本等方面暴露了诸多问题。

 

 

    对象存储(Object-based Storage)是一种在云计算环境下的新型存储形态,是基于无中心、分布式、高并发的云存储架构,非常适合存储大量格式任意、大小任意的非结构化数据。因此对象存储可应用于广泛的场景,如视频监控、企业网盘、大数据分析、备份归档、静态网络托管、直播点播、图片处理、Web移动应用等。

 

 

    随着在各行业广泛的应用,对象存储技术逐渐被大众所耳闻,特别是Amazon于2006年推出的S3(Simple Storage Service),以及作为OpenStack最初核心子项目之一的Swift。本文试图梳理对象存储的一些基本概念,帮助读者对其建立一个初步的认识。

 

 

二、什么是对象存储

    对象存储与传统存储的数据管理方式不同,文件、块存储是将数据作为文件或数据块进行管理,而对象存储是将数据作为对象进行管理。在S3和Swift均有Object、Bucket/Container、Account等概念,下面对这些基础概念进行介绍。

    对象(Object)是存储数据的基本单元,类似文件存储的“文件”。对象由名称、数据以及元信息组成,名称作为对象的唯一标识,数据是对象的文件数据内容,元信息是对象的描述信息,包括系统元信息和用户元信息,如对象的版本、大小、时间以及其它描述信息。

    桶/容器(Bucket/Container)是存储数据的逻辑空间,类似文件存储的“目录”。所有对象都直接存放在某个桶中,但是桶是扁平结构不支持嵌套,桶名称须符合相应的命名规则且具有全局唯一性。在一个桶内,对象以Object Name作为其唯一标识,而在一个对象存储系统内,对象以Bucket Name/Object Name作为其唯一标识。

    账户(Account)是资源的所有者和管理者,彼此之间相互独立,账户下可以创建多个桶,类似文件存储的“/(Root)”。使用账户可以对桶进行创建、删除、查询、配置等操作,也可以对对象进行上传、下载、查询等操作。

    对象存储将数据以对象的形式,存储在以桶为命名空间的两级结构中。通过增加桶来横向扩展命名空间,通过在桶中增加对象来实现海量数据存储。这种扁平化的存储结构,避免了多级目录树带来的性能瓶颈等诸多问题,通过桶名称加对象名称进行数据检索以满足数据管理的需求,并且支持自定义用户元数据实现数据属性反查和分类,满足大数据、人工智能等应用的需求。

 

 

    文件、块存储是以NFS、CIFS、iSCSI等协议提供访问接口,而对象存储则是提供基于HTTP标准的REST API访问接口。因此对象存储可以像使用URI(统一资源标识符)访问网络资源一样访问文件(对象),这样非常有利于在互联网上传输数据。加上弹性扩展、基于通用硬件构建等优势,对象存储逐渐成为了“云存储”事实上的标准。

 

 

三、对象存储的优势

    在存储技术的选型中,有诸多基于文件或块的存储技术可供选择,这些技术基本上都是成熟且经过验证的,那么我们为什么还需要一种新型的存储技术呢?

    块存储直接通过底层存储协议(如SCSI)访问磁盘数据,开销非常小且没有额外的抽象层,是访问磁盘数据最快的方式,但是数据共享、多用户访问等高级功能需要通过上层应用实现。对象存储使用基于块存储的节点存储数据,所有高级功能通过对象存储软件实现。因此块存储和对象存储没有直接竞争关系,而文件存储一般被认为是对象存储的直接竞争者。

    与文件存储相比,对象存储具有两个显著的特征——扁平化存储结构HTTP标准REST接口。文件存储是层次化结构的,在面对海量文件存储时,需要维护庞大的目录树,会造成性能瓶颈等问题。而对象存储是扁平化结构,采用元数据检索数据的方式,无需目录结构但更能满足数据管理的需求。对象存储通常是使用基于HTTP协议的RESTful API,通过HTTP请求中的PUT和GET等操作进行数据读写,以放弃随机读写为代价,带来的是存储效率和用户体验的显著提升。除此之外,对象存储在稳定性、可靠性、安全性及管理等方面也具有明显优势。

 

发布了6 篇原创文章 · 获赞 3 · 访问量 563

猜你喜欢

转载自blog.csdn.net/qq921656954/article/details/105474008