Foreign key, Foreign key, Foreign key derdi Napolyon, programcı olsaydı
Mesaj gönderen fatihbarut » 23 Kas 2017 08:30
Arkadaşlar, yanılıp yenilip de foreign key mimarisi olmadan çalışan var mıdır?
Zira günümüzün database mimarisinde bir şekilde foreign key'lere önem vermeyen varsa yarın çok ağlayacaktır.
Re: Foreign key, Foreign key, Foreign key derdi Napolyon, programcı olsaydı
Mesaj gönderen ertank » 23 Kas 2017 11:02
Şahsen foreign key kullanmam uygulamalarımda. Database performansını göreceli olarak düşürür. Ayrıca programcı tarafından tam anlamı ile kontrol altına alınabilen bir konudur.
Mesaj gönderen fatihbarut » 23 Kas 2017 11:40
Foreign key bana şunu hatırlatıyor;
Futbol kalesinin içini tuğla ile örmek gibi bir şey.
Mesaj gönderen fatihbarut » 23 Kas 2017 12:07
Dip not: Bir SOA eğitimine katılmıştım. Konu Database integrity oldu.
Ben biraz geç katılmışım, bu foregin key falan meselelerinde direkt reaksiyon verdim "programcı tarafından tam anlamı ile kontrol altına alınabilen bir konudur. ne lüzum var"
Sınıfta 10 kişi falan var bi tek benden ses çıktı.
Öğretmen dedi ki, diğer arkadaşların reaksiyonlarını almak için baya zaman harcadık size de izah etmeyelim.
Neyse ki o izah etmese de ben anladım haklı olduğunu zaman içinde...
Mesaj gönderen fatihbarut » 23 Kas 2017 12:13
Bu konu bir de bana şunu hatırlatıyor. Filmimizin kahramanına Savaşa girerken zırh ve kalkan tavsiyesinde bulunuyorlar. Cevap şu "Kılıcım var!"
Sonra bu kılıç ustasının yanından 3 tane ninja geçiyor, şink şink diye bir ses duyuluyor ardından biraz bekleyip dökülüyor kahramanımız.
Tahmin edilemeyen olasılıklar acımaz.
Mesaj gönderen ertank » 23 Kas 2017 12:48
Database sistemlerindeki tüm özellikler bir işlemi kolaylaştırmak için çıkarılmıştır. Faydasız bir özellik için kimse zaman harcamaz. Belirli durumlarda can kurtarıcı olan bir özellik başka bir kullanım durumunda önünüze engel olarak çıkabilir. Her özelliğin mutlaka her database için kullanılması da gerekmez.
Database boyutu büyüdükçe, uygulamanıza dışarıdan farklı kaynaklardan verilerin alınabilmesine olanak tanıdıkça şahsen karşıma kolaylık değil güçlük olarak çıktığı için kullanmamayı tercih ediyorum.
- Kayıt girişlerini yavaşlatıyor.
- Kayıt silme işlemlerini yavaşlatıyor.
- Kod tablosundan foreign key tanımlı alanı değiştirmeniz duruma göre bütün hareket tablosunda "update" işlemi gerçekleştirmek anlamına ya da "cascade" kullanılmamış ise bunu hiç yapamamak anlamına geliyor. (Bunun yerine ana kayıt güncellemesini yapıp hareket dosyalarının güncellemesini gece yarısı çalışan bir servis ile yapmak hem daha hızlı hem kullanıcı çalışmasını engellememiş oluyor)
- Kod tablosundan foreign key tanımlı kayıtların silinme işlemi de yukarıdaki durumun aynısıdır. (Mesai saatleri içi yoğun çalışma esnasında bir kullanıcı bütün silme işlemlerini durdurabiliyor çünkü bir kayıtta değişiklik yapmak için o kaydı kilitlemiş oluyor)
Database integrity bozulmasına tek sebep foreign key değildir. En uç örneklerden bir tanesi (ki daha birçok örnek vardır) "database versiyon güncellemesi sırasında fark edilen primary key indeks bozulması" olabilir mesela. Eski database sisteminde yedek alıp yeni database sistemine yedeği açarken karşınıza çıkar. Belki elektrik kesintisi veya database sistemindeki bir hata (bug) sebep olmuş olabilir. Ancak böyle bir durumda tekil olmasını beklediğiniz alanda aynı koddan birden fazla kayıt olduğunu görmeniz mümkün. Yani herşey yolunda sandığınız bir anda öyle olmadığını ve çok ciddi sorunların olduğunu fark edebiliyorsunuz.
Bununla birlikte sizin uygulamanızda çok kolaylıklar getirebilir ki bu durumda mutlaka faydalanmalısınız.
Mesaj gönderen emrahgs » 27 Kas 2017 01:30
Büyük projelerin büyük databaselerin de
çoğu zaman verilerin sizin istediğiniz gibi düzenli sıralı gelmeyebiliyor
Database e entegre olan onlarca farklı yazılım
ve Databasle Çalışan Bi çok Bayii Oluyor
Birden Bire , Farklı Ortamlardan Database'e Veri aktarımı Gerekebiliyor
Bu durumlar da Foregin keyler işi içinden çıkılmaz bir hale dönüştürüyor
Mesaj gönderen fatihbarut » 27 Kas 2017 01:33
Foreign key'i disable etmek 10 saniye sürüyor baştan sistemi foreignkeyli kurarsanız yıkabilirsiniz.
Ama sistem foreignkeysiz olursa o zaman o sizi yıkabilir. zira sonradan ilave etmek öyle kolay değil