Was machen Datenbankprogrammierer?

14

Jedes Mal, wenn ich etwas über Oracle-Programmierer usw. lese, bin ich verwirrt. Ich weiß nicht genau, was sie tun.

Nach meinem Verständnis müssen Anwendungsprogrammierer die Kernfunktionalität entwickeln. Die Bibliotheken, die sie verwenden, könnten bei der GUI-Entwicklung oder der Datenbankkonnektivität hilfreich sein, aber die Funktionalität, mit der diese Anwendung programmiert werden muss und die jede Anwendung anders macht (einige können überarbeitete Versionen anderer sein).

Erstellt die Datenbankprogrammierung in dieser Beziehung nicht im Grunde genommen eine Tabelle und werden diese Tabellen nicht als Reaktion auf SQL-Anweisungen verarbeitet, die von einer Anwendung ausgegeben werden, die normalerweise das Front-End ist? Ist das Erstellen von Tischen so eine große Sache?

Thomas
quelle

Antworten:

18

Um wirklich einschätzen zu können, welche Datenbankprogrammierer Sie wirklich brauchen, müssen Sie es selbst versuchen - lassen Sie mich versuchen, es auf eine andere Weise zu erklären.

Für Unkundige mag es so aussehen, als würden Anwendungsprogrammierer im Idealfall nicht wirklich so viel tun - sie nehmen die Anforderungen und Prozesse, die von den Geschäftsanalysten geschrieben wurden, und übersetzen sie in Code, den die Programmierer bieten.

Natürlich weiß jeder mit Erfahrung in der Programmierung, dass dies nicht der Fall ist. Wenn man die Tatsache außer Acht lässt, dass die Anforderungen das Verhalten der Anwendung nie bis ins kleinste Detail spezifizieren, gibt es eine Reihe von Komplikationen

  • Programmierer müssen entscheiden, wie die Anwendung strukturiert werden soll
  • Die Anforderungen in etwas zu übersetzen, das ein Computer versteht, ist oft alles andere als trivial.
  • Programmierer müssen sich der Auswirkungen von auf die Leistung bewusst sein
  • Wenn Programmierer Erfahrung mit der Plattform ihrer Wahl sammeln, werden sie kompetenter und liefern Code mit höherer Qualität zu einem schnelleren Preis.

(Natürlich ist dies eine stark reduzierte Liste, ich versuche nur, Punkte aufzugreifen, die Parallelen in der Datenbankentwicklung aufweisen.)

Nun, die Datenbankentwicklung ist ähnlich - für die Unwissenden sieht es ziemlich einfach aus, aber sobald Sie sich mehr engagieren, werden Sie sich der spezifischen Komplikationen der Datenbankentwicklung bewusst:

  • Sie entscheiden, wie die Datenbank aufgebaut sein soll
  • Oftmals sind komplexere Abfragen alles andere als trivial, um die Anforderungen zu erfüllen
  • Datenbankentwickler müssen sich mit der Leistung der Datenbank befassen
  • Sie müssen sich auch mit der Aufrechterhaltung der Datenintegrität und -verfügbarkeit befassen
  • Und genau wie Entwickler werden Datenbankprogrammierer bei allem, was sie tun, kompetenter, je erfahrener sie werden.

So wie die Anwendungsentwicklung mit versteckten Fallstricken (Threading-Probleme usw.) behaftet ist, so ist auch die Datenbankentwicklung mit erheblichen Konsequenzen verbunden (z. B. Datenverlust oder potenzielle Ausfallzeiten für alle Anwendungen, die die Datenbank verwenden). .

Ich denke, die Sache, die Programmierer zu der Annahme bringt, dass nichts dran ist ("Kann ein Programmierer das nicht?"), Ist, dass es eine Menge Überschneidungen zwischen den Rollen gibt und dass sie ähnliche Fähigkeiten benötigen - ich habe Kein Zweifel, dass jeder, der die Fähigkeit hat, ein guter Entwickler zu sein, auch die Fähigkeit hat, ein guter Datenbankprogrammierer zu sein, wenn ihm Zeit und Erfahrung zur Verfügung stehen. Allerdings sollte niemand den Wert eines erfahrenen Datenbankexperten unterschätzen.

