Bir DBA'nın SQL dışında bir sistem dilinde nasıl programlanacağını bilmesi gerekiyor mu?


20

Bir Veritabanı Yöneticisinin "sadece SQL" dışında sistem veya uygulama seviyesi programlama dillerini (örneğin .NET veya PHP) ne ölçüde bilmesi gerekir?

Bu sorunun amaçları doğrultusunda, bu soru için SQL standardının belirli bir sürümü (SQL ANSI 86, SQL ISO 87, SQL: 2008) dikkate alınmaz, çünkü soru SQL alanı dışındaki masaüstü veya sunucu dilleri ile ilgilidir.

Yanıtlar:


25

Değişir.

Büyük bir dükkanda, belki de bakmanız gereken 1000 sunucunuz olduğu ve araçlarınızın sağlandığı için değil. Küçük bir dükkanda, muhtemelen daha fazla bilgiye ihtiyacınız olacaktır çünkü daha geniş bir havaleniz var.

Komut dosyası dilleri (örneğin PowerShell, cmd.exe), izleme, dağıtma vb. İçin her zaman yararlıdır. Sık sık korumak zorunda olduğum bazı Perl komut dosyaları (hemen hemen) vardı. Sonra bilmeniz gereken çeşitli ETL paketleri var.

Bunu söyleyerek, çoğu DBA (bildiğim) temel CLR şeyler yazabilir veya PL / SQL'i iyi bilir. Benim için, bölme çizgisi .net veya Java'nın daha geniş desenlerini veya mimarisini biliyor. Bir DB geliştiricisi veya DBA olarak buna ihtiyacım yok. Aynı şekilde .net veya PHP veya Java Monkeys de benim gibi veritabanı tasarımını, mimarisini veya kodunu anlamıyor.

Şahsen, yıllar önce en son veya en iyi müşteri dilini kovalamayı bırakmaya ve veritabanı çalışmalarına odaklanmaya karar verdim. Bu beni "programcı olmayan" yapmaz: Gerekirse tekrar öğrenmem gerekir.


4
"Bu duruma bağlı" için +1 ve ardından herkesin kaçırdığı (veya belki de çok açık olduğu düşünülen) bir şey vardır; bu, mağazanızın boyutuna bağlıdır. Daha önceki işim BT bölümünde üçümüzdü, web geliştirme de dahil olmak üzere her şeyi yapmak zorunda kaldım. Şimdi 80 BT personeli ile şu anki yerim, her zaman veritabanları.
Simon Righarts

idk, benimki büyük ya da küçük bir dükkana yönelik değildi ...
jcolebrand

“.. Yıllar önce en yeni veya en iyi müşteri dilini takip etmeyi bırakmaya ve veri tabanı çalışmalarına odaklanmaya karar verdim ...” - bu övgü beni etkiledi. Harika bir nokta. Db'ye büyük sabit olarak bakmayı seviyorum, böylece diğer dilleri partiye çeşitli "erişim noktalarında" veri tabanına getiriyorsunuz. Bu erişim noktalarını yapmak isteyip istemediğiniz size bağlıdır. Kendinizi sık sık bu soruyu sorarken bulursanız, belki odaktaki bir kayma uygundur.
robopim

gbn - Kendini günlük olarak ne kadar kod yazıyorsun? Çoğunlukla SQL mi?
robopim

@pimbrouwers, bu PowerShell ve SQL ama ben bir sysadmin + DBA. Son iş SQL, bazı PowerShell, bazı c # idi. Bundan önce, çoğunlukla SQL ve SSIS (BI DBA). SQL her zaman yaptığım şeylere bağlıdır.
gbn

14

DBA'ları çok az programlama becerisiyle ya da hiç programlama becerisinden kurtularak tanıyorum, ancak iyi olduğunu düşündüğüm her DBA'nın en azından makul programlama becerileri vardı. Düşünebileceğim bir ya da iki önemli gelişme geçmişine sahipti ve kendi başlarına oldukça iyi geliştiricilerdi. Bir fuar var miktarı arasında açık kaynak kalıp onların günlük iş ve IIRC TOAD bir DBA olarak işe alışık yazan adam içinde DBA olarak çalışan kişiler tarafından yazılmıştır.

