【通篇干货】对象存储?CRUD Boy实现对文件的增删改查

本文详细介绍了使用Java操作阿里云OSS、天翼云对象存储和MinIO对象存储的增删改查操作。包括安装SDK、获取Client、对象的公共读与私有读、下载、删除以及阿里云特有的图片处理功能。通过实例代码展示了各个步骤,适合开发者参考。
摘要由CSDN通过智能技术生成

大家好!我是一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

以下是正文!

对象存储是什么?

对象存储是一种数据存储方式,它将数据分割成不同的对象,并为每个对象分配一个唯一的标识符,用于访问和操作数据。这些对象被存储在多个服务器上,以确保数据的可靠性和可用性。对象存储适合存储大量数据,具有可扩展性、低成本和高安全性等特点。

这段话太专业了,以至于有点让人看不懂。私以为对象存储就是『分布式文件存储系统』,可能是我们只会用它来存储图片、视频、文档等文件吧😅,然后数据库(比如MySQL)只存储文件的访问链接。目前接触的对象存储有 阿里云对象存储OSS、天翼云对象存储融合版、自建对象存储MinIO。

  • 阿里云对象存储OSS

帮助文档链接

  • 天翼云对象存储融合版

帮助文档链接

  • MinIO对象存储

帮助文档链接

这三款对象存储产品对比如下

产品 功能特点 是否收费 是否开源 对接难易度
阿里云对象存储OSS 阿里云OSS提供了丰富的存储、数据处理和分发功能,可以满足各种场景的需求 收费 不开源 只需要ak/sk,然后看文档即可
天翼云对象存储融合版 天翼云对象存储融合版主要面向移动互联网应用,提供了数据管理、在线处理等功能 收费 不开源 只需要ak/sk,然后看文档即可
MinIO对象存储 MinIO专注于提供高性能、高可用的对象存储服务。 免费 开源 只需要ak/sk,然后看文档即可

总之有钱的话就买服务,没钱就自己搭,总有合适自己的😉。

对象存储和数据库的区别

各维度对比

存储 数据结构 数据处理 存储方式 可伸缩性
数据库存储 数据库是基于表格的存储方式,每个表格有特定的列和行。 数据库主要用于存储结构化数据,如文本、数字和日期等。数据库可以进行更复杂的数据处理,如查询、过滤和排序等。 数据库通常使用关系型数据库或NoSQL数据库等 数据库在扩展性上需要更多的运维和管理
对象存储 对象存储是基于对象的存储方式,每个对象可以是任何类型的文件 对象存储通常用于存储大量非结构化数据,如图片、视频和音频等 对象存储通常使用分布式存储技术将数据分散存储在不同的节点上 对象存储具有良好的扩展性,因此可以轻松地添加新的节点来处理更多的数据

项目对接流程图对比

CRUD之阿里云对象存储

1. 安装Java SDK

一般都是通过maven直接引入

 

xml

复制代码

<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.15.1</version> </dependency>

2. 获取Client

官方获取Client代码示例

 

java

复制代码

// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。 String endpoint = "yourEndpoint"; // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 String accessKeyId = "yourAccessKeyId"; String accessKeySecret = "yourAccessKeySecret"; // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 关闭OSSClient。 ossClient.shutdown();

我一般会将其变成一个Component

 

java

复制代码

@Component public class AliyunOssClient { @Value("${oss.endpoint}") private String endpoint; @Value("${aliyun.accessKeyId}") private String accessKeyId; @Value("${aliyun.accessKeySecret}") private String accessKeySecret; @Bean(name = "aliyunOssClient") public OSS aliyunOssClient() { // 构建并返回OSSClient return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); } }

3. 增删改查操作

(1)对象公共读&上传和访问

官方文档

 

java

复制代码

/** * 简单上传-流式上传-公共读 * * @param bucketName bucket名称 * @param key 文件名 * @param inputStream 输入流 * @return PutObjectResult 上传结果 */ public static PutObjectResult putObjectByInputStreamAndPublicRead(String bucketName, String key, InputStream inputStream) { ObjectMetadata metadata = new ObjectMetadata()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值