Justin
quelle
Vielen Dank für die Antwort (ich hatte die Hoffnung auf eine Antwort aufgegeben)! Der Grund, warum ich dies gefragt habe, ist, dass ich als "Anwendungsprogrammierer" eine kleine Datenbank in msaccess entworfen habe, um etwas für mein Projekt zu erledigen, und es schien keine große Arbeit zu sein, aber als Programmierer natürlich habe ich dbase thing isn ' t "einfach". Aber mir fehlt immer noch die Perspektive, um das zu verstehen. Ich meine, wie unterschiedlich könnte eine Datenbank von einer anderen sein? Wie kein App-Entwickler Dateiverwaltungscode "schreibt", aber Bibliotheken verwendet, gibt es keine gebrauchsfertigen Vorlagen / Bibliotheken, die für DBASE-Design verfügbar sind? Oder ist Datenbankprogrammierung in Wirklichkeit Datenbankadministrator?
Würde ein typischer Programmierer das nicht auch tun? Ich glaube, ich habe in zu kleinen Organisationen gearbeitet, um noch keine Verwendung für einen Datenbankprogrammierer zu beobachten, da der Anwendungsentwickler normalerweise sozusagen derjenige ist, der den Zug fährt. Er weiß, was er will und entwirft es normalerweise selbst.
Brian
1
Nach meiner Erfahrung gibt es bestimmte Geschäftsvorgänge, die Teams von Experten-DBAs erfordern . Das letzte, von dem ich gehört habe, war eine Fusion zwischen Coca-Cola und Minute Maid. Ihre Datenbanken (und sie hatten viel) mussten zusammengeführt werden, und Minute Maids war nicht so konzipiert, wie Coca-Cola ihre hatte, und dies, das und das andere. Sie planten und testeten diese Fusion für gut sechs Monate, bevor sie einen Alleskönner für die Durchführung holten. Ein eigenständiger Datenbankadministrator ist in einem kleinen Unternehmen nicht unbedingt erforderlich, aber in großen Unternehmen sind Teams von ihnen für die Kundenzufriedenheit unbedingt erforderlich.
Mike S
Das heißt, in kleinen Unternehmen (<50 Personen) mit mindestens einem (vorzugsweise zwei oder drei) eigenständigen DBA (s) ist es für Anwendungsentwickler super, super nett zu haben. Das und ein engagiertes IT-Personal, das Computer repariert, aber das ist eine ganz andere Geschichte.
Mike S
2
@ 0A0D, und allzu oft 6 Jahre später, wenn eine Milliarde oder mehr Datensätze in den Tabellen vorhanden sind und das ganze Durcheinander schreiend langsam ist, stellen sie einen Datenbankexperten ein, um das Durcheinander zu beheben, das niemals von einem Anwendungsprogrammierer hätte entworfen werden dürfen. Datenbanken lassen sich nur schwer umgestalten und müssen von Anfang an auf Leistung ausgelegt sein. Allzu wenige Anwendungsprogrammierer scheinen dies zu verstehen. Sie tendieren auch dazu, basierend auf den Anforderungen der Benutzeroberfläche zu entwerfen, die nicht den Anforderungen der Datenbank entsprechen, und lassen daher interne Kontrollen, Prüfungs- und Datenintegritätsbeschränkungen usw. aus.
HLGEM
12

Datenbankprogrammierer machen viele Dinge. Zuerst entwerfen sie die Datenbankstruktur so, dass sie mit der Anzahl der erwarteten Datensätze ordnungsgemäß funktioniert. Konstruktionsstrukturen, die für einige tausend Datensätze einwandfrei funktionieren, können eine Datenbank bei einigen Millionen Datensätzen unbrauchbar machen. Sie müssen auch sicherstellen, dass die Daten im Laufe der Zeit intakt bleiben und vor unbefugten Änderungen oder Diebstahl geschützt sind. Sie müssen die Normalisierung genau verstehen und wissen, wann sie zu denormalisieren ist und warum. Sie müssen die Leistung verstehen und wissen, wie die Datenintegrität sichergestellt werden kann. Sie müssen die Sicherheit verstehen und wissen, wie sie verhindern können, dass Daten gestohlen oder böswillig verändert werden.

