Web geliştirmede veritabanlarını kim tasarlar? [kapalı]


11

Web geliştirme bağlamında, veritabanlarını kim tasarlar? Arka uç web geliştiricisini sunucu tarafı işleme, veri modelleme ve benzerleri ile ilişkilendiren bir dizi bilgiye rağmen, denklemin veritabanı tasarımı yönü gizemli bir şekilde yok gibi görünmektedir.

Fiziksel veritabanını kimin kurduğundan bahsetmiyorum, veritabanının mantıksal modelini kimin tasarladığını, hangi alanların gerekli olduğu, bu alan spesifikasyonlarının neler olduğu ve vb. .

Bir veritabanının ( PROPER ) tasarımının küçük bir görev olmadığını ( bu 672 çağrı cihazını okuyorum ) ve kolayca tüm bir meslek olabileceğini fark ettim . Ancak, internette yukarı ve aşağı arama, web geliştirici bağlamında bu görevi kimin üstleneceği için şaşırtıcı derecede küçük sonuçlara yol açtı.


2
Organizasyona ve hangi departmanlara ve yapıya çok bağlı - deneyimlerime göre genellikle arka uç geliştiriciler / çözüm mimarları ve bir veritabanı departmanı varsa, DBA'lar veya belirli veritabanı geliştiricileri ile bağlantılı olarak.
Allan S. Hansen

what those field specifications are, projenizde bir
özellik varsa

1
Bugünlerde hangi çerçeveyi kullanırsanız kullanın veritabanı tasarımınızı belirler.
Pieter B

Yanıtlar:


18

Sorunuz yalnızca web uygulamalarıyla değil, veritabanı arka ucu kullanan her türlü uygulama ile de ilgilidir.

Tecrübelerime göre

  • Veritabanının tasarımı, geliştiricilerin ve DBA'ların birleşik çalışmasıdır.
  • Geliştiriciler kaba veya genellikle çok iyi veritabanı tasarımları yaparlar. Her şey programcıların deneyimine bağlıdır.
  • Geliştiriciler genellikle geliştirme veritabanlarında tablolar oluşturur ve kavramsal bir model ondan tersine mühendislik yapılır.
  • Genellikle kavramsal ER diyagramları diğer ekip üyeleriyle, genellikle müşterilerle tartışılır. Bu aşamada belirgin kavramsal hatalar tespit edilir ve umarım çözülür ve düzeltilir.
  • DBA'nın çalışması böyle bir tasarımı gözden geçirmek ve normal formların ihlallerini tespit etmek için ince ayar yapmaktır.
  • Ayrıca DBA, tablo ve sütunların adlandırma kurallarını uygular
  • Ayrıca DBA, olası performans darboğazlarını öngörür ve daha sonra uygun dizinler oluşturmak için verilerin nasıl sorgulanacağını anlamaya çalışır.
  • Geliştirici / uygulama tasarımcısı ve DBA'lar arasındaki revizyonlar / kontrol / sabitleme döngüsü, model fiziksel bir model oluşturacak kadar olgunlaşana kadar birkaç tekrardan geçer.
  • Genellikle bu sürece yardımcı olmak için çok küçük veritabanları dışında bir veritabanı tasarım aracı kullanılır.

Sonuç olarak:

  • Geliştiriciler iş ve sorun alanını DBA'lardan daha iyi bilirler, bu nedenle ilk tasarımın çoğunu çok fazla yaparlar ve geliştiricinin deneyimine bağlı olarak böyle bir tasarım son tasarıma çok yakın olabilir.
  • DBA'nın rolü çoğunlukla NF, adlandırma kuralları, performans değerlendirmeleri, bariz hataları düzeltmek ve son olarak fiziksel bir model, sonra veritabanına özel bir komut dosyası oluşturmak ve bunları veritabanı oluşturmak için çalıştırmaktır.
  • % 80 geliştirici ve ihtiyaç analizi çalışması ve% 20 DBA çalışması olduğunu söyleyebilirim.

GÜNCELLEME:

3 çeşit DBA vardır:

  • veri modellemeyi bilen geliştirme DBA'ları SQL uzmanlarıdır ve saklı yordamlar yazabilirler, genellikle eski geliştiricilerdir;
  • kurulum, performans ayarlama, yedekleme ve geri yükleme vb. konularında uzmanlaşmış üretim DBA'ları,
  • ve tüm bu şeyleri yapmaya çalışan ve bu şekilde en çok şey yapan çok sayıda esnaf DBA'sı (çok azdır).

DBA'ların çoğu üretim DBA'larıdır, çünkü gecenin erken saatlerinde başarısız disk dizilerinden kayıp veritabanlarını geri alan çocuklardır. Ancak tasarım sürecine aktif olarak katılmazlar.


