İçeriğe geç
parazade

Migration Ne Demek?

Yayın: · Son güncelleme:

Migration Ne Demek? Kısaca

Migration, yazılım geliştirmede veritabanı şemasındaki değişiklikleri sıralı ve sürümlenmiş dosyalar hâlinde tanımlama ve uygulama yöntemidir. Tablo ekleme, sütun değiştirme gibi adımlar kodla kaydedilir ve her ortamda aynı sırayla çalıştırılır.

Migration nedir?
İçindekiler
  1. Migration ne demek?
  2. Nasıl çalışır?
  3. Neden kullanılır?
  4. Canlı ortamda nelere dikkat etmeli?

Migration ne demek?

Migration, İngilizcede "göç" ya da "taşınma" anlamına gelir. Yazılım dünyasında ise çoğunlukla veritabanı şemasını adım adım değiştiren kod dosyalarını anlatır. Her dosya tek bir değişikliği tarif eder: yeni bir tablo oluşturmak, bir sütun eklemek ya da bir indeksi kaldırmak gibi.

Daha genel anlamda sistemden sisteme veri taşımaya da migration denir. Bu kullanım için Türkçede veri göçü ifadesi daha yaygındır.

Nasıl çalışır?

Migration dosyaları oluşturulma sırasına göre numaralanır ya da tarih damgasıyla adlandırılır. Araç, veritabanında hangi dosyaların uygulandığını ayrı bir tabloda tutar ve yalnızca yenilerini çalıştırır. Çoğu dosyada iki bölüm bulunur: değişikliği uygulayan "up" ve geri alan "down".

Varsayımsal bir Laravel projesinde kullanıcılara telefon alanı eklemek için yeni bir migration oluşturulur ve php artisan migrate komutu çalıştırılır. Django'da aynı iş python manage.py makemigrations ve migrate komutlarıyla yapılır. Flyway, Liquibase ve Alembic de yaygın migration araçlarıdır.

Neden kullanılır?

Ekipteki her geliştiricinin yerel veritabanı, test ortamı ve canlı ortam aynı şemayı kullanmalıdır. Elle yapılan değişiklikler unutulur ya da farklı sırayla uygulanır. Migration dosyaları sürüm kontrolüne girdiği için şemanın geçmişi kodla birlikte izlenebilir ve yeni katılan biri tek komutla güncel yapıyı kurabilir.

Canlı ortamda nelere dikkat etmeli?

Büyük tablolarda sütun eklemek ya da türünü değiştirmek tabloyu uzun süre kilitleyebilir. Bu tür değişiklikleri önce test ortamında, gerçeğe yakın veri hacmiyle deneyin. Sütun silme gibi geri dönüşü zor adımlardan önce yedek alın ve uygulamanın eski sürümünün yeni şemayla çalışıp çalışmayacağını kontrol edin.

Sıkça Sorulan Sorular

Migration geri alınabilir mi?

Çoğu araç rollback komutuyla son migration'ı geri almayı destekler, bunun için down adımının doğru yazılmış olması gerekir. Silinen bir sütundaki veri ise yedek yoksa geri gelmez.

Migration ile seed arasındaki fark nedir?

Migration şemayı değiştirir, seed ise tablolara başlangıç ya da test verisi ekler. İkisi genellikle birlikte kullanılır ama farklı amaçlara hizmet eder.

İlgili terimler

Veri Göçü(Data Migration)Veri göçü (data migration), verilerin bir sistemden, biçimden ya da depolama ortamından başka birine taşınması işlemidir. Yeni yazılıma geçiş, buluta taşınma ve veritabanı değişikliği gibi projelerde yapılır.Veritabanı Şeması(Database Schema)Veritabanı şeması (schema), bir veritabanındaki tabloların, sütunların, veri türlerinin, anahtarların ve tablolar arasındaki ilişkilerin yapısını tanımlayan plandır. Verinin kendisini değil, iskeletini anlatır.ORMORM (Object-Relational Mapping, nesne-ilişkisel eşleme), veritabanı tablolarını programlama dilindeki sınıflar ve nesnelerle eşleştiren tekniktir. Geliştirici SQL yazmadan, kendi dilinin koduyla veri okuyup yazabilir.RollbackRollback, bir değişikliği geri alarak sistemi önceki çalışan durumuna döndürme işlemidir. Yazılım yayınlarında hatalı sürümü geri çekmek, veritabanlarında ise yarım kalan bir işlemi iptal etmek için kullanılır.Veritabanı(Database)Veritabanı, verilerin düzenli, aranabilir ve güncellenebilir biçimde saklandığı elektronik kayıt sistemidir. Müşteri listeleri, siparişler ve ürün bilgileri gibi veriler veritabanlarında tutulur.Test Ortamı(Staging Environment)Test ortamı (staging), yazılımın canlıya çıkmadan önce gerçek sisteme olabildiğince benzeyen bir kopyada denendiği ortamdır. Hataları kullanıcıya ulaşmadan yakalamak için son prova işlevi görür.Canlı Ortam(Production Environment)Canlı ortam (production), yazılımın gerçek kullanıcılara hizmet verdiği, gerçek verilerle çalışan asıl sistemdir. Bir web sitesinin herkesin ziyaret ettiği hâli canlı ortamda çalışır ve buradaki hata doğrudan kullanıcıyı etkiler.