Midday项目Supabase数据库架构解析与自托管指南
【免费下载链接】midday 项目地址: https://gitcode.com/GitHub_Trending/mi/midday
背景介绍
Midday是一款开源的数据分析与可视化工具,它使用Supabase作为后端数据库服务。在自托管Midday仪表板时,开发者遇到了数据库架构相关的问题,特别是用户ID与团队ID关系缺失导致的错误。本文将深入解析Midday项目的Supabase数据库架构,并提供自托管解决方案。
数据库架构挑战
Midday项目采用了Supabase的高级功能,这给数据库架构的导出和共享带来了两个主要技术挑战:
-
副本(Replicas)使用:Supabase的副本功能允许创建数据库的只读副本,用于提高读取性能,但这使得标准架构导出工具无法完整捕获所有数据库对象。
-
行级加密(Row-Level Encryption):项目使用了Vault存储加密密钥,这些密钥对每个项目都是唯一的,导致直接导出架构会缺失关键的加密配置信息。
解决方案演进
Midday团队与Supabase官方合作,最终找到了解决方案。现在项目仓库中已经包含了完整的数据库迁移文件,位于packages/supabase/migrations目录下。这些迁移文件包含了创建所有必要表、视图、函数和关系的SQL脚本。
关键数据库组件
Midday的Supabase数据库架构包含几个核心组件:
- 用户认证系统:处理用户注册、登录和会话管理
- 团队关系模型:建立用户与团队之间的多对多关系
- 交易视图:提供加密数据的安全访问接口
- Plaid集成:处理与金融数据API的连接
特别值得注意的是,项目中使用了decrypted_name等视图列,这些是通过Supabase的行级安全策略和加密函数实现的,确保敏感数据的安全访问。
自托管实施指南
对于想要自托管Midday的开发者,以下是关键步骤:
- 初始化Supabase项目:创建一个新的Supabase实例
- 应用迁移脚本:按顺序执行提供的迁移文件
- 配置行级安全:设置适当的表级和行级访问策略
- 集成Vault服务:配置加密密钥管理
- 验证关系完整性:特别是用户-团队关系的正确性
未来展望
Midday团队计划在产品发布后两周内提供完整的文档,包括详细的Supabase配置指南。这将使开发者能够更轻松地部署和管理自托管实例。
对于遇到特定问题的开发者,建议关注交易视图的实现细节,这是架构中最复杂的部分之一。正确的视图定义对于确保加密数据的安全访问至关重要。
通过理解Midday的数据库架构设计,开发者不仅能够成功自托管项目,还能根据需要对架构进行定制和扩展,满足特定的业务需求。
【免费下载链接】midday 项目地址: https://gitcode.com/GitHub_Trending/mi/midday
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



