it-swarm.dev

Was machen Datenbankprogrammierer?

Jedes Mal, wenn ich ü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 von ihnen verwendeten Bibliotheken können bei der GUI-Entwicklung oder der Datenbankkonnektivität hilfreich sein, aber die Funktionalität, mit der diese Anwendung zu dieser Anwendung programmiert werden muss und die jede Anwendung anders macht (einige könnten optimierte Versionen anderer sein).

Erstellt die Datenbankprogrammierung in dieser Beziehung nicht grundsätzlich eine Tabelle und werden diese Tabellen nicht als Antwort auf SQL-Anweisungen verarbeitet, die von einer Anwendung ausgegeben werden, die normalerweise das Front-End ist? Ist die Tabellenerstellung also eine so große Sache?

16
Thomas

Um wirklich zu schätzen, welche Datenbankprogrammierer Sie wirklich brauchen, müssen Sie es selbst versuchen - lassen Sie mich versuchen, es anders zu erklären.

Für die schlecht informierten könnte scheinen in der idealen Welt Anwendungsprogrammierer nicht wirklich so viel zu tun - sie nehmen die Anforderungen und Prozesse, wie sie von den Geschäftsanalysten geschrieben wurden, und übersetzen sie in Code, der das tut Programmierer bieten.

Natürlich wird jeder mit Erfahrung in der Programmierung wissen, dass dies nicht der Fall ist. Wenn man die Tatsache ignoriert, dass die Anforderungen das Verhalten der Anwendung niemals bis ins kleinste Detail spezifizieren, gibt es eine Reihe von Komplikationen

  • Programmierer müssen entscheiden, wie die Anwendung strukturiert werden soll.
  • Das Übersetzen der Anforderungen in etwas, das ein Computer versteht, ist oft alles andere als trivial.
  • Programmierer müssen sich der Auswirkungen verschiedener möglicher Ansätze auf die Leistung bewusst sein.
  • Wenn Programmierer Erfahrungen mit der Plattform ihrer Wahl sammeln, werden sie kompetenter und liefern schneller Code mit höherer Qualität.

