# Veritabanı Migration'ı

Adres: https://softwaredictionary.org/tr/terimler/database-migration
Kategori: Veritabanları
Son güncelleme: 2026-09-30
İngilizcesi: Database Migration
Türkçe karşılığı: veritabanı geçişi, şema geçişi
Okunuşu: deytıbeys maygreyşın

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: Up ve down adımları olan bir migration dosyası

```sql
-- 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.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
