Muss ein DBA wissen, wie man neben SQL auch in einer Systemsprache programmiert?


20

Inwieweit muss ein Datenbankadministrator neben "nur SQL" auch Programmiersprachen auf System- oder Anwendungsebene (z. B. .NET oder PHP) beherrschen?

Für diese Frage wird keine bestimmte Version des SQL-Standards für diese Antwort berücksichtigt (SQL ANSI 86, SQL ISO 87, SQL: 2008), da sich die Frage auf Desktop- oder Serversprachen außerhalb von SQL bezieht.

Antworten:


25

Es hängt davon ab, ob.

In einem großen Geschäft vielleicht nicht, weil Sie Tausende von Servern haben, um die Sie sich kümmern müssen und Ihre Werkzeuge zur Verfügung gestellt werden. In einem kleinen Laden brauchen Sie wahrscheinlich mehr Wissen, weil Sie einen breiteren Aufgabenbereich haben.

Skriptsprachen (z. B. PowerShell, cmd.exe) sind immer nützlich, obwohl sie zum Überwachen, Bereitstellen usw. verwendet werden. Ich hatte häufig einige Perl-Skripts, die ich warten musste (ungefähr). Dann gibt es die verschiedenen ETL-Pakete, von denen Sie erwarten, dass Sie sie kennen.

Die meisten DBAs (die ich kenne) sind in der Lage, grundlegende CLR-Inhalte zu schreiben oder PL / SQL gut zu kennen. Die Trennlinie besteht für mich darin, die umfassenderen Muster oder die Architektur von .net oder Java zu kennen. Ich brauche es nicht als DB-Entwickler oder DBA. Genauso wenig wie ich .net oder PHP oder Java Monkeys mit Datenbankdesign, -architektur oder -code verstehe.

Persönlich habe ich mich vor Jahren entschieden, nicht mehr nach der neuesten oder besten Client-Sprache zu suchen und mich auf die Datenbankarbeit zu konzentrieren. Das macht mich nicht zum "Nicht-Programmierer": Ich müsste es noch einmal lernen, wenn ich muss.


4
+1 für "es kommt darauf an", gefolgt von etwas, das alle anderen verpasst haben (oder vielleicht für zu offensichtlich gehalten haben) - es hängt von der Größe Ihres Shops ab. Mein vorheriger Job war zu dritt in der IT-Abteilung, ich musste ein bisschen von allem machen, einschließlich der Webentwicklung. Jetzt, an meinem derzeitigen Platz mit 80 IT-Mitarbeitern, sind es ständig Datenbanken.
Simon Righarts

idk, ich hatte das Gefühl, dass ich nicht auf einen großen oder kleinen Laden ausgerichtet war ...
jcolebrand

"Ich habe mich vor Jahren entschieden, nicht mehr nach der neuesten oder besten Client-Sprache zu suchen und mich auf die Datenbankarbeit zu konzentrieren ..." - dieses Lob hat mich beeindruckt. Großartiger Punkt. Ich betrachte die db gerne als die große Konstante, wobei Sie der Partei in den verschiedenen "Zugangspunkten" weitere Sprachen in die Datenbank einbringen. Ob Sie diese Zugangspunkte einrichten möchten, liegt bei Ihnen. Wenn Sie diese Frage häufig stellen, ist möglicherweise eine Verschiebung des Fokus angebracht.
Robopim

gbn - wie viel Code schreiben Sie täglich? Ist es meistens SQL?
Robopim

@pimbrouwers jetzt, es ist PowerShell und SQL, aber ich bin ein Sysadmin + DBA. Letzter Job war SQL, etwas PowerShell, etwas C #. Davor hauptsächlich SQL und SSIS (BI DBA). Es kommt immer darauf an, was SQL in meiner Arbeit leistet.
16.

14

