Veritabanı Migration'ı
- İngilizcesi
- Database Migration
- Türkçe karşılığı
- veritabanı geçişi, şema geçişi
- Okunuşu
- deytıbeys maygreyşın
Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.
Kısaca
Veritabanı migration'ı, bir sütun eklemek gibi veritabanı şemasını değiştiren sürümlü bir betiktir; her ortam aynı değişiklikleri aynı sırayla uygular.
Veritabanı migration'ı nedir?
Şema migration'ı olarak da adlandırılan veritabanı migration'ı, bir tablo oluşturmak, sütun eklemek ya da indeks eklemek gibi veritabanı yapısındaki tek bir değişikliği tarif eden küçük, sürümlü bir dosyadır. Migration'lar projenin deposunda uygulama kodunun yanında saklanır ve sırayla uygulanır; böylece veritabanı şeması, ona bağımlı kodla birlikte adım adım evrilir.
Bir migration aracı, veritabanında hangi migration'ların zaten çalıştığını kaydeden özel bir tablo tutar. Dağıtım yaptığınızda araç bu listeyi migration dosyalarıyla karşılaştırır ve yalnızca yenileri uygular; genellikle bir CI/CD hattından ya da uygulama başlangıcında. Birçok migration ayrıca değişikliği geri alan bir down adımı içerir. Yaygın araçlar Flyway ve Liquibase'dir; Django, Rails, Entity Framework, Prisma ve Drizzle gibi framework'ler ve ORM'ler ise yerleşik migration sistemlerine sahiptir.
Migration'ları veritabanı yapınız için sürüm kontrolü olarak düşünün: Git her geliştiricinin aynı kodu geçmişinden yeniden oluşturmasını sağladığı gibi, migration'lar da her dizüstü bilgisayarın, test sunucusunun ve üretim veritabanının tam olarak aynı şemaya ulaşmasını sağlar. Bu, üretim tablolarını elle değiştirip aynı değişikliği başka her yerde tekrarlamayı unutma gibi riskli alışkanlığın yerini alır.
Canlı sistemlerdeki migration'lar dikkat gerektirir; çünkü bazı değişiklikler büyük tabloları kilitler ya da hâlâ çalışan uygulama sürümünü bozar. Yaygın güvenli yaklaşım genişlet-ve-daralt (expand-and-contract) örüntüsüdür: önce yeni sütunu ekleyin, hem eski hem yeni sütuna yazan kodu dağıtın, mevcut satırları doldurun ve eski sütunu ancak daha sonra kaldırın. Veritabanı migration'ının, MySQL'den PostgreSQL'e geçmek gibi veriyi bir veritabanı sisteminden başkasına taşımak anlamına da gelebileceğini, bunun ise ayrı türde bir proje olduğunu unutmayın.
Önemli noktalar
- Migration, tek bir şema değişikliğini tarif eden sürümlü bir dosyadır.
- Migration'lar kodla birlikte commit edilir ve sabit bir sırayla uygulanır.
- Araç uygulanan migration'ları kaydeder; böylece her biri veritabanı başına yalnızca bir kez çalışır.
- Araç destekliyorsa down migration'lar bir değişikliği geri alabilir.
- Canlı veritabanlarını kesinti olmadan değiştirmek için genişlet-ve-daralt adımlarını kullanın.
Örnek
-- migrations/20260930120000_add_phone_to_users.sql
-- Up: apply the change
ALTER TABLE users ADD COLUMN phone TEXT;
CREATE INDEX idx_users_phone ON users (phone);
-- Down: undo the change
DROP INDEX idx_users_phone;
ALTER TABLE users DROP COLUMN phone;Sık sorulan sorular
Şema migration'ı ile veri migration'ı arasındaki fark nedir?
Şema migration'ı, tablolar, sütunlar ve indeksler gibi veritabanının yapısını değiştirir. Veri migration'ı ise yeni bir sütunu doldurmak ya da kayıtları farklı bir veritabanı sistemine aktarmak gibi verinin kendisini değiştirir veya taşır.
Uygulanmış bir migration'ı düzenlemeli miyim?
Hayır. Bir migration paylaşılan ya da üretim veritabanında çalıştıktan sonra, sonraki değişiklikler için yeni bir migration yazın; çünkü eski dosyayı düzenlemek mevcut veritabanlarının onunla senkronunu bozar.
Veritabanı migration'ları geri alınabilir mi?
Birçok araç değişikliği geri alan bir down migration yazmanıza izin verir, ancak bir sütunu silmek gibi bazı değişiklikler veriyi yok eder ve gerçekten geri alınamaz. Üretimde ekipler çoğunlukla düzeltici yeni bir migration ile ileriye doğru gitmeyi tercih eder.
İlgili sayfalar
- VeritabanıVeritabanları, s. 37Veritabanı, bilgisayarda düzenli biçimde saklanan ve uygulamaların verimlice kaydedip arayıp güncelleyebildiği, bir yazılımla yönetilen veri topluluğudur.
- SQLVeritabanları, s. 29SQL, ilişkisel veritabanlarıyla çalışmanın standart dilidir; tablo oluşturmak ve içindeki veriyi eklemek, sorgulamak, güncellemek ve silmek için kullanılır.
- ORMVeritabanları, s. 24ORM, veritabanı tablolarını programlama dilinizdeki nesnelere eşleyen ve ham SQL yerine kodla veri okuyup yazmanızı sağlayan bir kütüphanedir.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- GitSürüm Kontrolü, s. 10Git, dosyalardaki değişiklikleri zamanla izleyen ücretsiz, açık kaynaklı dağıtık sürüm kontrol sistemidir; iş birliğini ve hataları geri almayı kolaylaştırır.
- Blue-Green DeploymentDevOps ve Bulut, s. 4Blue-green deployment, iki özdeş canlı ortam kullanan ve tüm trafiği eski sürümden yeni sürüme tek seferde geçiren bir yayın stratejisidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin