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が存在する場合は実行して、モジュールのサービスを開始します。- 既存のデータベースに公開すると、自動マイグレーションが試行され、アクティブなクライアント接続を維持しながらモジュールがアトミックにホットスワップされます。
- 公開スキーマ、リデューサー、プロシージャ、ビューのインターフェイスを変更した後は、クライアントバインディングを再生成して配布してください。
- リデューサーは自動トランザクション内で実行されます。プロシージャでは、データベースへの書き込みが必要な場合に手動でトランザクションを開始します。
マイグレーションのチェックリスト
- 安全:テーブルの追加、インデックスの追加、自動インクリメントのアノテーションの追加または削除、プライベートテーブルの公開、リデューサーの追加、一意制約の削除。
- 破壊的変更となる可能性があるもの:末尾にデフォルト値付きのカラムを追加する、リデューサーの変更または削除、公開テーブルの非公開化、主キーの削除、サブスクリプションで使用されているインデックスの削除。
- 自動マイグレーションでは禁止:テーブルの削除、既存カラムの削除・名前変更・順序変更・変更、デフォルト値のないカラムの追加、途中へのカラムの追加、スケジュールテーブルの状態変更、一意制約または主キー制約の追加。
- 開発中は、
--delete-dataを使ってデータをリセットできます。恒久的なデータ損失を意図している場合を除き、本番環境では使用しないでください。 - 本番環境で禁止されている変更を行う場合は、追加型のマイグレーション戦略を使用してください。新しい構造を追加し、二重書き込みとバックフィルを行ってクライアントを移行した後、古い構造を廃止します。
リファレンスマップ
ガイダンス
- テーブル構造、名前、インデックス、制約、公開・非公開の可視性を変更する前に、マイグレーションの安全性を確認してください。
- スキーマ定義については、spacetimedb-tables を読み込んでください。
- リデューサーのトランザクション動作については、spacetimedb-reducers を読み込んでください。
コメント
Markdown 対応