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.
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.
quelle
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.
quelle
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).
quelle
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.
quelle
Ich würde sagen, ein Datenbankentwickler ist für eine oder mehrere der folgenden Aufgaben verantwortlich
Je nach RDBMS können Aufgaben wie z
Werfen Sie einen Blick auf diese Liste von Zuständigkeiten
quelle