Ich habe gewusst, dass DBAs mit wenig oder gar keinen Programmierkenntnissen davonkommen, aber jeder DBA, den ich jemals für gut gehalten habe, hatte zumindest vernünftige Programmierkenntnisse. Ein oder zwei, die ich mir vorstellen kann, hatten einen beachtlichen Entwicklungshintergrund und waren selbst ziemlich gute Entwickler. Es gibt einen fairen Betrag von Open-Source - Werkzeugen von Menschen , die als DBAs in ihrem Job arbeiten und IIRC der Typ, schrieb TOAD an die Arbeit als DBA verwendet.

Abhängig von der Rolle, in der Sie möglicherweise Abfragen schreiben oder optimieren, Skripts zur Automatisierung von Aufgaben schreiben oder sich über das Anwendungsdesign beraten lassen. In einigen Fällen kümmern Sie sich möglicherweise nur um eine Reihe von Servern über OEM oder ein anderes Überwachungstool.

Moderne "Unternehmens" -Entwicklungsumgebungen wie .Net oder Java sind so komplex, dass ein Entwickler Karriere machen kann, wenn er sich nur darauf spezialisiert hat. Als DBA, insbesondere im Entwicklungsbereich, schadet es möglicherweise nicht, Kenntnisse in C # oder Java zu haben, aber Sie werden wahrscheinlich nicht viel Zeit damit verbringen, sie tatsächlich zu programmieren.

Sie werden wahrscheinlich mehr Kilometer mit den auf Ihrer Plattform verwendeten Skript-Tools machen, obwohl viele Systeme .NET-, Java-, COM- oder Web-Service-APIs bereitstellen. Wenn Sie etwas gegen diese APIs codieren müssen, benötigen Sie mindestens grundlegende Kenntnisse über etwas, das diese API nutzen kann. Fortgeschrittene Kenntnisse in der Anwendungsarchitektur sind hierfür jedoch in der Regel nicht erforderlich.

Einige Entwickler verfügen über ausgeprägte Datenbankkenntnisse, aber in Entwicklungskreisen ist irrationale Angst vor Datenbanken weit verbreitet. Viele Entwickler haben auch nie wirklich eine Ahnung von dem Paradigma der 'Mengenoperationen', das SQL zugrunde liegt. Als Entwickler-DBA müssen Sie möglicherweise in den Code gespeicherter Prozeduren eingreifen, um Leistungsprobleme zu lösen.

ETL und Tools, die die Datenbank umgeben, können ebenfalls in die Zuständigkeit des DBA fallen. Ich habe etliche ausgeschriebene DBA-Rollen gesehen, die einen erheblichen Teil der Back-End-Entwicklungsarbeit in Anspruch zu nehmen schienen. Dies wird in kleineren Unternehmen am häufigsten vorkommen. Ein kürzlich veröffentlichtes Poster wollte benutzerdefinierte Metriken in Oracle Enterprise Manager integrieren, wozu eine Plug-in-API vorhanden ist. Es ist durchaus üblich, dass Anforderungen wie diese auftauchen, und der einzige Weg, dies zu erreichen, besteht darin, einen Klebercode zu schreiben.

In der IT gibt es viele "Tools Guys", die trotz des Parochalismus nützliche Arbeit leisten können. Wenn den Tools jedoch der Dampf ausgeht, besteht die einzige Möglichkeit, etwas zu erledigen, darin, tatsächlich ein bisschen Code zu schreiben, um dies zu tun. Hier trennen Programmierkenntnisse die Männer von den Jungen.


6

Ich würde nicht typisch sagen, aber es tut nie weh. SQL Server ist groß genug, um nicht zu glauben, dass eine Person das gesamte Produkt beherrschen kann. Ich bin seit SQL Server 4.2 DBA und betrachte mich in den meisten Bereichen als Experte, aber ich gebe zu, dass ich ohne Google auf Knopfdruck keine MDX-Abfrage schreiben könnte.

Ich versuche zu sagen, dass man nicht in allem Experte sein kann. Ein wirklich guter DBA zu sein, bedeutet, dass Sie T-SQL gut beherrschen sollten, aber .NET wahrscheinlich nicht so gut beherrschen oder zumindest nicht so effektiv sind wie andere, die sich auf .NET konzentrieren können.

