veritabanı programcıları ne yapar?


16

Oracle programcıları vb. Hakkında her okuduğumda kafam karışıyor. Tam olarak ne yaptıklarını bilmiyorum.

Anladığım kadarıyla, uygulama programcılarının temel işlevselliği geliştirmeleri gerekiyor. Kullandıkları kütüphaneler GUI geliştirmeye veya veritabanı bağlantısına yardımcı olabilir, ancak bu uygulamanın o uygulamanın programlanması ve her uygulamanın farklı olmasını sağlayan işlevsellik (bazılarının başkalarının ayarlanmış sürümleri olabilir).

Bu bağlamda, veritabanı programlama temelde tablo oluşturmuyor ve bu tablolar genellikle ön uç olan bir uygulama tarafından verilen SQL deyimlerine yanıt olarak işlenmiyor mu? Peki tablo oluşturma bu kadar önemli mi?

Yanıtlar:


22

Gerçekten hangi veritabanı programcılarını takdir etmek için kendiniz bir gitmek zorunda - başka bir şekilde açıklamak istiyorum.

Yanlış bilgilendirilmiş için o olabilir gerçekten bu kadar yapmayın ideal dünya uygulama programcıları gibi görünüyor - onlar iş analistleri tarafından yazılmış olarak gereksinimleri ve süreçleri almak ve programcılar teklifler verir koduna çevirir.

Tabii ki herhangi bir deneyim programlaması olan herkes bunun nasıl çalıştığını bilemez - gereksinimlerin uygulamanın davranışını en ince ayrıntılara kadar asla belirtmediği gerçeğini göz ardı ederek, bir takım komplikasyonlar vardır.

  • Programcılar uygulamanın nasıl yapılandırılması gerektiğine karar vermelidir.
  • Gereksinimleri bir bilgisayarın anladığı bir şeye çevirmek genellikle önemsiz olmaktan çok uzaktır.
  • Programcılar farklı olası yaklaşımların performans sonuçlarının farkında olmalıdır.
  • Programcılar kendi tercih ettikleri platformu kullanma konusunda deneyim kazandıkça daha kaliteli hale gelir ve daha hızlı bir şekilde daha yüksek kalitede kod sunarlar.

(Tabii ki bu çok azaltılmış bir liste, ben sadece veritabanı geliştirme paralellikleri olan noktaları almaya çalışıyorum.)

Eh, veritabanı geliştirme hemen hemen aynıdır - bilgilendirilen hasta için oldukça basit görünüyor, ancak daha fazla dahil olduktan sonra veritabanı geliştirmenin belirli komplikasyonlarının farkına varıyorsunuz:

  • Veritabanının nasıl yapılandırılması gerektiğine karar verirler.
  • Genellikle daha karmaşık sorgular, gereksinimlerden çeviri yapmak çok kolay olmayabilir.
  • Veritabanı geliştiricilerinin veritabanının performansı ile ilgilenmesi gerekir.
  • Ayrıca, verilerin bütünlüğünü ve kullanılabilirliğini korumakla da ilgilenmeleri gerekir.
  • Ve tıpkı geliştiriciler gibi, veritabanı programcıları daha deneyimli olduklarında yaptıkları her şeyde daha yetkin hale gelirler.

Uygulama geliştirmenin gizli tuzaklarla (diş açma sorunları vb.) Dolu olması gibi, veritabanı geliştirme de öyle ve genellikle bu sorunların düşmesinin sonuçları çok ciddidir (örneğin, veri kaybını veya veritabanını kullanan tüm uygulamalar için potansiyel olarak kapalı kalma sürelerini) .

Programcılara hiçbir şey olmadığını ("Bir programcı bunu yapamaz mı?") Düşündüren şey, roller arasında çok fazla örtüşme olması ve benzer beceri setleri gerektirmesidir. Hiç şüphe yok ki iyi bir geliştirici olma yeteneğine sahip olan herkesin iyi bir veritabanı programcısı olma yeteneği de vardır, ancak zaman ve deneyim göz önüne alındığında, hiç kimse deneyimli bir veritabanı uzmanının değerini hafife almamalıdır.