Rolüne bağlı olarak, sorguları yazarken veya ayarlarken, görevleri otomatikleştirmek için komut dosyaları yazarken veya uygulama tasarımı konusunda danışmanlık bulabilirsiniz. Bazı durumlarda, OEM veya başka bir izleme aracı aracılığıyla bir grup sunucuyu dikkate alıyor olabilirsiniz.

Net veya Java gibi modern 'kurumsal' geliştirme ortamları, bir geliştiricinin kendi uzmanlık alanı dışında bir kariyer yapabileceği kadar karmaşıktır. Bir DBA olarak, özellikle geliştirme alanında, C # veya Java ile ilgili bir çalışma bilgisine sahip olmak zarar vermeyebilir, ancak muhtemelen onları kodlamak için çok fazla zaman harcamazsınız.

Pek çok sistem .Net, Java, COM veya web hizmeti API'lerini ortaya çıkarsa da, muhtemelen platformunuzda kullanılan komut dosyası araçlarından daha fazla kilometre alacaksınız. Bu API'lara karşı bir şeyi kodlamanız gerekiyorsa, en azından bu API'yi tüketebilecek bir şey hakkında temel bir çalışma bilgisine ihtiyacınız olacaktır. Ancak, bunu yapmak için genellikle gelişmiş uygulama mimarisi becerileri gerekli değildir.

Bazı geliştiricilerin güçlü veritabanı yetenekleri olacaktır, ancak veritabanlarının irrasyonel korkusu, geliştirme çevrelerinde oldukça yaygındır. Pek çok geliştirici, hiçbir zaman SQL'in temelini oluşturan 'ayarlanmış işlem' paradigması etrafında asla baş edemez. Bir Dev DBA olarak kendinizi bunun sonuçlarıyla uğraşırken bulabilirsiniz ve belki de performans sorunlarını çözmek için saklı yordam koduna müdahale etmeniz gerekebilir.

Veritabanını çevreleyen ETL ve takımlar da DBA'nın görevine girebilir. Reklamı yapılan çok sayıda DBA rolünün, önemli miktarda arka uç geliştirme çalışması içerdiğini gördüm. Bu daha küçük şirketlerde yaygın olacaktır. Bir son afiş bunu yapmak için bir API eklenti desteğine sahip Oracle Enterprise Manager, içine özel ölçümlerini entegre etmek istedik. Bu gibi gereksinimlerin ortaya çıktığını görmek oldukça yaygındır ve aslında bunun tek yolu bazı yapıştırıcı kodları yazmaktır.

BT'de çalışan pek çok 'Araçlar Adam' var ve parochalizme rağmen faydalı çalışmalar yapabilirler. Bununla birlikte, aletler buhar bittiğinde, genellikle bir şeyi yapmanın tek yolu, aslında bunu yapmak için bir miktar kod yazmaktır. Burada programlama becerileri erkekleri erkeklerden ayırır.


6

Tipik olarak söyleyemem, ama asla acıtmaz. SQL Server, bir kişinin tüm ürüne hakim olabileceğini düşünmeyecek kadar büyük. SQL Server 4.2'den beri bir DBA oldum ve kendimi birçok alanda uzman olarak görüyorum, ancak yolun her adımında google olmadan bir MDX sorgusu yazamayacağımı itiraf ediyorum.

Söylemeye çalıştığım şey, her şeyde uzman olamayacağın. Gerçekten iyi bir DBA olmak, T-SQL'de harika olmanız gerektiği anlamına gelir, ancak .NET'te çok iyi olmamanız veya en azından zamanlarını .NET'e odaklayabilen diğerleri kadar etkili olmamak anlamına gelir.

Powershell, SSIS'in içeri ve dışarı olduğu gibi bilmek iyidir. Bunun dışında, diğer geliştirme dillerini geliştiricilere bırakın.


