Czy DBA musi wiedzieć, jak programować w języku systemowym oprócz SQL?

20

W jakim stopniu administrator bazy danych musi znać języki programowania na poziomie systemu lub aplikacji (na przykład .NET lub PHP) oprócz „tylko SQL”?

Na potrzeby tego pytania nie jest rozważana żadna konkretna wersja standardu SQL dla tej odpowiedzi (SQL ANSI 86, SQL ISO 87, SQL: 2008), ponieważ pytanie dotyczy języków pulpitu lub serwerów poza domeną SQL.

p mac
źródło

Odpowiedzi:

25

To zależy.

W dużym sklepie może nie dlatego, że masz tysiące serwerów do opieki i twoje narzędzia są zapewnione. W małym sklepie prawdopodobnie będziesz potrzebować więcej wiedzy, ponieważ masz szerszy zasięg.

Języki skryptowe (na przykład PowerShell, cmd.exe) są zawsze przydatne, jednak do monitorowania, wdrażania itp. Często miałem kilka skryptów Perla, które musiałem utrzymywać (prawie). Następnie są różne pakiety ETL, o których powinieneś wiedzieć.

Mówiąc to, większość DBA (które znam) byłaby w stanie pisać podstawowe rzeczy CLR lub dobrze znać PL / SQL. Dla mnie linią podziału jest wiedza o szerszych wzorcach lub architekturze .net lub Java. Nie potrzebuję go jako programisty DB ani DBA. W ten sam sposób, w jaki .net, PHP lub Java Monkeys nie rozumieją projektu bazy danych, architektury lub kodu tak dobrze jak ja.

Osobiście postanowiłem przestać gonić za najnowszym lub najlepszym językiem klienta lata temu i skupić się na pracy z bazą danych. To nie czyni mnie „nieprogramowcą”: musiałbym się tego nauczyć, gdybym musiał.

gbn
źródło
4
+1 za „to zależy”, po czym następuje coś, za czym wszyscy inni przeoczyli (a może uważali to za zbyt oczywiste) - zależy to od wielkości twojego sklepu. Moja poprzednia praca polegała na zatrudnieniu trzech osób w dziale IT, musiałem zrobić trochę wszystkiego, łącznie z programowaniem stron internetowych. Obecnie w moim obecnym miejscu z 80 pracownikami IT cały czas są wszystkie bazy danych.
Simon Righarts,
idk, czułem się, jakby mój nie był nastawiony na duży lub mały sklep ...
jcolebrand
„.. Wiele lat temu postanowiłem przestać gonić za najnowszym lub najlepszym językiem klienta i skoncentrować się na pracy z bazami danych ...” - to pochwała mnie zaskoczyła. Świetny punkt Lubię patrzeć na db jako wielką stałą, dzięki której możesz przyprowadzać na imprezę inne języki w różnych „punktach dostępu” do bazy danych. To, czy chcesz utworzyć te punkty dostępu, zależy od ciebie. Jeśli często zadajesz sobie to pytanie, być może zmiana ognisk jest odpowiednia.
robopim
gbn - ile kodu piszesz na co dzień? Czy to głównie SQL?
robopim
@pimbrouwers teraz, to PowerShell i SQL, ale jestem sysadmin + DBA. Ostatnim zadaniem było SQL, trochę PowerShell, trochę c #. Wcześniej głównie SQL i SSIS (BI DBA). Zależy, czy SQL zawsze ma cechy, co robię.
gbn
14

Wiem, że DBA nie ma umiejętności programistycznych lub wcale, ale każdy DBA, który kiedykolwiek uważałem za dobry, miał przynajmniej rozsądne umiejętności programowania. Jeden lub dwa, o których myślę, miały znaczne podstawy rozwoju i były dość dobrymi programistami. Jest sprawiedliwy kwota z open-source narzędzi napisane przez ludzi, którzy pracują jako DBA w ich dzień pracy i IIRC facet, który napisał TOAD wykorzystywane do pracy jako DBA.

W zależności od roli, jaką możesz znaleźć, pisząc lub dostrajając zapytania, pisząc skrypty do automatyzacji zadań lub konsultując się przy projektowaniu aplikacji. W niektórych przypadkach możesz mieć na myśli kilka serwerów za pośrednictwem OEM lub innego narzędzia do monitorowania.

Nowoczesne środowiska programistyczne, takie jak .Net lub Java, są na tyle złożone, że deweloper może zrobić karierę właśnie ze specjalizacji. Jako DBA, szczególnie w przestrzeni programistycznej, posiadanie praktycznej znajomości C # lub Java może nie zaszkodzić, ale prawdopodobnie nie poświęcisz dużo czasu na ich kodowanie.

Prawdopodobnie uzyskasz większy przebieg dzięki wszystkim narzędziom skryptowym używanym na Twojej platformie, chociaż wiele systemów udostępnia interfejsy API .Net, Java, COM lub usług sieciowych. Jeśli potrzebujesz zakodować coś na podstawie tych interfejsów API, potrzebujesz co najmniej podstawowej wiedzy praktycznej na temat tego, co może korzystać z tego interfejsu API. Jednak do tego celu zwykle nie są potrzebne zaawansowane umiejętności architektury aplikacji.