Cevabınız için teşekkürler (bir tane alma umudundan vazgeçmiştim)! Bunun nedenini sordum, bir "uygulama programcısı" olarak projem için bir şeyler yapmak için msaccess'te küçük bir veritabanı tasarladım ve bu pek bir iş gibi görünmüyordu ama tabii ki bir programcı olarak şey dbase değil t "kolay". Ama yine de bunu anlamak için gerekli bakış açısına sahip değilim. Yani, bir dbase diğerinden ne kadar farklı olabilir? Hiçbir uygulama dev gibi "dosya yönetimi kodu" yazar "ama kütüphaneleri kullanır gibi, dbase tasarımı için kullanılabilir şablonlar / kütüphaneler kullanmaya hazır değil misiniz? Yoksa gerçekte dbase programlama dbase admin mi?

Tipik bir programcı da bunu yapmaz mı? Sanırım, uygulama geliştiricisi genellikle treni süren kişi olduğu için bir veritabanı programcısı için herhangi bir kullanımı gözlemlemek için henüz çok küçük kuruluşlarda çalıştım. Ne istediğini biliyor ve genellikle kendisi tasarlıyor.
Brian

2
Deneyimlerime göre , uzman DBA'ların ekiplerini gerektiren bazı iş eylemleri var. En son duyduğum Coca-Cola ile Minute Maid arasında birleşme oldu. Veritabanları (ve çok şeyleri vardı) birleştirilmeliydi ve Minute Maid's Coca-Cola'nın kendilerine ve bu şeye ve diğer şeye sahip olduğu gibi tasarlanmamıştı. Bu bir birleştirmeyi planlayan ve test eden herkesi çekmeden önce altı ay boyunca test ettiler. Küçük bir şirkette bağımsız bir DBA'ya sahip olmak zorunlu değildir, ancak büyüklerde ekipleri müşteri memnuniyeti için kesinlikle gerekli hale gelir.
Mike S

Bununla birlikte, en az bir (tercihen iki veya üç) bağımsız DBA'ya sahip küçük şirketlerde (<50 kişi), uygulama geliştiricileri söz konusu olduğunda sahip olmak süper, çok güzel. Bu ve bilgisayarları düzeltmek için özel bir BT personeli, ama bu tamamen başka bir hikaye.
Mike S

4
@ 0A0D ve genellikle 6 yıl sonra masalarda bir milyar veya daha fazla kayıt olduğunda ve tüm karışıklık çığlık atan yavaş olduğunda, bir uygulama programcısı tarafından tasarlanmamış olması gereken karışıklığı düzeltmek için bir veritabanı uzmanı tutarlar. Veritabanlarının yeniden düzenlenmesi son derece zordur ve başlangıçtan itibaren performans için tasarlanması gerekir, çok az sayıda uygulama programcısı kavramış gibi görünüyor. Kullanıcı arayüzü böylece veritabanı ihtiyaçları vb iç kontroller ve denetim ve veri bütünlüğü kısıtlamaları, ihmal ne değildir neye ihtiyacı Onlar da dayalı tasarım eğilimindedir
HLGEM

14

Veritabanı programcıları çok şey yapar. İlk olarak veritabanı yapısını, beklenen kayıt sayısı ile düzgün çalışacak şekilde tasarlarlar. Birkaç bin kayıt için uygun olan tasarım yapıları, bir veritabanını birkaç milyon kayıtta kullanılamaz hale getirebilir. Ayrıca, verilerin zaman içinde bütünlüğünü koruyacağından ve verilerin yetkisiz değişikliklerden veya hırsızlıktan korunduğundan emin olmaları gerekir. Normalleşmeyi ve ne zaman denormalize edileceğini ve nedenini tam olarak anlamalıdırlar. Performansı ve veri bütünlüğünü nasıl temin edeceklerini anlamalıdırlar. Güvenliği ve verilerin çalınmasını veya kötü niyetli olarak değiştirilmesini nasıl önleyeceklerini anlamalıdırlar.