Powershell ist gut zu wissen, ebenso wie das Hin und Her von SSIS. Überlassen Sie die anderen Entwicklungssprachen anderen Entwicklern.


Ich denke, es ist erwähnenswert, dass SSAS wirklich eine separate Entität von SQL Server ist und nicht viele Leute jemals in die Situation versetzt werden, in der sie eine große Menge an Arbeit damit erledigen. Ich benutze SSAS ab und zu seit ungefähr 2001 und habe es wirklich jedes Jahr nur für ein paar Wochen gespielt.
ConcernedOfTunbridgeWells

SSAS gehört ebenso zur SQL Server-Familie wie SSIS und SSRS. Wie gesagt, SQL Server ist GROSS.
Datum

1
SSAS wird mit SQL Server gebündelt, ist jedoch ein eigenständiges System. Sie benötigen SQL Server nicht, um es zu verwenden - es kann Daten von allem laden, mit dem Sie eine Verbindung herstellen können. Ich denke, dass SSAS nur in einer relativ kleinen Minderheit von SQL Server-Sites verwendet wird. Vergleichen Sie die Anzahl der Einträge auf jobserve.com, die SQL Server-Kenntnisse benötigen, mit der Anzahl der Anzeigen für mdx. Es ist nicht unangemessen, Jahre mit SQL Server zu verbringen und niemals SSAS zu berühren.
ConcernedOfTunbridgeWells

SSIS kann als eigenständiges System installiert werden. Passt das auch zu Ihrem Modell? Wofür steht Ihrer Meinung nach der Name SSAS überhaupt? SQL Server Analysis Services. Es ist Teil der Suite, ob die Leute es benutzen oder nicht.
Datum

5

Ich habe die Erfahrung gemacht, dass die meisten Datenbankadministratoren zwar einen Entwicklungshintergrund haben, aber zum Schreiben von Code überhaupt nicht erforderlich sind. Die wirklich guten Datenbankadministratoren, mit denen ich zusammengearbeitet habe, verfügten über umfangreiche Kenntnisse zu verschiedenen Themen, einschließlich Shell-Skripten, Betriebssystemen und speziellen Anwendungskenntnissen (z. B. PeopleSoft).

Ich hatte einen Datenbankadministrator in der Grundschule, der uns eine Liste von Fragen gab, die jeder gute (Oracle) DBA beantworten sollte: (Ich werde nur einige der Höhepunkte aus der Liste von ungefähr 40 veröffentlichen.)

  • Warum erstellt Oracle nicht automatisch Indizes für Fremdschlüsselspalten?
  • Wann würden Sie beim Löschen einer Einschränkung die KEEP INDEX-Klausel verwenden?
  • Wann würden Sie ein IOT gegen einen normalen Tisch verwenden?
  • Ist es eine gute Idee, Tabellen und Indizes in separaten Tablespaces zu platzieren?
  • Was ist der Unterschied zwischen den Datentypen VARCHAR und VARCHAR2?
  • Ist es besser, einen Auslöser oder eine Einschränkung zu verwenden, um eine Geschäftsregel durchzusetzen?
  • Wann möchten Sie die automatische Zuordnung im Vergleich zu einer festen Segmentgröße verwenden?
  • Wann würden Sie eine externe Tabelle gegen eine Heap-Tabelle gegen eine B-Tree-Tabelle verwenden?
  • Wie oft sollten Sie den Papierkorb leeren?
  • Welche Strategien würden Sie zum Sichern einer partitionierten Tabelle empfehlen? Wie wäre es mit einem partitionierten Index?

(Oracle) DBAs müssen diese Dinge wissen, um effektiv zu sein. Die meisten mir bekannten Entwickler (die Code gegen Oracle verwenden) würden kaum eine oder zwei dieser Fragen richtig beantworten können.


5