Niektórzy programiści będą mieli silne umiejętności obsługi baz danych, ale irracjonalny strach przed bazami danych jest dość powszechny w kręgach programistów. Wielu programistów nigdy tak naprawdę nie przejmuje się paradygmatem „ustawiania operacji”, który leży u podstaw SQL. Jako deweloper DBA możesz sobie poradzić z konsekwencjami tego, i być może będziesz musiał interweniować w kod procedury składowanej, aby rozwiązać problemy z wydajnością.

ETL i oprzyrządowanie otaczające bazę danych mogą również należeć do kompetencji DBA. Widziałem sporo reklamowanych ról DBA, które wydawały się wymagać znacznej ilości prac programistycznych. Będzie to najbardziej powszechne w mniejszych firmach. Jeden z ostatnich plakatów chciał zintegrować niestandardowe wskaźniki z Oracle Enterprise Manager, który ma do tego celu interfejs API wtyczek. Często zdarza się, że pojawiają się takie wymagania, a zasadniczo jedynym sposobem na to jest napisanie kodu kleju.

Istnieje mnóstwo „Facetów z Narzędziami” pracujących w IT i mogą oni wykonać użyteczną pracę pomimo parochalizmu. Jednak gdy brakuje narzędzi, często jedynym sposobem na zrobienie czegoś jest napisanie trochę kodu, aby to zrobić. To tutaj umiejętności programowania oddzielają mężczyzn od chłopców.

ConcernedOfTunbridgeWells
źródło
6

Powiedziałbym, że nie zwykle, ale to nigdy nie boli. SQL Server jest na tyle duży, że nie sądzę, aby jedna osoba mogła opanować cały produkt. Jestem DBA od SQL Server 4.2 i uważam się za eksperta w większości dziedzin, ale przyznaję, że nie byłbym w stanie napisać zapytania MDX bez Google'a na wyciągnięcie ręki na każdym kroku.

Próbuję powiedzieć, że nie możesz być ekspertem we wszystkim. Bycie naprawdę dobrym DBA oznacza, że ​​powinieneś być świetny w T-SQL, ale prawdopodobnie nie jesteś bardzo dobry w .NET, a przynajmniej nie tak skuteczny jak inni, którzy mogą skupić się na .NET.

Powershell jest dobrze znany, podobnie jak tajniki SSIS. Poza tym pozostaw inne języki programowania programistom.

datagod
źródło
Myślę, że warto zauważyć, że SSAS jest tak naprawdę odrębnym bytem od SQL Servera i niewielu ludzi może znaleźć się w sytuacji, w której wykonują z nim dużą ilość pracy. Używam SSAS z przerwami od około 2001 roku i naprawdę trafiłem na to tylko przez kilka tygodni każdego roku.
ConcernedOfTunbridgeWells
SSAS jest tak samo częścią rodziny SQL Server, jak SSIS i SSRS. Jak powiedziałem, SQL Server jest WIELKI.
data dnia
1
SSAS jest dołączony do SQL Server, ale jest to samodzielny system. W rzeczywistości nie potrzebujesz programu SQL Server, aby z niego korzystać - może on ładować dane z dowolnego elementu, z którym możesz się połączyć. Myślę, że SSAS jest używany tylko w dość niewielkiej mniejszości witryn SQL Server. Spróbuj porównać liczbę ofert na jobserve.com i umiejętności serwera SQL z liczbą reklam mdx. Nie bez powodu spędzanie lat na pracy z SQL Server i nigdy nie dotykaj SSAS.
ConcernedOfTunbridgeWells
SSIS można zainstalować jako samodzielny system. Czy to pasuje również do twojego modelu? Jak myślisz, co w ogóle oznacza nazwa SSAS? SQL Server Analysis Services. Jest to część pakietu, niezależnie od tego, czy ludzie go używają, czy nie.
data dnia
5

Z mojego doświadczenia wynika, że ​​chociaż większość DBA ma jakieś doświadczenie programistyczne, wcale nie są wymagane do pisania kodu. Naprawdę dobre DBA, z którymi pracowałem, mają szeroką wiedzę na różne tematy, w tym na temat skryptów powłoki, systemów operacyjnych i specjalistycznej wiedzy na temat aplikacji (np. PeopleSoft).

Miałem instruktora administracji bazami danych w szkole podstawowej, który dał nam listę pytań, na które każdy dobry (Oracle) DBA powinien być w stanie odpowiedzieć: (Po prostu opublikuję niektóre najważniejsze informacje z listy około 40)

  • Dlaczego Oracle nie tworzy automatycznie indeksów na kolumnach kluczy obcych?
  • Kiedy usuwając ograniczenie, użyłbyś klauzuli KEEP INDEX?
  • Kiedy użyjesz IOT w porównaniu ze zwykłym stołem?
  • Czy dobrym pomysłem jest umieszczanie tabel i indeksów w osobnych obszarach tabel?
  • Jaka jest różnica między typami danych VARCHAR i VARCHAR2?
  • Czy lepiej jest zastosować wyzwalacz lub ograniczenie w celu wymuszenia reguły biznesowej?
  • Kiedy chcesz użyć automatycznego alokacji w porównaniu ze stałym rozmiarem segmentu?
  • Kiedy użyjesz tabeli zewnętrznej vs. tabeli sterty vs. tabeli B-drzewa?
  • Jak często należy czyścić kosz?
  • Jakie strategie poleciłbyś do tworzenia kopii zapasowej partycjonowanej tabeli? Co powiesz na indeks podzielony na partycje?