Performans ayarlama sorguları. Milisaniyeye çalıştırmak dakikalar süren sorguları değiştirdim. 24 saatten uzun süren bir işlemi 30 dakikadan daha kısa bir süreye değiştirdim. Eklerin hızını, seçimlerin hızına karşı dengeleyecek indeksleme yapıları tasarlar ve muhafaza ederler.

Karmaşık sorguları özellikle raporlama sorgularını yazarlar. Şahsen, gereksinimin karmaşıklığı nedeniyle 1000 satırdan uzun yazılı sorgularım var. Hâlâ çabalıydılar ve koştular.

Veri ambarları ve bunları desteklemek için eşlik eden ETL süreçleri oluştururlar. Genellikle diğer kaynaklardan veri getirmek için süreçler yazmaları ve bazı istemci veri tabanlarından alanların kendilerine nasıl eşleneceğini anlamaları gerekir ve bunlar veri türü, veri boyutu, gerekli alanlar, arama değerleri, vb.

Zaten sahip oldukları 100.000.000 kayda zarar vermeden ve veritabanının kullanımını tamamen durduramadan veritabanı gereksinimleri değiştikçe yeniden düzenleme yapmayı belirlemelidirler. Büyük veri bölümleri binlerce tablo ve kayıtlı proc ile kullanıcı tanımlı işlevleri içerebilir. Böyle bir yapıyı anlamak, değişikliklerden ve nasıl etkileneceğinin anlaşılması gibi zaman ve beceri gerektirir.

Verileri düzenleyici ve kurtarma nedenleriyle denetlemenin yollarını tasarlarlar. Daha sonra bu denetim tablolarından veri kurtarmanın yollarını tasarlarlar. Sorunun içe aktarma işlemindeki bir hatadan, başkaları tarafından sağlanan kötü bir dosyadan veya uygulamadan kötü bir ekleme / güncellemeden mi yoksa yetkisiz erişimden mi kaynaklandığını bulmak için verilerle ilgili sorunları araştırırlar. Uygulama programcıları bilgisayar korsanlarının saldırması için bir delik açtığında kötü verileri düzeltmenin yollarını bulurlar.

Genellikle bir sistemden yeni bir sisteme veri dönüşümlerine katılırlar. Bazen bu, verilerin bir COTS ürününden şirketin yeni satın aldığı yeni bir ürüne taşınmasını içerir. Daha önce açıklanan ithalatlar gibi, bunlar planlanması ve yürütülmesi aylar alabilen ve kapsamlı testler gerektiren karmaşık süreçlerdir. İçe aktarma işlemlerinden farklı olarak, veritabanı programcısı farklı veri yapıları üzerinde herhangi bir kontrole sahip olmayabilir.


8

90'lı yılların sonlarında 24 saatlik bir gofret üretim verileri için bir veritabanı programcısı olarak staj yaptım. Görevlerimin ne kadar tipik olduğunu bilmiyorum, ama benim için en büyük kısım, alan kodlama veya şemada bir değişiklik gerektiğinde, değişikliğin üretim için sorunsuz olduğundan emin olmak zorunda kaldım. Esasen, bu onlara kendileri için uygun bir zamanda yapacakları müşteri uygulamalarını yükseltmelerini söyleyeceğim anlamına geliyordu ve yeni değişikliklerle hemen geri gelmeleri bekleniyordu.