Wenn Sie der DBA sind, arbeiten Sie wahrscheinlich (unter anderem) im Bereich Leistung und Sicherheit. Dies kann das Erstellen von Profilen und die Unterstützung beim Optimieren von Clientanwendungen umfassen, an denen die Entwickler arbeiten. Daher würde es sicherlich nicht schaden, die Grundlagen der von den Entwicklern verwendeten Sprachen und die Schnittstellen zum Datenbankserver zu kennen. Für SQL Server ist das wahrscheinlich .NET. Für MySQL wahrscheinlich eine Kombination aus PHP oder Java.

Wenn der Server beispielsweise für Client-Threads unter Druck gesetzt ist, können die Entwickler besser darüber informiert werden, dass sie Singleton-Instanzen für ihre ObjectDataSources verwenden sollten, damit sie eine einzelne Datenbankverbindung wiederverwenden können. Stellen Sie außerdem sicher, dass parametrisierte Abfragen ordnungsgemäß verwendet werden, um die SQL-Injection zu begrenzen. Solche Sachen.

Sie werden keine Programmierung im Sinne der Entwicklung von Client-Anwendungen durchführen, wenn Sie ausschließlich ein DBA sind, aber Sie sollten wissen, wie sie funktionieren (im Allgemeinen).


1
+1 Mein .net beschränkt sich hauptsächlich darauf, zu wissen, wie meine Datenbanken aufgerufen werden. Das ist das Wichtigste :-)
gbn

4

Lassen Sie uns sehen, Oracle verwendet PL / SQL, das Pascal sehr ähnlich ist (eine Sprache, die früher zur Erzeugung von Desktop-App-Code verwendet wurde, in den letzten Jahren jedoch abgefallen ist, und die Entwickler sind zu Delphi übergegangen, das einige nicht mehr verwenden von dort nach .NET), und Oracle unterstützt jetzt auch Java für einige Aktivitäten. Da ein Oracle-DBA alle Aspekte des Systems kennen muss, um geschätzt zu werden, würde ich sagen, dass es erforderlich ist, Pascal und Java zu kennen.

TSQL kann .NET (CLR) -verwalteten Code für einen Teil der Funktionalität in SQL Server schreiben, und daher müsste ein guter DBA dies wahrscheinlich wissen (aber es kann nicht immer in älteren Versionen verwendet werden, also viel DBAs scheuen sich meiner Erfahrung nach davor zurück.

Das sind also die großen Zwei, und auf die sich die meisten Leute beziehen, wenn sie fragen, wie Sie fragen. Ich kenne nicht alle anderen Engines, die wissen, was sie tun und nicht unterstützen, aber ich weiß, dass viele andere außer SQL auch eine Sprachintegration haben.


+1, aber ich denke, serverseitiges Java auf Oracle ist in der Regel nicht sehr nützlich (es gibt die eine oder andere Ausnahme )
Jack Douglas

@JackDouglas - Meistens ist serverseitiger Java- oder CLR-Code für Systemaufgaben nützlich. Beim serverseitigen Code ist zu beachten, dass Sie in der Regel für die Lizenzierung des DB-Servers für die CPU-Kapazität zahlen, die zum Ausführen des Codes verwendet wird.
ConcernedOfTunbridgeWells

Beides ist nicht alltäglich besonders nützlich, aber wenn Sie es brauchen, brauchen Sie es. Und wenn der DBA diese Dinge nicht kennt und den Code der Entwickler nicht lesen kann, steckt er in Schwierigkeiten. Das ist alles was ich sagte.
jcolebrand

-1

Ich bin ziemlich davon überzeugt, dass nur große Geschäfte mit großen Anwendungen einen nicht programmierbaren DBA verlangen, da kleine Geschäfte mit einfachen Datenbanken mit dem Alleskönner Entwickler / DBA davonkommen können. Damit ein DBA zum Master eines Produkts wird (Oracle, SQL Server, was auch immer), muss dieses Wissen gefragt sein! Der DBA muss komplexen Umgebungen und Problemen ausgesetzt sein, damit er besser informiert ist. Das ist im Grunde genommen eine Schande von mir, weil ich DBA in einem kleinen Laden bin und nichts tue, was mehr als 2 Neuronen erfordert. Ich glaube, ich verschwende meine Zeit bei diesem Job. Ich möchte Entwickler werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.