Bilmek istediğin her şeye ulaş

Yeni bir web projesine başlarken veritabanı yönetimi DbFirst, ModelFirst, CodeFirst yaklaşımlarından hangisi seçilmelidir?

Bilindiği gibi DbFirst ve CodeFirst yaklaşımları proje geliştirirken projenin veritabanı ile olan ilişkisinin development aşamasında ve ürün yayına alındıktan sonraki güncelleme aşamalarında hangi teknikle yönetileceğini seçmemizi sağlayan yaklaşımlardır. Geliştirdiğiniz projelerde bu yaklaşımlardan hangisini kullanıyorsunuz ve avantaj/dezavantajlarını bizimle paylaşır mısınız ?Düzenle
Çok teknik detaylarına inip avantaj ve dezavantajlarını şimdiye kadar hiç araştırmadım. Ama yine de Code-First (CF) kullanmayı seviyor olmamın nedenlerini paylaşmak istiyorum (.NET EntityFramework için konuştuğumuzu varsayıyorum).

Öncelikle bir veritabanı sistemi ile hiç muhatap olmadığınızı hissetmek güzel bir duygu... Model-First için de belki aynı şeyi söyleyebilirdik. Fakat araya tablolarla ilişkiyi tutan bir mapping şema dosyasının giriyor olması bile bence bu hissi ortadan kaldırıyor. Şema içinde tablo isimlerini, foreign key'leri görüyor olmanız, -ki bazı güncelleme işlemlerinde mecburen ya şema dosyasını ya da veritabanını açıp değişiklik yapmak zorunda kalmanız, bu benzerliği tamamen ortadan kaldırıyor. CF ile kısmen NoSQL sistemlerinin sunduğu kolaylığa ulaşabiliyoruz, bu yönden güzel...

CF yöntemi, veritabanı sisteminizi değiştirmeniz gerektiğinde sizi daha az uğraştıracaktır. Şöyle ki; kişisel ufak bir projemde başlangıçta ufak boyutta veri saklıyordum. Verileri temsil eden POCO class'larımı serialize edip, XML dosyasına yazıp okuyordum. Projeyi biraz geliştirince, artık veri tabanına geçme ihityacı duydum. Class'lar üzerinde hiç bir değişiklik yapmama gerek kalmadan EntityFramework CF yöntemi ile SQL-Server üzerine hemen geçiş yaptım. Bir süre sonra EntityFramework'ten ve SQL-Server'dan da vazgeçtim ve MongoDB kullanmaya karar verdim. Ve class'larımdaki "Id" alanlarının tipini değiştirmek dışında hiç bir değişiklik yapmama gerek kalmadı yine aynı şekilde.

Yani işin özeti; veritabanı sistemlerinden elinizi ayağınızı çekmek istiyorsanız, ömür billah bir daha yüzünü dahi görmek istemiyorsanız CF iyidir, candır... Ama performans konusunda bir kıyaslama yapıldığında durumu nedir; açıkçası fikrim yok... Eğer bir performans dezavantajı varsa bile, çok yoğun çalışan bir sistem düşünülmüyorsa, kullanım kolaylığı konusundaki avantajı bence her zaman daha ağır basar.
  • Paylaş
Sonraki Soru
HESAP OLUŞTUR

İstatistikler

459 Görüntülenme4 Takipçi1 Yanıt