TableSchema ile veritabanı yapısı yükseltmeleri: karşılaştır, planla, uygula
Bu yazı, bir .NET ERP çerçevesinde tablo tanımının (TableSchema) veritabanı yapısını nasıl güncellediğini anlatıyor. Yükseltme, betik yerine mevcut veritabanı durumunu karşılaştırıyor ve işlemi karşılaştır, planla, uygula diye üç adıma ayırıyor. Veri içeren tablolarda ALTER ile rebuild arasındaki farkı önceden görmek isteyen geliştiriciler için pratik bir bakış sunuyor.
Kilit noktalar
- Yükseltme, sürüm betikleri yerine veritabanının mevcut halini tanımla karşılaştırır; başarılı bir çalıştırma sonrası tüm sütunlar tanımla eşleşir.
- Plan adımı veritabanına dokunmadan ALTER, rebuild veya değişiklik yok sonucunu üretir; kuru çalıştırma ile tespit edilebilir.
- Rebuild, tabloyu geçici tabloya kopyalayıp yeniden adlandırır; büyük tablolarda kilitlenme süresi saatlere çıkabilir.
- Tip, uzunluk ve nullability değişiklikleri ALTER ile yapılır; aile değiştiren değişiklikler rebuild gerektirir.
- Tanımda olmayan sütunlar silinmez; sütun kaldırma otomatik yapılmaz.
Yazar, bir ERP çerçevesinde tablo yapısını belirleyen TableSchema tanımının, veritabanındaki fiziksel yapıyı nasıl yönettiğini anlatıyor. Temel fikir, sürüm numaralı migration betikleri yerine her yükseltmede veritabanının mevcut durumunu tanımla karşılaştırmak. Fark, yapılacak işlem planı olarak önce hesaplanıyor, ardından uygulanıyor. Plan, işlemin ALTER mi yoksa tabloyu baştan kuran rebuild mi olduğunu gösteriyor; rebuild, büyük tablolarda bakım penceresi gerektirebilir.
Yazıda ayrıca tip eşlemesinin çerçeve tarafında tutulması, beş aşamalı ALTER akışı ve bir aşama hata verdiğinde yeniden çalıştırmanın neden tam geri alma yerine tercih edildiği ele alınıyor. Çerçeve, sütun silmeyi bilerek desteklemiyor. Ayrıntılar ve kod örnekleri için orijinal yazıya göz atmak faydalı olur.
Gerçek dünyada kullanımı
- Milyonlarca satır içeren bir sipariş tablosunda bir sütunun uzunluğunu artırmadan önce rebuild gerekip gerekmediğini kontrol etmek.
- Birden fazla veritabanını destekleyen bir ERP ürününde aynı tanımla SQL Server ve PostgreSQL şemalarını yönetmek.
- Üretimde elle değiştirilmiş bir veritabanını, yeniden çalıştırılabilir bir yükseltmeyle tanıma hizalamak.
Neden önemli
Veri içeren tablolarda şema değişikliğinin kesinti gerektirip gerektirmediğini dağıtımdan önce bir plan çıktısından okuyabilirsiniz. Tanım ile veritabanı arasındaki uyumsuzluğu betik sırası yerine yeniden çalıştırılabilir karşılaştırmayla kapatmak, üretim dağıtımlarını daha öngörülebilir kılar.
Benzer haberler
- NebulaGraph'a .NET'ten idempotent toplu yükleme: VID ile çoğaltma sorunuDEV Community: #csharp3 gün önce
- Marten ile event sourcing'de yazdığın veriyi hemen oku: ProjectLatest ve UpdatedAggregateJeremy D. Miller (The Shade Tree Developer)6 gün önce
- C# interface'lerinde collection dönüş tipleri: interface, view ve snapshot farkıNick Cosentino (Dev Leader)2 gün önce