2
Bu, bunu yapabileceğim bir DBA'nız olduğunu düşünüyor, ben ve daha önce olduğum yerde, bunun için yardımcı olacak hiçbir şey yoktu.
Walfrat

2
@Walfrat Haklısın. 3 tür DBA vardır: şu anda veri modelleme yapan geliştirme DBA'ları SQL uzmanlarıdır ve saklı yordamlar yazabilirler; kurulum, performans yakalama, yedekleme ve geri yükleme, vb. konularında uzmanlaşmış üretim DBA'ları ve tüm bu şeyleri yapmaya çalışan ve çok daha fazlasını yapabilen her şeyden esnaf DBA'lar. Ne yazık ki, çoğu DBA sadece üretim DBA'larıdır.
Tulains Córdova

9
Dükkanın çok küçük olduğu ve bazı geliştiricilerin veritabanını yan tarafında tuttuğu "DBA'ları karşılayamayacağımızı" unuttun. Bu da çok yaygın.
Sebastian Redl

1
"NF" ne anlama geliyor?
BЈовић

1
Normal Form, ayrıca bkz . Wikipedia .
Friek

4

Veritabanının ne için kullanıldığına bağlıdır.

Birçok uygulamada (web uygulamaları ya da değil), veritabanı bu uygulamaya kalıcı olarak bağlı olduğu için bu uygulamaya sıkı sıkıya bağlıdır. Daha sonra veritabanı kavramsal olarak uygulamanın bir parçasıdır, bu yüzden birlikte tasarlanmıştır (ve başka hiçbir programın bu veritabanına önemli ölçüde erişmeyeceğini veya güncellenmeyeceğini varsayarsınız ). BTW, kalıcılık , bir veritabanından başka yollarla, örneğin düz metin dosyaları, ikili dosyalar (özellikle dizinlenmiş dosyalar à la GDBM ), git (veya diğer VCS) depoları, dizinler veya dosya ağaçları, ham disk bölümleri, özel donanım (örn. flash), uzak dosya sistemleri, kontrol noktasıteknikleri. Tek bir uygulama için ve tek bir uygulama için tasarlanmış veritabanları için, ortak geri alma ve güncelleme kalıplarına dikkat etmeli ve veritabanı şemasını (ve indeksleme!) Göz önünde bulundurarak tasarlamalısınız.

Bazı durumlarda veritabanı kendi başına büyük ve bağımsız bir varlıktır ve birkaç farklı uygulama (ve hatta gelecekteki uygulamalar) tarafından kullanılmak üzere a priori olarak tasarlanmıştır . O zaman bağımsız olarak (ve çok daha dikkatli) tasarlanmalıdır.

Özellikle bazı web uygulamaları sadece varolan veritabanlarının web arayüzleridir.

Birçok durumda (bazı wiki'leri örnek olarak düşünün), veriler onu kullanan uygulamalardan daha önemlidir ve daha değerlidir. Gelecekteki kanıtlarını nasıl oluşturacağınızı ve kolayca evrilebileceğinizi umursabilirsiniz (örneğin, yedeklemek ve geri yüklemek için metinsel ve çok yönlü - tercihen standart ve belgelenmiş formatları kullanarak veya tanımlayarak).

Bir veritabanının (PROPER) tasarımının küçük bir görev olmadığını anladım ...

De okuyunuz NoSQL , belge yönelimli veritabanları , anahtar-değer veritabanları , bilgi yönetimi , bilgi gösterimi ve akıl yürütme , ontolojiler , uzman sistemler , iş kuralları yaklaşım , ERP , CMS . Belki REDIS , MongoDB vb. Kullanmayı düşünün .


Emin değil. Ben yapmadım. Son birkaç bağlantı için teşekkürler!
the_endian

IMHO, ilk paragraflardaki bağlantılar da okumaya değer.
Basile Starynkevitch

Evet, neden emin değilim ama görünüşe göre geliştirici kurslarında bu tür şeyler "örtülmüyor". Eminim orada web dev arazi orada oluyor bazı ciddi veritabanı hackjobs vardır. Size DBMS'nin nasıl kullanılacağını öğretiyorlar, ancak burada bahsettiğimiz şeyler hakkında o kadar değil.
the_endian

@TeeSee Sizi temin ederim, sadece veritabanları ile ciddi hack işleri devam web dev arazi değil. Ancak evet, genellikle ilk nedenleri düşük tutmak (bakım ve teknik borcu unutmak) gibi ticari nedenlerden dolayı çok şey oluyor
gabe3886
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.