Sie optimieren Abfragen zur Leistung. Ich habe Abfragen geändert, die Minuten dauern, um zu Millseconds zu laufen. Ich habe einen Prozess geändert, der mehr als 24 Stunden in weniger als 30 Minuten ausgeführt hat. Sie entwerfen und verwalten Indexstrukturen, die die Geschwindigkeit der Einfügungen gegen die Geschwindigkeit der Auswahl abwägen.

Sie schreiben komplexe Abfragen, insbesondere Berichtsabfragen. Ich persönlich habe Anfragen geschrieben, die aufgrund der Komplexität der Anforderung mehr als 1000 Zeilen lang sind. Sie mussten und rannten immer noch schnell.

Sie erstellen Data Warehouses und die zugehörigen ETL-Prozesse, um sie zu unterstützen. Oft müssen sie Prozesse schreiben, um Daten aus anderen Quellen einzuspeisen, und müssen herausfinden, wie die Felder aus der Datenbank einiger Clients ihrer Datenbank zugeordnet werden können, und diese stimmen in Bezug auf Datentyp, Datengröße, erforderliche Felder und Nachschlagewerte nie genau überein. etc.

Sie müssen festlegen, wie eine Umgestaltung vorgenommen werden soll, wenn sich die Datenbankanforderungen ändern, ohne die bereits vorhandenen 100.000.000 Datensätze zu beschädigen und ohne die Nutzung der Datenbank vollständig zum Erliegen zu bringen. Große Datenbanken können Tausende von Tabellen und gespeicherten Prozessen sowie benutzerdefinierte Funktionen enthalten. Das Verstehen einer solchen Struktur erfordert Zeit und Können, ebenso wie das Verstehen, was und wie von Änderungen betroffen sein wird.

Sie entwerfen Möglichkeiten zur Prüfung der Daten aus regulatorischen und Wiederherstellungsgründen. Anschließend entwerfen sie Möglichkeiten, um die Daten aus diesen Prüftabellen wiederherzustellen. Sie recherchieren Probleme mit den Daten, um festzustellen, ob das Problem durch einen Fehler beim Importvorgang, eine fehlerhafte Datei, die von anderen bereitgestellt wurde, ein fehlerhaftes Einfügen / Aktualisieren aus der Anwendung oder durch nicht autorisierten Zugriff verursacht wurde. Sie finden Wege, die schlechten Daten zu beheben, als die Anwendungsprogrammierer eine Lücke für Hacker offen ließen, um anzugreifen.

Oft sind sie an Datenkonvertierungen von einem System auf ein neues System beteiligt. Manchmal müssen dabei Daten von einem COTS-Produkt auf ein neues Produkt verschoben werden, das das Unternehmen gerade gekauft hat. Wie bei den zuvor beschriebenen Importen handelt es sich um komplexe Prozesse, deren Planung und Ausführung Monate in Anspruch nehmen kann und die umfangreiche Tests erfordern. Im Gegensatz zu den Importen hat der Datenbankprogrammierer möglicherweise keine Kontrolle über die unterschiedlichen Datenstrukturen.

HLGEM
quelle
6

Ich habe Ende der 90er Jahre als Datenbankprogrammierer für die Fertigungsdaten einer 24-Stunden-Waferfabrik gearbeitet. Ich weiß nicht, wie typisch meine Aufgaben waren, aber der größte Teil für mich war, als eine Änderung der Feldcodierung oder des Schemas erforderlich war, ich musste sicherstellen, dass die Änderung nahtlos zur Produktion verlief. Im Grunde bedeutete das, dass ich sie aufforderte, ihre Client-Anwendung zu aktualisieren, was sie zu einem für sie günstigen Zeitpunkt tun würden, und es wurde erwartet, dass sie sofort mit den neuen Änderungen zurückkehrte.

Das war viel komplizierter als ich erwartet hatte. Konvertierungsskripte und Client-Software mussten gründlich getestet werden. Oft mussten zwei semantisch identische, aber inkompatible Datensätze synchron gehalten werden, bis alle umgestellt wurden. Manchmal war es notwendig, den Wechsel in mehreren sorgfältig geplanten Phasen durchzuführen, um ihn nahtlos zu gestalten. Es war nicht ungewöhnlich, sich wochenlang auf eine Umstellung vorzubereiten, die im Wesentlichen sofort erfolgte.