(Oracle) DBA musi wiedzieć, że te rzeczy są skuteczne. Większość programistów, których znam (którzy kodują przeciwko Oracle), byłaby trudna do udzielenia odpowiedzi na jedno lub dwa z nich poprawnie.

Aaron
źródło
5

Jeśli jesteś DBA, prawdopodobnie pracujesz w dziedzinie wydajności i bezpieczeństwa (między innymi). Może to obejmować profilowanie i pomoc w dostrajaniu aplikacji klienckich, nad którymi pracują programiści. Tak więc z pewnością nie zaszkodzi znajomość języków używanych przez programistów i sposobu komunikacji z serwerem bazy danych. W przypadku SQL Server prawdopodobnie jest to .NET. W przypadku MySQL prawdopodobnie pewna kombinacja PHP lub Java.

Na przykład, jeśli serwer naciska na wątki klienta, pomaga to programistom poinformować, że powinni używać instancji singletonowych dla swoich ObjectDataSources, aby mogli ponownie użyć jednego połączenia z bazą danych. Upewnij się także, że prawidłowo używają sparametryzowanych zapytań, aby ograniczyć wstrzykiwanie SQL. Takie rzeczy.

Nie będziesz zajmował się programowaniem w sensie tworzenia aplikacji klienckich, jeśli jesteś ściśle DBA, ale powinieneś wiedzieć, jak one działają (ogólnie rzecz biorąc).

db2
źródło
1
+1 Mój .net ogranicza się głównie do znajomości tego, jak nazywają moje bazy danych. To ważny kawałek :-)
gbn
4

Cóż, zobaczmy, Oracle używa PL / SQL, który jest naprawdę podobny do Pascala (języka, który był używany do tworzenia kodu aplikacji na komputery stacjonarne, ale który spadł w ostatnich latach, a programiści przenieśli się do Delphi, które niektórzy poszli stamtąd do .NET), a Oracle obsługuje teraz także Java dla niektórych działań. Ponieważ Oracle DBA musi znać wszystkie aspekty systemu, aby być dobrze docenionym, powiedziałbym, że znajomość Pascala i Javy byłaby wymagana.

TSQL ma zdolność do pisania kodu zarządzanego .NET (CLR) dla niektórych funkcji w Sql Server, dlatego dobry DBA prawdopodobnie musiałby o tym wiedzieć (ale nie zawsze można go używać w starszych wersjach, więc dużo DBA mają tendencję do unikania tego zestawu funkcji z mojego doświadczenia).

To jest ta wielka dwójka i te, do których odwołuje się większość ludzi, kiedy pytają, kiedy pytasz. Nie znam wszystkich innych silników, aby wiedzieć, co robią i nie obsługują, ale wiem, że wiele innych ma także integrację językową oprócz SQL.

jcolebrand
źródło
+1, ale myślę, że Java po stronie serwera na Oracle nie jest zwykle bardzo przydatna (istnieje dziwny wyjątek )
Jack Douglas,
@JackDouglas - głównie java po stronie serwera lub kod CLR jest przydatny do zadań systemowych. Jedną z rzeczy, na które należy zwrócić uwagę w przypadku kodu po stronie serwera, jest to, że zwykle płacisz za licencje na serwer DB na podstawie mocy procesora użytej do jego uruchomienia.
ConcernedOfTunbridgeWells
Żadna z nich nie jest szczególnie przydatna na co dzień, ale kiedy jej potrzebujesz, potrzebujesz. A jeśli DBA nie jest świadomy tych rzeczy i nie może przynajmniej odczytać kodu podanego przez programistów, ma kłopoty. To wszystko co powiedziałem.
jcolebrand
-1

Jestem całkiem przekonany, że tylko duże sklepy z dużymi aplikacjami mają zapotrzebowanie na nieprogramowalne DBA, ponieważ małe sklepy z prostymi bazami danych mogą uciec od dewelopera / DBA typu jack-of-all-trade. Aby DBA stało się mistrzem produktu (Oracle, SQL Server, cokolwiek), musi istnieć zapotrzebowanie na tę wiedzę! DBA musi podlegać złożonym środowiskom i problemom, aby pomóc mu stać się bardziej kompetentnym. Jest to w zasadzie mój rant, ponieważ jestem DBA w małym sklepie i nie robię niczego, co wymaga więcej niż 2 neuronów, myślę, że marnuję czas na tę pracę. Chcę zostać programistą.

Leshrac Evil
źródło