(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 schlecht informierten sieht es ziemlich einfach aus, aber wenn Sie sich mehr engagieren, werden Sie sich der spezifischen Komplikationen der Datenbankentwicklung bewusst:

  • Sie entscheiden, wie die Datenbank strukturiert werden soll.
  • Oft sind komplexere Abfragen alles andere als trivial, um sie aus den Anforderungen zu übersetzen.
  • 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 beherrschen Datenbankprogrammierer alles, was sie tun, mit zunehmender Erfahrung.

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

Ich denke, die Sache, die Programmierer denken lässt, dass nichts dran ist ("Kann ein Programmierer das nicht?"), Ist, dass es viele Überschneidungen zwischen den Rollen gibt und sie ähnliche Fähigkeiten benötigen. Ich habe keinen Zweifel daran, dass jeder, der die Fähigkeit hat, ein guter Entwickler zu sein, auch die Fähigkeit hat, ein guter Datenbankprogrammierer zu sein, wenn man Zeit und Erfahrung hat, aber niemand sollte den Wert eines erfahrenen Datenbankexperten unterschätzen.

22
Justin

Datenbankprogrammierer machen viele Dinge. Zuerst entwerfen sie die Datenbankstruktur so, dass sie mit der Anzahl der erwarteten Datensätze ordnungsgemäß funktioniert. Entwurfsstrukturen, 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 ihre Integrität behalten und dass die Daten vor unbefugten Änderungen oder Diebstahl geschützt sind. Sie müssen die Normalisierung genau verstehen und wann und warum sie denormalisieren müssen. Sie müssen die Leistung verstehen und wissen, wie die Datenintegrität sichergestellt werden kann. Sie müssen die Sicherheit verstehen und wissen, wie verhindert werden kann, dass Daten gestohlen oder böswillig geändert werden.

Sie führen Leistungsabfragen durch. Ich habe Abfragen geändert, deren Ausführung Minuten in Millisekunden dauert. Ich habe einen Prozess geändert, der mehr als 24 Stunden dauerte, um auf weniger als 30 Minuten zu laufen. Sie entwerfen und pflegen Indexierungsstrukturen, die die Geschwindigkeit von Einsätzen gegen die Geschwindigkeit von Auswahlen ausgleichen.

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 dazugehörigen ETL-Prozesse, um sie zu unterstützen. Oft müssen sie Prozesse schreiben, um Daten aus anderen Quellen einzubringen, und müssen herausfinden, wie die Felder aus einer Client-Datenbank ihrer zugeordnet werden können. Diese stimmen in Bezug auf Datentyp, Datengröße, erforderliche Felder, Suchwerte usw. nie genau überein. usw.

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 und benutzerdefinierten Funktionen enthalten. Das Verständnis einer solchen Struktur erfordert Zeit und Geschick, ebenso wie das Verstehen, was von Änderungen beeinflusst wird und wie.

Sie entwickeln Möglichkeiten zur Prüfung der Daten aus regulatorischen und Wiederherstellungsgründen. Anschließend entwerfen sie Möglichkeiten, um die Daten aus diesen Überwachungstabellen wiederherzustellen. Sie untersuchen Probleme mit den Daten, um festzustellen, ob das Problem auf einen Fehler beim Importvorgang, auf eine von anderen bereitgestellte fehlerhafte Datei oder auf ein fehlerhaftes Einfügen/Aktualisieren aus der Anwendung oder auf nicht autorisierten Zugriff zurückzuführen ist. Sie finden Wege, um die fehlerhaften Daten zu beheben, wenn die Anwendungsprogrammierer ein Loch offen gelassen haben, in dem Hacker angreifen können.

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

14
HLGEM

Ich habe Ende der 90er Jahre als Datenbankprogrammierer für die Herstellungsdaten 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 in die Produktion überging. Im Wesentlichen bedeutete dies, dass ich ihnen sagen würde, dass sie ihre Client-Anwendung aktualisieren sollen, was sie zu einem für sie geeigneten Zeitpunkt tun würden, und es wurde erwartet, dass sie sofort mit den neuen Änderungen zurückkommen.

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 umgeschaltet wurden. Manchmal war es notwendig, den Wechsel in mehreren sorgfältig geplanten Phasen vorzunehmen, um ihn nahtlos zu gestalten. Es war nicht ungewöhnlich, sich wochenlang auf eine Umstellung vorzubereiten, die im Wesentlichen augenblicklich erfolgte.

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

8
Karl Bielefeldt

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, Sie sagen in Ihrem Controller einfach "retrieveCashFlow" zu Ihrem Modell und Ihr Modell ruft ein in der Datenbank gespeichertes Programm auf. Dieses gespeicherte Programm kümmert sich um alle Verbinden, Filtern, Bestellen usw. Sie erhalten verarbeitete Daten zurück. In Ihrem Controller müssen Sie nur die Dinge zusammenfügen.

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

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

2
Adam Arold

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

Sybase ist meiner Meinung nach eine andere mit ähnlichen Programmierumgebungen.

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

2
Marjan Venema

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

  • Design umfasst das Erstellen (oder vielmehr das Definieren von Beziehungen) von Tabellen
  • Optimierung, Festlegen der richtigen Indizes, Auswahl der Schlüssel, Auswahl der richtigen Datentypen
  • Funktionen, Schreiben nützlicher Funktionen zur Verwendung in den Abfragen
  • Prozeduren, die Anwendungslogik schreiben, die eng mit der Datenbankschicht verbunden ist.
  • Erstellen von Triggerfunktionen, um auf Ereignisse zu reagieren
  • Erstellung der oben genannten Spezifikationen.

Abhängig vom jeweiligen RDBMS können Aufgaben wie z

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

Schauen Sie sich diese Liste der Verantwortlichkeiten an

2
Peter Lindqvist