it-swarm-eu.dev

Muss ein DBA wissen, wie man in einer anderen Systemsprache als SQL programmiert?

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

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

20
p mac

Es hängt davon ab, ob.

In einem großen Geschäft vielleicht nicht, weil Sie Tausende von Servern betreuen müssen und Ihre Tools bereitgestellt werden. In einem kleinen Geschäft benötigen Sie wahrscheinlich mehr Wissen, da Sie einen größeren Aufgabenbereich haben.

Skriptsprachen (z. B. PowerShell, cmd.exe) sind jedoch immer nützlich für die Überwachung, Bereitstellung usw. Ich hatte oft einige Perl-Skripte, die ich (fast) warten musste. Dann gibt es die verschiedenen ETL-Pakete, die Sie kennen sollten.

Wenn ich das sage, könnten die meisten Datenbankadministratoren (die ich kenne) grundlegende CLR-Inhalte schreiben oder PL/SQL gut kennen. Für mich ist die Trennlinie das Wissen über die breiteren Muster oder die Architektur von .net oder Java. Ich brauche es nicht als DB-Entwickler oder DBA. Genauso wie .net oder PHP oder Java Monkeys verstehen das Datenbankdesign oder die Architektur oder den Code nicht so gut wie ich).

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 zu einem "Nicht-Programmierer": Ich müsste es noch einmal lernen, wenn ich müsste.

25
gbn

Ich habe gewusst, dass DBAs mit wenig oder gar keinen Programmierkenntnissen davonkommen, aber jeder DBA, den ich jemals als gut angesehen 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 eine fairMenge von Open-SourceTooling , die von Leuten geschrieben wurde, die als DBAs in ihrem Tagesjob und IIRC arbeiten Der Typ, der TOAD schrieb, arbeitete früher als DBA.

Abhängig von der Rolle, in der Sie möglicherweise Abfragen schreiben oder optimieren, Skripte schreiben, um Aufgaben zu automatisieren, oder Beratung zum Anwendungsdesign. In einigen Fällen kümmern Sie sich möglicherweise nur um eine Reihe von Servern über OEM oder ein anderes Überwachungstool.

Moderne 'Enterprise'-Entwicklungsumgebungen wie .Net oder Java sind so komplex, dass ein Entwickler Karriere machen kann, wenn er sich nur auf sie spezialisiert. Als DBA, insbesondere im Entwicklungsbereich, verfügt er über eine Kenntnisse in C # oder Java können nicht schaden, aber Sie werden wahrscheinlich nicht viel Zeit damit verbringen, tatsächlich in ihnen zu programmieren.

Sie werden wahrscheinlich mehr Kilometer mit den auf Ihrer Plattform verwendeten Skript-Tools zurücklegen, obwohl viele Systeme .NET-, Java-, COM- oder Webdienst-APIs verfügbar machen. Wenn Sie etwas gegen diese APIs codieren müssen, benötigen Sie mindestens Grundkenntnisse über etwas, das diese API verwenden kann. Fortgeschrittene Kenntnisse der Anwendungsarchitektur sind hierfür jedoch normalerweise nicht erforderlich.

Einige Entwickler verfügen über ausgeprägte Datenbankkenntnisse, aber irrationale Angst vor Datenbanken ist in Entwicklungskreisen weit verbreitet. Viele Entwickler verstehen das Paradigma der "Set Operations", das SQL zugrunde liegt, auch nie wirklich. Als Entwickler-DBA müssen Sie sich mit den Konsequenzen auseinandersetzen und müssen möglicherweise in den Code für gespeicherte Prozeduren eingreifen, um Leistungsprobleme zu lösen.

ETL und Tools, die die Datenbank umgeben, können ebenfalls in den Zuständigkeitsbereich des DBA fallen. Ich habe einige ausgeschriebene DBA-Rollen gesehen, die einen erheblichen Teil der Back-End-Entwicklungsarbeit zu beinhalten schienen. Dies ist am häufigsten in kleineren Unternehmen der Fall. One aktuelles Poster wollte benutzerdefinierte Metriken in Oracle Enterprise Manager integrieren, das über eine Plugin-API verfügt. Es ist durchaus üblich, dass Anforderungen wie diese auftauchen, und im Wesentlichen besteht der einzige Weg dazu darin, einen Klebercode zu schreiben.

Es gibt viele 'Tools Guys', die in I.T. und sie können trotz des Parochalismus nützliche Arbeit leisten. Wenn den Tools jedoch Steam ausgeht, besteht die einzige Möglichkeit, etwas zu erledigen, darin, tatsächlich ein wenig Code zu schreiben, um dies zu tun. Hier trennen Programmierkenntnisse die Männer von den Jungen.

Ich würde nicht typisch sagen, aber es tut nie weh. SQL Server ist groß genug, dass ich nicht glaube, dass eine Person das gesamte Produkt beherrschen kann. Ich bin seit SQL Server 4.2 ein DBA und betrachte mich in den meisten Bereichen als Experte, aber ich gebe zu, dass ich ohne Google nicht in jedem Schritt eine 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 in T-SQL großartig sein sollten, aber in .NET wahrscheinlich nicht sehr gut oder zumindest nicht so effektiv sind wie andere, die ihre Zeit auf .NET konzentrieren können.

Powershell ist gut zu wissen, ebenso wie die Vor- und Nachteile von SSIS. Überlassen Sie die anderen Entwicklungssprachen den Entwicklern.

6
datagod

Ich habe die Erfahrung gemacht, dass die meisten Datenbankadministratoren zwar einen Entwicklungshintergrund haben, jedoch überhaupt nicht zum Schreiben von Code erforderlich sind. Die wirklich guten Datenbankadministratoren, mit denen ich gearbeitet habe, verfügten über umfassende Kenntnisse zu verschiedenen Themen, darunter Shell-Skripte, Betriebssysteme und spezielle Anwendungskenntnisse (z. B. PeopleSoft).

Ich hatte einen Datenbankverwaltungslehrer in der Graduiertenschule, der uns eine Liste von Fragen gab, die jeder gute (Oracle) DBA beantworten sollte: (Ich werde nur einige der Highlights 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 im Vergleich zu einer normalen Tabelle verwenden?
  • Ist es eine gute Idee, Tabellen und Indizes in separaten Tabellenbereichen 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 gegen Oracle programmieren) würden es schwer haben, auch nur einen oder zwei dieser Fragen richtig zu beantworten.

5
Aaron

Wenn Sie der DBA sind, arbeiten Sie wahrscheinlich (unter anderem) im Bereich Leistung und Sicherheit. Dies kann die Profilerstellung und Unterstützung bei der Optimierung 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 Schnittstelle 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 unter Druck gesetzt wird, um Client-Threads auszuführen, ist es hilfreich, die Entwickler darüber zu informieren, 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 einzuschränken. Solche Sachen.

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

5
db2

Mal sehen, Oracle verwendet PL/SQL, das Pascal sehr ähnlich ist (eine Sprache, die früher zur Erstellung von Desktop-App-Code verwendet wurde, aber in den letzten Jahren zurückgegangen ist, und Entwickler sind zu Delphi übergegangen, von dem einige weg sind 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 er Pascal und kennt Java wäre eine Voraussetzung.

TSQL hat die Fähigkeit, von .NET (CLR) verwalteten Code zu schreiben für einige der Funktionen in SQL Server, und daher müsste ein guter DBA dies wahrscheinlich wissen (aber es kann nicht immer verwendet werden) In älteren Versionen scheuen viele DBAs meiner Erfahrung nach dieses Feature-Set.

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

4
jcolebrand