Bu tahmin ettiğimden çok daha ilgiliydi. Dönüşüm komut dosyalarının ve istemci yazılımının kapsamlı bir şekilde test edilmesi gerekiyordu. Genellikle semantik olarak özdeş fakat uyumsuz olan iki veri seti herkes değiştirilene kadar senkronizasyonda tutulmak zorundaydı. Bazen geçişi sorunsuz hale getirmek için anahtarı dikkatlice planlanmış birden fazla aşamada yapmak gerekiyordu. Esasen anlık olarak gerçekleşen bir geçiş için haftalarca hazırlık yapmak nadir değildi.

Bir veritabanı programcısı işini doğru yapıyorsa, gözlemcilere işi çok kolay gibi görünecektir. Birçok insanın ne yaptığını gerçekten bilmediğine şaşırmadım.


2

Bu oldukça basit. MVC modeli gibi bir şey duyduysanız, kontrol cihazlarınız ve modelleriniz arasındaki farkı bilmelisiniz. Örneğin, bir ERP yazıyorsanız, denetleyicinizde modelinize "retrieveCashFlow" dediğinizi ve modelinizin veritabanında depolanmış bir programı çağırdığını hayal edin. Bu saklanan program her birleştirme, filtreleme, sipariş vb. İlgilenir ve işlenmiş verileri geri alırsınız. Oyun kumandanızda bir şeyler bir araya getirmeniz gerekiyor.

Saklı yordamlar hakkında şüpheleriniz varsa, şuna bakın: neden saklı yordamlar kullanılmalı?

Basitçe söylemek gerekirse: veritabanı geliştiricileri, uygulamanızın MVC'deki M'ye (veya mvc kullanmıyorsanız iş mantıklarına) dikkat etmesi için depolanmış programlar (prosedürler ve işlevler) yazar.


2

Oracle sadece bir veritabanı değil, formlar ve rapor tasarımcıları da dahil olmak üzere eksiksiz bir programlama ortamıdır. Bir Oracle programcısı olarak, eksiksiz kullanıcı uygulamalarını programlayabilirsiniz. Bahsettiğiniz veritabanı genellikle uzman Veritabanı Yöneticileri (DBA'lar) tarafından yapılır.

Sybase bence benzer bir programlama ortamına sahip başka bir program.

Diğer veritabanları, raporların tanımlanması ve yürütülmesine izin vermek için kendilerini "sadece" kısıtlayabilirken, diğerleri ise herhangi bir form veya rapor tasarımı / yürütme olanağı sunmayabilir.


1
"Oracle sadece bir veritabanı değil, tam bir programlama ortamı ... Diğer veritabanları kendilerini" sadece "tanımlanması ve yürütülmesine izin ..." Bu bilmiyordum. Şimdi bir anlam kazandı.
Thomas

SQL Server aynıdır. Saklı yordamların yanı sıra, SSIS paketleri görsel programlama, diğer mevcut kodları çağırma, vb.net veya c # .net programları yazma ve çok daha fazlası, hepsi bir IDE içine sarılmış. SSRS kullanmadım, ancak benzer olduğundan şüpheleniyorum. Bir TON programlama vardır ve bir veritabanı programcısı birçok farklı araç ve dil ve süreci bilmek zorundadır.
thursdaysgeek

2

Bir veritabanı geliştiricisinin aşağıdakilerden biri veya daha fazlasından sorumlu olduğunu söyleyebilirim

  • Tasarım, bu tablolar oluşturmayı (veya daha çok ilişkileri tanımlamayı) içerir
  • Optimizasyon, uygun indeksleri ayarlama, anahtarları seçme, doğru veri türlerini seçme
  • Fonksiyonlar, sorgularda kullanılacak faydalı fonksiyonlar yazma
  • Yordamlar, veritabanı katmanına sıkıca bağlı uygulama mantığı yazma.
  • Olaylara yanıt vermek için tetikleme işlevleri oluşturma
  • Yukarıdakilerin spesifikasyonlarının üretilmesi.

Söz konusu RDBMS'ye bağlı olarak,

  • Rapor ve form oluşturma
  • Veri içe / dışa aktarma için akış oluşturma

Bu sorumluluk listesine bir göz atın

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.