关于 spacetimedb-databases
用于 SpacetimeDB 数据库模块生命周期和迁移工作的技能,帮助开发者处理发布、迁移安全及事务行为,并指向相关参考资料。
主要功能
- 01说明模块与数据库的生命周期
- 02指导构建和发布流程
- 03分类自动迁移变更的安全性
- 04建议生产环境采用增量迁移
- 05链接开发和事务参考资料
适用场景
- 01发布前检查架构变更
- 02规划自动迁移不支持的变更
- 03安全重置开发数据
- 04查找事务和模块发布指南
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ danmossa/ spacetimedb-skills --skill spacetimedb-databases安装后在 Claude Code 中输入/spacetimedb-databases确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/databases-automatic-migrations.mddatabases-building-publishing.mddatabases-cheat-sheet.mddatabases-developing.mddatabases-incremental-migrations.mddatabases-transactions-atomicity.mddatabases.md详细介绍
将此技能用于数据库模块生命周期和迁移工作。
核心模式
- 模块包含代码和架构;数据库是已发布的实例,以名称或标识来区分。
spacetime publish <DATABASE_NAME>会构建并上传模块,在存在init时运行它,然后开始提供模块服务。- 发布到现有数据库时,会尝试自动迁移,并在保持客户端连接活跃的同时,原子性地热切换模块。
- 公共架构、reducer、procedure 或视图的接口发生变化后,重新生成并发布客户端绑定。
- Reducer 在自动事务中运行;procedure 在需要写入数据库时会手动开启事务。
迁移检查清单
- 安全:添加表、添加索引、添加或移除自动递增注解、将私有表设为公开、添加 reducer、移除唯一约束。
- 可能造成破坏性影响:在末尾添加带默认值的列、更改或移除 reducer、将公开表设为私有、移除主键、移除订阅所用的索引。
- 自动迁移禁止:移除表、移除/重命名/重新排序/更改现有列、添加没有默认值的列、在中间添加列、更改调度表状态、添加唯一约束或主键约束。
- 开发期间,
--delete-data可用于重置数据。除非确实要永久丢失数据,否则不要在生产环境中使用。 - 对于生产环境中禁止的更改,请采用增量迁移策略:添加新结构、双写并回填、迁移客户端,然后稍后弃用旧结构。
参考索引
指南
- 更改表结构、名称、索引、约束或公开/私有可见性前,先检查迁移是否安全。
- 对于架构定义,请加载 spacetimedb-tables。
- 对于 reducer 事务行为,请加载 spacetimedb-reducers。
评论
支持 Markdown