Geliştiricilerin (DV'ler) ve DBA'ların kafasında kaçınılmaz olarak gerçekleşmesi gereken, yani zihinlerin buluşması. Business Logic (BL) ile çalışmak ve böyle bir veritabanında saklamak, uygulanmasını yücelten veya dehşete düşüren bir etkiye sahip olabilir.
Bazı RDBMS ürünleri için, uygulamalarında hızlıca öğrenip kullanabilecekleri İş Mantığı ve Nesne Altyapıları için üstün kütüphaneler / araçlar / API'ler bulunmaktadır. Diğer RDBMS için, kitaplık / araç / API yoktur.
Geçmişte, istemci sunucu uygulamaları, Saklı Prosedürler (SP) aracılığıyla köprüyü BL yapmıştır. Oracle ve SQL Server gibi ürünler için bu erken yapıldı. PostgreSQL ve MySQL gibi açık kaynak veritabanları ortaya çıktıkça, bunları kullananlar BL'da saklı yordamlarla yeni bir çığır açma riski taşıyorlardı. PostgreSQL bu konuda çok hızlı bir şekilde olgunlaştı, çünkü yalnızca saklı yordamlar uygulanmadı, aynı zamanda müşteri dillerini oluşturma yeteneği de ortaya çıktı. MySQL temel olarak saklı yordamlar dünyasında evrimleşmeyi bıraktı ve birçok kısıtlamaya sahip bir dilden soyuldu. Bu yüzden, BL'a gelince, tamamen MySQL'in ve onun Kayıtlı Prosedür dilinin insafına kalmışsınızdır.
Sadece bir tek soru var: RDBMS'den bağımsız olarak, BL tamamen veya kısmen veritabanında mı kalmalı?
Geliştirici düşünün. Bir uygulamada işler ters gittiğinde, hata ayıklama işlemi, Geliştirici'nin aralıklı olarak doğru olabilecek ya da olmayabilir veri değişikliklerini izlemesi için bir veritabanına girip çıkacaktır. Bir C ++ uygulamasını kodlamak ve ortasında Assembler kodunu çağırmak gibidir. Kaynak koddan, sınıflardan ve yapılardan kesintilere, kayıtlara ve ofsetlere geçmek zorundasınız. Bu aynı seviyede hata ayıklama alıyor.
Geliştiriciler, veritabanı yerine bellekte oturan iş nesneleri yoluyla dil yapılandırmalarıyla (C ++ için derleyici bayrakları, PHP / Python için farklı ayarlar, vb.) Bağlantılı olarak BL yürütmek için yüksek hızlı bir yöntem oluşturabilirler. Bazıları bu ideolojiyi daha hızlı çalıştırma kodları için veritabanına yerleştirmeyi denedi.
Bu nedenle, Geliştirici'nin iki dilde kaynak kodunu ve BL'yi geliştirmesi, hata ayıklaması ve bakımını yapması istenmektedir.
Şimdi DBA'yı düşünün. DBA Veritabanını saklı işlemler alanında mümkün olduğunca yalın ve ortalama tutmak istemektedir. DBA, BL'yi Veritabanının dışında bir şey olarak görebilir. Ancak, SQL, BL için gereken verileri aradığında, SQL'in yalın ve ortalama olması gerekir.
Şimdi, zihinlerin buluşması için !!!
Geliştirici SP kodları ve yinelemeli yöntemler kullanır. DBA SP'ye bakar. DBA, tek bir SQL ifadesinin Geliştirici tarafından yazılan yinelemeli yöntemleri değiştirebileceğini belirler. Geliştirici, DBA tarafından önerilen SQL ifadesinin, SQL ifadesinin normal yürütme planlarını izlemeyen diğer BL ile ilgili kodu veya SQL'i çağırmayı gerektirdiğini görür.
Bunun ışığında, yapılandırma, performans ayarlama ve SP kodlama, veri alımı için BL derinliğinin ve veri yoğunluğunun bir işlevi haline gelir. Veritabanına verilen veri ve işlem gücü miktarı için BL ne kadar derin ve veri yoğunluğu arttıkça, Geliştiriciler ve DBA aynı sayfada olmalıdır.
SONUÇ
Veri toplama şekli her zaman hem Geliştirici hem de DBA kamplarını içermelidir. Hem hız hem de verim için, hangi kodlama yöntemlerinin ve veri alma paradigmalarının birlikte çalışabileceği konusunda taviz verilmelidir. Kaynak kodun işlenmesi için verilerin hazırlanması, kod verileri almadan önce yalnızca bir kez yapılırsa, DBA yalın ve ortalama SQL kullanımını dikte etmelidir. BL, DBA ile uyumlu olmayan bir şeyse, dizginler daha sonra Geliştiricinin elindedir. Bu nedenle, DBA kendini ve proje ekibinin bir bölümünü görmeli ve kendine ait bir ada değil, geliştirici DBA'nın gerekli gördüğü durumlarda SQL'in ince ayarını yapmasına izin vermelidir.