提供数据库迁移最佳实践,涵盖架构变更、回滚与零停机发布方案。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "database-migrations" 技能: 1. 下载 https://raw.githubusercontent.com/affaan-m/ECC/main/docs/tr/skills/database-migrations/SKILL.md 2. 保存为 ~/.claude/skills/database-migrations/SKILL.md 3. 装好后重载技能,告诉我可以用了
我需要把 PostgreSQL 的 users 表新增非空字段,并保证线上服务零停机。请给出分阶段 migration 方案、SQL 示例、应用发布顺序和回滚策略。
输出分阶段迁移步骤、兼容性注意事项、示例 SQL、上线顺序与回滚方案。
请比较 Prisma、Drizzle、TypeORM 和 Django migration 在重命名字段、修改索引和数据回填上的最佳实践,并给出推荐写法。
输出不同 ORM 的迁移差异、风险点、推荐模式与示例代码结构。
我有一个 MySQL 数据迁移会更新历史订单状态。请帮我设计可审计、可回滚的 migration 方案,包括备份、校验、回滚脚本和验证清单。
输出包含备份策略、校验步骤、回滚脚本思路和上线检查清单的完整方案。
Üretim sistemleri için güvenli, geri alınabilir veritabanı şema değişiklikleri.
Herhangi bir migration uygulamadan önce:
-- İYİ: Nullable sütun, kilit yok
ALTER TABLE users ADD COLUMN avatar_url TEXT;
-- İYİ: Varsayılanlı sütun (Postgres 11+ anlık, yeniden yazma yok)
ALTER TABLE users ADD COLUMN is_active BOOLEAN NOT NULL DEFAULT true;
-- KÖTÜ: Mevcut tabloda varsayılansız NOT NULL (tam yeniden yazma gerektirir)
ALTER TABLE users ADD COLUMN role TEXT NOT NULL;
-- Bu tabloyu kilitler ve her satırı yeniden yazar
-- KÖTÜ: Büyük tablolarda yazmaları engeller
CREATE INDEX idx_users_email ON users (email);
-- İYİ: Engellemez, concurrent yazmalara izin verir
CREATE INDEX CONCURRENTLY idx_users_email ON users (email);
-- Not: CONCURRENTLY transaction bloğu içinde çalıştırılamaz
-- Çoğu migration aracı bunun için özel işleme ihtiyaç duyar
Üretimde asla doğrudan yeniden adlandırmayın. Expand-contract kalıbını kullanın:
-- Adım 1: Yeni sütun ekle (migration 001)
ALTER TABLE users ADD COLUMN display_name TEXT;
-- Adım 2: Veriyi backfill et (migration 002, veri migration'ı)
UPDATE users SET display_name = username WHERE display_name IS NULL;
-- Adım 3: Uygulama kodunu her iki sütunu okuma/yazma için güncelle
-- Uygulama değişikliklerini deploy et
-- Adım 4: Eski sütuna yazmayı durdur, kaldır (migration 003)
ALTER TABLE users DROP COLUMN username;
-- Adım 1: Sütuna tüm uygulama referanslarını kaldır
-- Adım 2: Sütun referansı olmadan uygulamayı deploy et
-- Adım 3: Sonraki migration'da sütunu kaldır
ALTER TABLE orders DROP COLUMN legacy_status;
-- Django için: SeparateDatabaseAndState kullanarak modelden kaldır
-- DROP COLUMN oluşturmadan (sonra sonraki migration'da kaldır)
-- KÖTÜ: Tüm satırları tek transaction'da günceller (tabloyu kilitler)
UPDATE users SET normalized_email = LOWER(email);
-- İYİ: İlerleme ile batch güncelleme
DO $$
DECLARE
batch_size INT := 10000;
rows_updated INT;
BEGIN
LOOP
UPDATE users
SET normalized_email = LOWER(email)
WHERE id IN (
SELECT id FROM users
WHERE normalized_email IS NULL
LIMIT batch_size
FOR UPDATE SKIP LOCKED
);
GET DIAGNOSTICS rows_updated = ROW_COUNT;
RAISE NOTICE 'Updated % rows', rows_updated;
EXIT WHEN rows_updated = 0;
COMMIT;
END LOOP;
END $$;
…
帮助开发者为代码代理配置性能优化、安全防护与研究优先工作流。
提供数据库迁移、回滚与零停机发布的最佳实践指导,适用于多种 ORM 与 SQL 数据库。
通过双评审智能体对结果进行对抗式校验,提升输出发布前的可靠性
帮助你掌握地道 Rust 模式、所有权与并发实践,编写安全高性能应用。
基于 C++ Core Guidelines 编写、审查并重构更安全现代的 C++ 代码。
为 Claude Code 会话提供系统化校验流程,帮助检查结果正确性与质量。
提供数据库迁移最佳实践,支持模式变更、回滚与零停机发布方案
提供 PostgreSQL 查询优化、模式设计、索引与安全实践建议
提供 PostgreSQL 查询优化、表结构设计、索引与安全实践建议
提供 PostgreSQL 查询优化、模式设计、索引与安全实践建议
提供面向生产后端的 MySQL 与 MariaDB 设计、查询与运维模式建议。
提供 PostgreSQL 查询优化、模式设计、索引与安全最佳实践指导