Sobes.tech
Senior

Veritabanı göçleri hakkında bize bilgi verin: Nasıl gerçekleştirdiniz, göç sırasında hataları nasıl ele aldınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

Veritabanı göçlerini genellikle Goose veya Flyway gibi araçlar kullanarak yapardım; bu araçlar şema sürümlerini yönetmeye ve değişiklikleri ardışık olarak uygulamaya olanak tanır.

Göç süreci:

  1. Şema değişiklikleri içeren göç betikleri oluşturdum (tablolar oluşturma, sütunları değiştirme vb.).
  2. Test ortamında göçleri test ettim.
  3. Staging ortamında göçleri uyguladım ve doğruluğunu kontrol ettim.
  4. Üretimde minimum kesintiyle göçü gerçekleştirdim.

Hata yönetimi:

  • Hatalar durumunda değişiklikleri geri almak için göçlerde işlemleri transaction içinde kullandım.
  • Hataları kaydettim ve ekibi bilgilendirdim.
  • Kritik hatalarda göçü geri alıp sorunu analiz ettim.
  • Karmaşık durumlarda manuel veri düzeltmeleri için betikler yazdım.

Goose'dan Go'ya göç örneği:

package main

import (
    "database/sql"
    "github.com/pressly/goose/v3"
)

func Up(tx *sql.Tx) error {
    _, err := tx.Exec(`ALTER TABLE users ADD COLUMN age INT;`)
    return err
}

func Down(tx *sql.Tx) error {
    _, err := tx.Exec(`ALTER TABLE users DROP COLUMN age;`)
    return err
}

Bu yaklaşım sürüm kontrolü ve değişikliklerin güvenliği sağlar.