目录
对象存储服务器
定义
也称对象存储服务,是一种专门用于存储和检索非结构数据的服务,这些服务通常用于存储大量文件。例如图像,视频,文档等,并支持通过http协议进行访问。
概念普及
最近公司的对象存储服务换到了华为云上,借着这次机会,
了解一下对象存储服务器常见的概念。
对象(Object)
对象概述
对象(Object)是OBS中数据存储的基本单位,一个对象实际是一个文件的数据与其相关属性信息(元数据)的集合体。用户上传至OBS的数据都以对象的形式保存在桶中。
对象的特点
- 键(Key):
对象有一个唯一的键(Key),用于标识该对象。键通常类似于文件名,但在对象存储中,它可以包含路径信息来模拟目录结构。 - 值(Value):
对象的值实际上就是文件的内容。对象存储服务将这些文件的内容存储在后端。 - 元数据(Metadata):
对象可以携带额外的信息,称为元数据。元数据可以包含关于对象的各种属性,如创建时间、大小、类型等。 - 版本控制:
对象存储服务通常支持版本控制,这意味着可以保留对象的不同版本,并能够恢复到先前的版本。 - 生命周期管理:
可以为对象设置生命周期规则,以自动化管理和清理数据,例如自动删除过期的对象或将其移动到成本更低的存储层。
桶(Bucket)
桶概述
桶(Bucket)是OBS中存储对象的容器。对象存储提供了基于桶和对象的扁平化存储方式,桶中的所有对象都处于同一逻辑层级,去除了文件系统中的多层级树形目录结构。
桶可以理解为一个文件夹或目录,目录中存的对象。但与传统文件系统的目录不同,
桶的特点:
- 全局唯一性:
在一个对象存储服务提供商的范围内,桶的名称必须是全局唯一的。
这意味着即使是在不同的用户或账户之间,也不能有相同的桶名称。 - 扁平化存储:
对象存储服务通常采用扁平化的存储结构,这意味着所有的对象都直接存储在桶中,而不像文件系统那样有层次化的目录结构。
对象可以通过键(Key)来唯一标识,键可以包含类似于路径的信息来模拟目录结构。 - 可扩展性:
桶可以存储大量的对象,并且可以随着数据的增长而自动扩展。 - 权限控制:
桶可以设置访问控制策略,比如私有访问、公共读取等,以控制谁可以访问桶中的对象。 - 生命周期管理:
可以为桶中的对象设置生命周期规则,例如自动删除过期的对象或者将旧对象移动到更低成本的存储层。 - 事件通知:
可以为桶配置事件通知,以便在某些事件(如新对象上传、对象删除等)发生时触发特定的动作。
终端节点(Endpoint)
OBS在不同区域的区域域名。终端节点提供了一个可访问的地址,客户端可以通过这个地址来访问对象存储服务。
访问域名
是桶在互联网中的域名地址
OBS桶访问域名的结构为:BucketName.Endpoint
其中BucketName为桶名称,Endpoint为桶所在区域的终端节点(区域域名)
知名的对象存储服务器提供商
微软云Azure:Microsoft Azure Blob Storage
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
#上传
blob = BlobClient.from_connection_string(conn_str=self._OSS_CONNECTION_STR, container_name=self._OSS_CONTAINER, blob_name=self._OSS_OBJECT_NAME + '/' + excelName)
#下载
blob = BlobClient.from_connection_string(conn_str=self._OSS_CONNECTION_STR, container_name=self._OSS_CONTAINER, blob_name=runtimeOssObjectName)
优势:提供多种存储类型,如Block Blobs、Page Blobs和Append Blobs,支持高吞吐量和低延迟。
华为云OBS:
from obs import ObsClient,PutObjectHeader
obsClient = ObsClient(access_key_id=ak, secret_access_key=sk, server=server)
#上传
resp = obsClient.putFile(bucketName, objectKey, file_path, headers)
#下载
resp = obsClient.getObject(bucketName,objectKey,downloadPath)
优势:提供了高性能、高可靠性和全球分布等特点,并支持多种API和SDK。
阿里云OSS :
import oss2
auth = oss2.Auth(self