news 2026/5/8 9:14:44

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/5/3 3:32:52

TTS模型架构选型指南:从业务需求到技术实现

TTS模型架构选型指南:从业务需求到技术实现 【免费下载链接】TTS :robot: :speech_balloon: Deep learning for Text to Speech (Discussion forum: https://discourse.mozilla.org/c/tts) 项目地址: https://gitcode.com/gh_mirrors/tts/TTS 在构建文本转语…

作者头像 李华
网站建设 2026/5/1 12:02:49

5分钟掌握MinerU:智能PDF转换与结构化数据提取完整指南

5分钟掌握MinerU:智能PDF转换与结构化数据提取完整指南 【免费下载链接】MinerU A high-quality tool for convert PDF to Markdown and JSON.一站式开源高质量数据提取工具,将PDF转换成Markdown和JSON格式。 项目地址: https://gitcode.com/GitHub_Tr…

作者头像 李华
网站建设 2026/5/3 7:35:11

Ant Design图标定制实战:从业务需求到组件集成的完整解决方案

Ant Design图标定制实战:从业务需求到组件集成的完整解决方案 【免费下载链接】ant-design An enterprise-class UI design language and React UI library 项目地址: https://gitcode.com/gh_mirrors/antde/ant-design 作为一名长期使用Ant Design的开发者&…

作者头像 李华
网站建设 2026/5/5 22:10:46

NaughtyAttributes在Unity团队开发中的效率提升实践

NaughtyAttributes在Unity团队开发中的效率提升实践 【免费下载链接】NaughtyAttributes Attribute Extensions for Unity 项目地址: https://gitcode.com/gh_mirrors/na/NaughtyAttributes 在Unity团队项目开发过程中,经常会遇到编辑器界面不统一、参数验证…

作者头像 李华
网站建设 2026/5/7 12:31:37

Jupyter nbconvert批量转换Notebook为脚本

Jupyter nbconvert批量转换Notebook为脚本 在数据科学项目中,你是否曾遇到这样的场景:团队成员提交了一堆 .ipynb 文件到 Git 仓库,每次 git diff 都像在读一段加密的 JSON 日志?输出结果、执行序号、元数据混杂在一起&#xff0c…

作者头像 李华