news 2026/3/3 2:04:51

Supabase Storage 云存储服务完全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Supabase Storage 云存储服务完全指南

Supabase Storage 云存储服务完全指南

【免费下载链接】storageS3 compatible object storage service that stores metadata in Postgres项目地址: https://gitcode.com/gh_mirrors/st/storage

项目概述

Supabase Storage 是一个开源的可扩展、轻量级对象存储服务,专为现代应用开发设计。该项目采用多协议支持架构,将元数据存储在PostgreSQL数据库中,同时支持与S3兼容存储服务集成。

核心特性

  • 多协议支持:兼容HTTP/REST、TUS可恢复上传、S3 API和Iceberg REST Catalog
  • 元数据管理:使用PostgreSQL作为元数据存储后端
  • 权限控制:基于PostgreSQL行级安全策略实现授权规则
  • 高性能设计:极致的轻量级和高性能架构

系统架构解析

Supabase Storage 采用分层架构设计,确保系统的可扩展性和可靠性:

该架构分为三个主要层次:

前端层:包含用户仪表盘和客户端库,提供友好的用户界面和开发者工具。

中间件层:由Kong API网关和Storage API服务器组成,负责请求路由、认证鉴权和业务逻辑处理。

后端存储层:支持多种S3兼容存储服务,如AWS S3和Backblaze B2,实现数据持久化存储。

快速开始

环境准备

确保系统已安装Node.js 14.0或更高版本,然后克隆项目代码:

git clone https://gitcode.com/gh_mirrors/st/storage cd storage

依赖安装与配置

安装项目依赖:

npm install

配置环境变量:

cp .env.sample .env && cp .env.test.sample .env.test

基础设施启动

使用Docker Compose启动本地开发环境:

npm run infra:restart

此命令将启动PostgreSQL数据库和PostgREST服务。

开发服务器启动

运行开发服务器:

npm run dev

服务器将在 http://localhost:5000/ 启动运行。

基础操作示例

创建存储桶

使用以下命令创建名为"avatars"的存储桶:

curl --location --request POST 'http://localhost:5000/bucket' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoic2VydmljZV9yb2xlIiwiaWF0IjoxNjEzNTMxOTg1LCJleHAiOjE5MjkxMDc5ODV9.th84OKK0Iz8QchDyXZRrojmKSEZ-OuitQm_5DvLiSIc' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "avatars" }'

查询存储桶列表

获取所有存储桶信息:

curl --location --request GET 'http://localhost:5000/bucket' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoic2VydmljZV9yb2xlIiwiaWF0IjoxNjEzNTMxOTg1LCJleHAiOjE5MjkxMDc5ODV9.th84OKK0Iz8QchDyXZRrojmKSEZ-OuitQm_5DvLiSIc'

开发工作流

代码格式化

项目使用Prettier进行代码格式化:

npm run format

代码检查

运行代码质量检查:

npm run lint

测试执行

运行完整的测试套件:

npm test

生成测试覆盖率报告:

npm run test:coverage

高级功能

数据库迁移管理

运行数据库迁移:

npm run migration:run

文档导出

导出项目文档:

npm run docs:export

技术栈说明

Supabase Storage 基于以下核心技术构建:

  • 后端框架:Fastify - 高性能Node.js Web框架
  • 数据库:PostgreSQL - 关系型数据库
  • 对象存储:AWS S3 SDK - 提供S3兼容存储支持
  • 文件上传:TUS协议 - 支持可恢复的文件上传
  • 监控指标:Prometheus客户端 - 收集和暴露应用指标

部署与生产环境

构建生产版本

编译TypeScript代码并构建生产版本:

npm run build

启动生产服务器

运行生产环境服务器:

npm start

项目结构

项目采用模块化设计,主要包含以下核心模块:

  • HTTP层:处理API请求和路由
  • 存储协议:支持S3、TUS、Iceberg等多种协议
  • 内部服务:包含认证、数据库、队列等核心组件
  • 测试套件:完整的单元测试和集成测试

通过这种分层架构和模块化设计,Supabase Storage 提供了一个既灵活又强大的对象存储解决方案,能够满足从简单文件存储到复杂企业级应用的各种需求。

【免费下载链接】storageS3 compatible object storage service that stores metadata in Postgres项目地址: https://gitcode.com/gh_mirrors/st/storage

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/3 1:59:44

PyTorch Autograd机制在Miniconda中的调试方法

PyTorch Autograd机制在Miniconda中的调试方法 在深度学习项目中,一个看似微小的梯度异常就可能导致整个模型训练失败。你是否曾遇到过这样的情况:代码逻辑无误,网络结构合理,但参数几乎不更新?或者反向传播时突然报出…

作者头像 李华
网站建设 2026/2/27 12:15:00

如何快速掌握diffvg:可微分光栅化器的完整入门指南

如何快速掌握diffvg:可微分光栅化器的完整入门指南 【免费下载链接】diffvg Differentiable Vector Graphics Rasterization 项目地址: https://gitcode.com/gh_mirrors/di/diffvg diffvg是一个革命性的可微分光栅化器项目,它通过将传统的2D矢量图…

作者头像 李华
网站建设 2026/3/2 18:04:14

ThinkPad X230黑苹果:如何让经典商务本变身苹果生产力工具

ThinkPad X230黑苹果:如何让经典商务本变身苹果生产力工具 【免费下载链接】X230-Hackintosh READMEs, OpenCore configurations, patches, and notes for the Thinkpad X230 Hackintosh 项目地址: https://gitcode.com/gh_mirrors/x2/X230-Hackintosh 你是否…

作者头像 李华
网站建设 2026/2/28 17:18:14

Miniconda如何解决‘conda install pytorch’慢或失败问题

Miniconda 如何解决“conda install pytorch”慢或失败问题 在人工智能项目开发中,你是否经历过这样的场景:刚搭好服务器,兴致勃勃地敲下 conda install pytorch,结果进度条纹丝不动,半小时后报错超时?或者…

作者头像 李华
网站建设 2026/3/1 8:21:50

5大实战技巧:用lllyasviel/Annotators打造工业级数据预处理流水线

5大实战技巧:用lllyasviel/Annotators打造工业级数据预处理流水线 【免费下载链接】Annotators 项目地址: https://ai.gitcode.com/hf_mirrors/lllyasviel/Annotators 在计算机视觉工程实践中,高质量标注数据的稀缺往往是项目成功的最大瓶颈。ll…

作者头像 李华
网站建设 2026/2/27 18:02:25

MyBatis数据源架构深度解析与实战配置指南

MyBatis数据源架构深度解析与实战配置指南 【免费下载链接】mybatis mybatis源码中文注释 项目地址: https://gitcode.com/gh_mirrors/my/mybatis MyBatis作为Java生态中广泛应用的持久层框架,其数据源架构设计体现了高度灵活性和可扩展性。本文将从架构原理…

作者头像 李华