Wenn ein Datenbankprogrammierer seine Arbeit richtig macht, wird es Beobachtern scheinen, als ob seine Arbeit sehr einfach ist. Ich bin nicht überrascht, dass viele Leute nicht wirklich wissen, was sie tun.

Karl Bielefeldt
quelle
2

Das ist ziemlich einfach. Wenn Sie von dem MVC-Muster gehört haben, sollten Sie den Unterschied zwischen Ihren Controllern und Modellen kennen. Wenn Sie beispielsweise ein ERP schreiben, stellen Sie sich vor, dass Sie in Ihrem Controller einfach "retrieveCashFlow" zu Ihrem Modell sagen und Ihr Modell ein in der Datenbank gespeichertes Programm aufruft. Dieses gespeicherte Programm kümmert sich um jeden Join, jede Filterung, Bestellung usw. und Sie erhalten verarbeitete Daten zurück. In Ihrem Controller müssen Sie nur die Dinge zusammen mischen.

Wenn Sie Zweifel an gespeicherten Prozeduren haben, lesen Sie Folgendes: Warum sollten Sie gespeicherte Prozeduren verwenden?

Einfach ausgedrückt: Datenbankentwickler schreiben gespeicherte Programme (Prozeduren und Funktionen), damit sich Ihre Anwendung um das M in MVC kümmert (oder um die Geschäftslogik, wenn Sie mvc nicht verwenden).

Adam Arold
quelle
2

Oracle ist nicht nur eine Datenbank, sondern eine vollständige Programmierumgebung, einschließlich Formular- und Berichtsdesigner. Als Oracle-Programmierer programmieren Sie komplette Benutzeranwendungen. Die Datenbankcodierung, auf die Sie sich beziehen, wird häufig von spezialisierten Datenbankadministratoren (DBAs) durchgeführt.

Ich denke, Sybase ist ein anderes mit einer ähnlichen Programmierumgebung.

Andere Datenbanken beschränken sich möglicherweise darauf, "nur" die Definition und Ausführung von Berichten zuzulassen, während andere möglicherweise überhaupt keine Formular- oder Berichtsentwurfs- / Ausführungsfunktionen anbieten.

Marjan Venema
quelle
1
"Oracle ist nicht nur eine Datenbank, sondern eine vollständige Programmierumgebung ... Andere Datenbanken beschränken sich möglicherweise auf" nur "die Definition und Ausführung von ..." Dies wusste ich nicht. Jetzt macht es Sinn.
Thomas
SQL Server ist das gleiche. Neben den gespeicherten Prozeduren ermöglichen die SSIS-Pakete die visuelle Programmierung, das Aufrufen von anderem vorhandenen Code, das Schreiben von vb.net- oder c # .net-Programmen und vieles mehr, alles in einer IDE. Ich habe SSRS nicht verwendet, aber ich vermute, dass es ähnlich ist. Es gibt eine Menge Programmierkenntnisse, und ein Datenbankprogrammierer muss viele verschiedene Tools, Sprachen und Prozesse kennen.
Donnerstag,
2

Ich würde sagen, ein Datenbankentwickler ist für eine oder mehrere der folgenden Aufgaben verantwortlich

  • Design, dazu gehört das Erstellen (bzw. Definieren von Relationen) von Tabellen
  • Optimierung, Einstellen der richtigen Indizes, Auswählen von Schlüsseln und Auswählen der richtigen Datentypen
  • Funktionen, Schreiben nützlicher Funktionen, die in den Abfragen verwendet werden sollen
  • Prozeduren, die Anwendungslogik schreiben, die eng mit der Datenbankschicht verbunden ist.
  • Erstellen von Triggerfunktionen zum Reagieren auf Ereignisse
  • Erstellen von Spezifikationen der oben genannten.

Je nach RDBMS können Aufgaben wie z

  • Berichte und Formulare erstellen
  • Erstellen von Flows für den Datenimport / -export

Werfen Sie einen Blick auf diese Liste von Zuständigkeiten

Peter Lindqvist
quelle