SSAS'ın gerçekten SQL Server'dan ayrı bir varlık olduğunu ve pek çok insanın onunla büyük miktarda çalışma yaptıkları duruma girmediğini belirtmek gerekir. Yaklaşık 2001'den beri SSAS kullanıyorum ve her sene sadece birkaç hafta kullanabiliyorum.
ConcOedOfTunbridgeWells

SSAS, SSIS ve SSRS kadar SQL Server ailesinin bir parçasıdır. Dediğim gibi SQL Server BÜYÜK.
datagod

1
SSAS, SQL Server ile birlikte gelir, ancak bağımsız bir sistemdir. Aslında kullanmak için SQL Server gerekmez - bağlanmak için alabilirsiniz herhangi bir şey veri yükleyebilirsiniz. Bence SSAS sadece SQL Server sitelerinin oldukça küçük bir azınlığında kullanılır. Mdx için sayı reklam vs sql sunucu becerileri isteyen jobserve.com üzerinde giriş sayısını karşılaştırmayı deneyin. SQL Server ile yıllarca çalışmak ve asla SSAS'a dokunmak mantıksız değildir.
ConcernedOfTunbridgeWells

SSIS bağımsız bir sistem olarak kurulabilir. Bu sizin modelinize de uyuyor mu? Sizce SSAS ismi ne anlama geliyor? SQL Server Analiz Hizmetleri. İnsanlar kullansın ya da kullanmasın, süitin bir parçasıdır.
datagod

5

Çoğu DBA'nın bir tür gelişim geçmişine sahip olmasına rağmen, kod yazmaları gerekmiyor. Çalıştığım gerçekten iyi DBA'lar, kabuk komut dosyası oluşturma, işletim sistemleri ve özel uygulama bilgisi (ör: PeopleSoft) dahil olmak üzere çeşitli konularda kapsamlı bilgiye sahipti.

Ortaokulda, herhangi bir iyi (Oracle) DBA'nın cevap vermesi gereken soruların bir listesini bize veren bir Veritabanı Yönetimi eğitmenim vardı: (40 ya da öylesine listedeki önemli noktaların bir kısmını göndereceğim )

  • Oracle neden yabancı anahtar sütunlarında otomatik olarak dizin oluşturmuyor?
  • Bir kısıtlamayı kaldırırken KEEP INDEX yan tümcesini ne zaman kullanırsınız?
  • Normal bir tabloya karşı bir IOT ne zaman kullanırsınız?
  • Tabloları ve dizinleri ayrı tablo alanlarına yerleştirmek iyi bir fikir mi?
  • VARCHAR ve VARCHAR2 veri türleri arasındaki fark nedir?
  • Bir iş kuralını uygulamak için tetikleyici veya kısıtlama kullanmak daha mı iyi?
  • Autoallocate'i sabit kesim büyüklüğüne karşı ne zaman kullanmak istersiniz?
  • Harici bir tablo ile yığın tablosu ve B-ağacı tablosu ne zaman kullanılır?
  • Geri dönüşüm kutusunu ne sıklıkta temizlemelisiniz?
  • Bölümlenmiş bir tabloyu yedeklemek için hangi stratejileri önerirsiniz? Bölümlenmiş bir dizine ne dersiniz?

(Oracle) DBA'nın etkili olması için bu şeyleri bilmesi gerekiyor. Tanıdığım çoğu geliştirici (Oracle'a karşı kim kod yazıyor) bunlardan bir veya ikisini bile doğru cevaplamak için zorlanıyor.


5

DBA iseniz, muhtemelen performans ve güvenlik alanlarında (diğerleri arasında) çalışıyorsunuzdur. Bu, geliştiricilerin üzerinde çalıştığı istemci uygulamalarının ayarlanmasına yardımcı olabilir. Bu nedenle, geliştiricilerin kullandığı dillerin temellerini ve veritabanı sunucusuyla nasıl arayüz kuracağını bilmek kesinlikle zarar vermez. SQL Server için muhtemelen .NET. MySQL için, muhtemelen php veya java'nın bazı kombinasyonları.

