Kesintisiz veritabanı geçişleri (migration)
Kısaca: Canlı işletimdeki şema değişiklikleri, küçük ve geriye uyumlu adımlara bölünürse (“expand and contract”) kesinti olmadan başarılır.
Biraz daha ayrıntılı: Dağıtım sırasında eski ve yeni program sürümleri kısa süre aynı veritabanında yan yana çalışır. Şema ikisini de anlamalıdır.
Ayrıntılı
- Expand: Eskiden hiçbir şeyi kaldırmadan yeni sütunlar veya tablolar ekle. Yeni sütunları null yapılabilir veya varsayılan değerli oluştur.
- Migrate: Yeni program sürümü iki yere de (eski ve yeni) yazar. Mevcut verileri arka planda küçük gruplar hâlinde kopyala.
- Contract: Ancak her şey geçirilip denetlendikten sonra, sonraki bir sürümde eskiyi kaldır.
- Sütun yeniden adlandırma örneği:
RENAMEdeğil; yeni sütun oluştur, çift yaz, kopyala, okumaları geçir, eski sütunu sonra sil. - Tehlikeli komutlar: Veritabanına göre varsayılan değerli
ADD COLUMN, indeks oluşturma (CREATE INDEX CONCURRENTLYkullan) veya tür değişiklikleri tüm tabloyu kilitler. - Geri dönüş: Her adım tek başına geri alınabilir olmalı. Geçişleri sürümle ve ardışık düzende çalıştır.
- Araçlar: Flyway, Liquibase, Prisma Migrate,
gh-ost(MySQL).
Ayrıca bak: İşlemler ve ACID