Veritabanlarındaki alan mantığı yaşı aşıldı mı? [kapalı]


9

Son zamanlarda 2016'da bu görüşe tökezledim , veritabanında hala etki alanı mantığı için bir durum var.

Bunun tamamen eski olduğunu düşündüm. Ben sadece adamın hala 90'lı yaşlarda mı yaşadığını merak ediyorum ya da bu gerçekten doğru olabilir. Eski sistemleri bir kenara koyun.

Güvenlik gereksinimleri nedeniyle veritabanında etki alanı mantığı oluşturmaya ne dersiniz? Bu gerçekten yapılacak bir şey mi?


3
Bu makaleyi tam olarak okudunuz mu? Bence yazar çok iyi anlaşılıyor ve BL'nin hangi bölümleri için en iyi veri tabanına yerleştirildiğini ve hangi bölümleri için olmadığını açıklıyor. Peki bu makaleden hangi noktaları tam olarak mücadele ediyorsunuz?
Doc Brown

Evet, 18 Şubat 2009'da kapandı ve şimdi yanlış.
Michael Durrant

Merak ediyor. Bu adamı okudum, çok sayıda SQL örneği veriyorum (şiddetle Oracle'a bağlı) ve sonra müşterimin bana şunu söylediğini hatırlayamıyorum: Oracle'ın PRE env için lisansını almayı unuttum. Biz PRO için var ama PRE için değil. Bir süre PRE'deki MySQL ve PRO'daki Oracle'a karşı uygulamayı bir süreliğine dağıtmanız gerekecek ... Oracle'a şu anda oracle'in tüm parlak özelliklerinin nereye gittiğini soracağım ... (Sorun burada bir nedendi Bilmek istemiyorum, mimar Orm yerine yerli Sql - satır eşleme yoluna gitmeye karar verdi, ancak yine de DB sağlayıcısına kilitlenme sorununa yakın) .
Laiv

@Laiv: Bu delilik ve hiçbir ORM veya başka soyutlama sizi kurtaramayacak. Temel olarak test edilmemiş kodu böyle bir kurulumla üretime dağıtıyorsunuz.
JacquesB

2
"Veritabanlarındaki alan mantığının yaşı bitti mi?" Tanrım, umarım.
lunchmeat317

Yanıtlar:


13

Programcılar bugünlerde, özellikle diğer insanların bloglarına yazdıkları düşünceleri okuduklarında çok dogmatik düşünüyorlar.

Örneğin, Bob Martin'in Temiz Kodlama blogunu ele alalım. Genel bir gözlem olarak, Bob Martin'in yazılarını oldukça net ve berrak buluyorum, bu yüzden insanların sürekli olarak yazdığı şeylerle (SOLID ilkeleri gibi) karıştırılmaları beni şaşırtıyor. “Tek Sorumluluk” un ne olması gerektiğine ya da bazı sınıfların neden Liskov'un ilkelerini ihlal ettiğine, muhtemelen yapmaları gereken şeyleri daha iyi kod yazmak ve önce biraz deneyim kazanmak için çabalamak, blogların bir bağlamı vardır.


Temel olarak söylediğiniz şey, veritabanının tablo ve veri içermesi ve içermesi gereken şey olmasıdır. Ancak veritabanları, veritabanlarının iyi olduğu belirli şeyleri yapmak için benzersiz bir şekilde uygundur.

Makale şu şeylere atıfta bulunuyor:

  • Veri Bütünlüğü ve Doğrulaması (örn. Boş ve benzersiz kısıtlamalar)
  • Satır Seviyesinde Güvenlik
  • Saklı Yordamları Kullanarak API Yazma
  • Bakiyeleri hesaplama
  • Veritabanı sorularının sorulması (yani sorgulama ve raporlama)
  • N + 1 gibi ORM problemlerinden kaçınma

veritabanına koymak için uygun şeyler olarak. Ona katılıyorum.

İş mantığını (genel olarak) bir veritabanına koymamanızın nedenleri:

  • Satıcı kilitleme
  • Veritabanınız merkezi otorite değil
  • Ekibiniz ilişkisel düşünmüyor
  • Alt takım.

Ancak bunlar genellikle sadece veri tabanının benzersiz olarak uygun olmadığı teknikler, araçlar ve eğitim için geçerlidir.

Yani, yazılım geliştirmedeki diğer tekniklerde olduğu gibi, duruma göre değişir. Alternatiflerinizi değerlendirirsiniz ve kararınızı, uygulamanız için mümkün olan en iyi eylem yolu olduğuna inandığınız şeye dayanarak alırsınız.


3
Soruyu çerçevelemek için çok iyi bir kırılma ve daha iyi bir yol.
candied_orange

9

resim açıklamasını buraya girin

At ve buggy yaşı bitti, yine de buggy kamçı satın alabilirsiniz.

Neden? Arabalar daha hızlı, bakımı daha ucuz ve ihmal edilmesi insancıl toplumdan ziyaret üretmeyecekse, at ve araba neden hala etrafta?

Çünkü bazen popüler nedenlerden başka bir şey yapmak için farklı nedenleriniz olabilir.

Öğrenmeniz gereken şey, bir veritabanındaki etki alanı mantığının neden sorunlara yol açtığı ve herkesin bundan ne elde edebileceği. Sonra kendi kararını ver.

Kişisel görüşüm:

Etki alanı mantığı davranışla ilgilidir. Veritabanları kalıcılık, ilişkiler ve iyi verilerle ilgilidir. Bu şekilde gördüğünüzde iş kuralları veritabanında olmamalıdır.

Öte yandan kim, veritabanı davranış olamaz dedi? Filemaker kullanarak ofis veritabanları oluşturdum. İnsanlar buna bir veritabanı diyorlar ama gerçekten de bir uygulama geliştirme ortamı. Her şey sorunsuz bir şekilde entegre ve bir veritabanı denir.

Bilgelik genellikle aşırı görüşler arasında bulunur. Hiç şüphe yok ki işe yarayabilir. Ortayı bulmaya çalışırken sadece sürüyü takip etmek cazip geliyor. Burada buna karşı uyaracağım.

Etki alanı mantığını veritabanında tutan bir sistem iyi çalışabilir. Etki alanı mantığını veritabanının dışında tutan bir sistem iyi çalışabilir. Her iki yerde de etki alanı mantığını karıştıran bir sistem beni batırıyor. Nereye yeni davranışlar koyacağımı bilmiyorum. Eski davranışları nerede bulacağımdan emin olmayacağım.

Hala bir bozuk para çevirmeye karar veremiyorsanız ve herhangi bir proje için müjde olarak kararını verin. Söyleyebildiğim kadarıyla, madeni para neyin en iyisi olduğunu biliyor.


1
Cevabınız, OP ile bağlantılı makaleye bile bakmadığınız anlamına geliyor (yazarın doğru ya da yanlış olduğunu söylemiyorum), ancak bize bu makalede açıklanan görüşleri kabul ettiğiniz ya da farklı bulduğunuz yeri söyleyebilir misiniz?
Doc Brown

@DocBrown Ben de okumadım, ama bu cevap zaten tamamen katılıyorum. Ve alıntılanan bir makaleye değil , OP'nin sorusuna (son cümle) yöneliktir .
qwerty_so

@DocBrown Makalenin alıntı yaptığı Bob Amca makalesini okuduğunu düşünmüyorum : "Eklenti mimarileri çok sağlam çünkü sabit yüksek değerli iş kuralları kullanıcı arabirimleri ve veritabanları gibi değişken düşük değerli modüllere bağlı olarak tutulabilir.". Bob Amca bu fikre karşı benden daha güçlü görüşlere sahip. Bu makale kiraz Bob'un makalesinden alır ve Bob'un olmadığı bir şey söylüyor gibi görünmesini sağlar.
candied_orange

2

İş katmanında çözmenin gerçek bir performans katili olacağı bir durumum vardı.

Uygulama OO güvenlik konseptimiz roller VE gruplarından oluşur. Ve her ikisi de özyinelemeli yapılardır. Bir etki alanı nesnesinde bir kullanıcının iznini çözen bir saklı yordam yazdık.

Veritabanı mantığına geri dönme ihtiyacı daha azdır. Ama bu durumda bu şekilde gitmeye karar verdim. Ama her zaman dikkate almanız gerekenler: Soyutlamadan vazgeçersiniz. Veri tabanında iş mantığınız olur olmaz kalıcılık katmanınızı değiştirmek için zor bir gününüz olur. Bu yüzden çok dikkatli olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.