Örneğin, sunucu istemci iş parçacığı için baskı altındaysa, geliştiricilere kendi ObjectDataSources'ları için tekil örnekler kullanmaları gerektiğini ve böylece tek bir veritabanı bağlantısını yeniden kullanmaları gerektiğini bildirmeleri için yardımcı olur. Ayrıca, SQL enjeksiyonunu sınırlandırmak için parametreli hale getirilmiş sorguları kullandıklarından emin olun. Onun gibi şeyler.

Kesinlikle bir DBA iseniz, istemci uygulamaları geliştirme anlamında herhangi bir programlama yapmayacaksınız , ancak nasıl çalıştıklarını bilmelisiniz (genel olarak).


1
+1 Ağım çoğunlukla veritabanlarımı nasıl çağırdıklarını bilmekle sınırlıdır. Önemli bir parça :-)
17

4

Bakalım, Oracle, Pascal'a gerçekten benzeyen PL / SQL kullanıyor (masaüstü uygulama kodu üretmek için kullanılan ancak son yıllarda düşmüş bir dil) ve geliştiriciler, bazılarının gittiği Delphi'ye sürüklendi oradan. NET'e) ve Oracle şimdi de bazı etkinlikler için Java'yı destekliyor. Bir Oracle DBA'nın sistemin takdir edilmesi için tüm yönlerini bilmesi gerektiğinden Pascal ve Java'yı bilmenin bir gereklilik olacağını söyleyebilirim.

TSQL, Sql Server'daki bazı işlevler için .NET (CLR) yönetilen kod yazma kapasitesine sahiptir ve bu nedenle, iyi bir DBA'nın muhtemelen bunu bilmesi gerekir (ancak her zaman eski sürümlerde kullanılamaz, bu yüzden çok fazla DBA’lar benim deneyimimdeki özelliklerden uzak durma eğilimindedirler).

Yani bu büyük ikililer ve çoğu insanın sizden sorduğunuzda başvurdukları atıfta bulunanlar. Diğer tüm motorları ne yaptıklarını ve desteklemediklerini bilmiyorum, ama diğer pek çok motorun SQL dışında dil entegrasyonuna sahip olduğunu biliyorum.


+1 ama bence Oracle'daki sunucu tarafı Java genellikle çok kullanışlı değil ( tuhaf bir istisna var )
Jack Douglas

@JackDouglas - çoğunlukla sunucu tarafı java veya CLR kodu sistem görevleri için kullanışlıdır. Sunucu tarafı kodu hakkında dikkat edilmesi gereken bir nokta, onu çalıştırmak için kullanılan CPU kapasitesinde DB sunucusu lisansı için ödeme yapma eğilimindedir.
ConcernedOfTunbridgeWells

Bunların hiçbiri her gün özellikle yararlı değil, ancak ihtiyacınız olduğunda buna ihtiyacınız var. Ve eğer DBA bu şeylerin farkında değilse ve en azından geliştiriciler tarafından verilen kodu okuyamazsa, başını belaya sokar. Söylediğim tek şey bu.
jcolebrand

-1

Sadece büyük uygulamalara sahip büyük mağazaların programlama dışı bir DBA'ya talebi olduğuna ikna oldum, çünkü basit veritabanlarına sahip küçük mağazalar, esnaf jack-geliştirici / DBA ile kurtulabilir. Bir DBA'nın bir ürün ustası (Oracle, SQL Server, ne olursa olsun) olması için bu bilgi birikimine talep var! DBA, daha fazla bilgi sahibi olmasına yardımcı olmak için karmaşık ortamlara ve sorunlara maruz kalmalıdır. Bu temelde benim bir rant, çünkü küçük bir dükkanda DBA'yım ve 2'den fazla nöron gerektiren hiçbir şey yapmıyorum, sanırım bu işte zamanımı boşa harcıyorum. Geliştirici olmak istiyorum.

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.