Wer entwirft Datenbanken in der Webentwicklung? [geschlossen]

10

Wer entwirft im Rahmen der Webentwicklung Datenbanken? Trotz einer ganzen Reihe von Informationen, die Back-End-Webentwickler mit serverseitiger Verarbeitung, Datenmodellierung und dergleichen in Verbindung bringen, scheint der Aspekt des Datenbankdesigns der Gleichung auf mysteriöse Weise nicht vorhanden zu sein.

Ich spreche nicht darüber, wer die physische Datenbank einrichtet, sondern darauf, wer das logische Modell der Datenbank entwirft, User-Story-Interviews durchführt, um Informationen darüber zu erhalten, welche Felder benötigt werden, welche Feldspezifikationen vorhanden sind usw. .

Ich habe festgestellt, dass das ( RICHTIGE ) Design einer Datenbank keine kleine Aufgabe ist (ich lese diesen 672-Pager) und leicht ein ganzer Beruf sein kann. Das Durchsuchen des Internets hat jedoch zu überraschend geringen Ergebnissen geführt, wer diese Aufgabe im Kontext von Webentwicklern übernehmen soll.

the_endian
quelle
2
Es hängt sehr stark von der Organisation und den verwendeten Abteilungen und Strukturen ab. Nach meiner Erfahrung handelt es sich normalerweise um Back-End-Entwickler / Lösungsarchitekten, und wenn es eine Datenbankabteilung gibt, in Verbindung mit Datenbankadministratoren oder bestimmten Datenbankentwicklern.
Allan S. Hansen
what those field specifications areWenn Ihr Projekt eine Spezifikation hat, sollten Sie in der Lage sein, Ihr Modell in zu identifizieren.
Walfrat
1
Ich würde sagen, heutzutage bestimmt jedes Framework, das Sie verwenden, Ihr Datenbankdesign.
Pieter B

Antworten:

17

Ihre Frage bezieht sich nicht nur auf Webanwendungen, sondern auf alle Arten von Apps, die ein Datenbank-Backend verwenden.

Durch meine Erfahrung

  • Das Design der Datenbank ist die kombinierte Arbeit von Entwicklern und Datenbankadministratoren.
  • Entwickler erstellen grobe oder oft sehr gute Datenbankdesigns. Es hängt alles von der Erfahrung der Programmierer ab.
  • Oft erstellen Entwickler Tabellen in ihrer Entwicklungsdatenbank und ein konzeptionelles Modell wird daraus rückentwickelt.
  • Oft werden konzeptionelle ER-Diagramme mit anderen Teammitgliedern, häufig Kunden, besprochen. In dieser Phase werden offensichtliche konzeptionelle Fehler erkannt und hoffentlich herausgefunden und behoben.
  • Die Aufgabe des Datenbankadministrators besteht darin, ein solches Design zu überprüfen und zu optimieren, um Verstöße gegen normale Formen zu erkennen.
  • Außerdem erzwingt der DBA Namenskonventionen für Tabellen und Spalten
  • Der DBA sieht auch mögliche Leistungsengpässe vor und versucht zu verstehen, wie die Daten abgefragt werden, um später geeignete Indizes zu erstellen.
  • Der Revisions- / Überprüfungs- / Korrekturzyklus zwischen Entwickler / App-Designer und Datenbankadministratoren durchläuft mehrere Iterationen, bis das Modell ausgereift genug ist, um ein physisches Modell zu generieren.
  • Normalerweise wird ein Datenbankentwurfstool in allen bis auf sehr kleine Datenbanken verwendet, um diesen Prozess zu unterstützen.

Endeffekt:

  • Entwickler kennen die Geschäfts- und Problemdomäne besser als Datenbankadministratoren, daher erledigen sie den größten Teil des ursprünglichen Entwurfs, und je nach Erfahrung des Entwicklers kann ein solcher Entwurf dem endgültigen Entwurf sehr nahe kommen.
  • Die Aufgabe des Datenbankadministrators besteht hauptsächlich darin, NF, Namenskonventionen und Leistungsüberlegungen sicherzustellen, offensichtliche Fehler zu korrigieren und schließlich ein physisches Modell und anschließend ein datenbankspezifisches Skript zu generieren und diese auszuführen, um die Datenbank zu erstellen.
  • Ich würde sagen, es sind 80% Entwickler- und Anforderungsanalyse und 20% DBA-Arbeit.

AKTUALISIEREN:

Es gibt 3 Arten von Datenbankadministratoren:

  • Entwicklungs-DBAs, die sich mit Datenmodellierung auskennen, SQL-Experten sind und gespeicherte Prozeduren schreiben können, sind in der Regel ehemalige Entwickler.
  • Produktions-Datenbankadministratoren, die sich auf Installation, Leistungsoptimierung, Sicherung und Wiederherstellung usw. spezialisiert haben
  • und Alleskönner-DBAs, die all diese Dinge erledigt haben und als solche die meisten können (es gibt nur sehr wenige).

Die meisten DBAs sind Produktions-DBAs, was gut ist, weil sie die Leute sind, die verlorene Datenbanken in den frühen Stunden der Nacht von ausgefallenen Festplatten-Arrays wiederherstellen. Sie beteiligen sich jedoch nicht aktiv am Entwurfsprozess.

Tulains Córdova
quelle
2
Dies setzt voraus, dass Sie einen DBA haben, der das kann, wo ich bin und ich vorher war, es gab niemanden, der dafür helfen konnte.
Walfrat
2
@ Walfrat Du hast recht. Es gibt drei Arten von Datenbankadministratoren: Entwicklungs-Datenbankadministratoren, die jetzt Daten modellieren, SQL-Experten sind und gespeicherte Prozeduren schreiben können; Produktions-DBAs, die sich auf Installation, Leistungsoptimierung, Sicherung und Wiederherstellung usw. spezialisiert haben, und Allround-DBAs, die all diese Dinge erledigt haben, und solche können am meisten. Leider sind die meisten DBAs nur Produktions-DBAs.
Tulains Córdova
9
Sie haben den "Wir können uns keinen DBA leisten" vergessen, bei dem der Shop so klein ist, dass einige Entwickler die Datenbank nebenbei pflegen. Das ist auch sehr häufig.
Sebastian Redl
1
Wofür steht "NF"?
BЈовић
1
Normalform, siehe auch Wikipedia .
Friek
4

Es hängt davon ab, wofür die Datenbank verwendet wird.

In vielen Anwendungen (Web-Apps oder nicht) ist die Datenbank eng mit dieser Anwendung verbunden, da sie als dauerhafter Speicher für sie dient. Dann ist die Datenbank konzeptionell Teil der Anwendung und wird zusammen entworfen (und Sie gehen davon aus, dass kein anderes Programm wesentlich auf diese Datenbank zugreifen oder sie aktualisieren würde ). BTW, Ausdauer durch andere Mittel als eine Datenbank, zB Klartextdateien, Binärdateien (insbesondere indizierte Dateien à la erreicht werden kann GDBM ), git (oder andere VCS) Repositories, Verzeichnisse oder Dateibäume, rohe Festplattenpartitionen, dedizierte Hardware (zB Flash), Remote-Dateisysteme, CheckpointingTechniken. Bei Datenbanken, die für und mit einer Anwendung entwickelt wurden, sollten Sie sich mit allgemeinen Abruf- und Aktualisierungsmustern befassen und das Datenbankschema (und die Indizierung!) Unter Berücksichtigung dieser Muster entwerfen.

In einigen Situationen ist die Datenbank für sich genommen ein wichtiges und unabhängiges Asset und wurde a priori so konzipiert, dass sie von mehreren verschiedenen Anwendungen (und sogar von zukünftigen) verwendet werden kann. Dann sollte es unabhängig (und viel sorgfältiger) gestaltet werden.

Insbesondere sind einige Web-Apps nur Webschnittstellen zu vorhandenen Datenbanken.

In vielen Fällen (denken Sie an ein Wiki als Beispiel) sind die Daten wichtiger und wertvoller als die Anwendungen, die sie verwenden. Möglicherweise ist es Ihnen wichtig, wie Sie es zukunftssicher machen und es einfach weiterentwickeln können (z. B. indem Sie textuelle und vielseitige - vorzugsweise standardisierte und dokumentierte - Formate zum Sichern und Wiederherstellen verwenden oder definieren).

Ich habe festgestellt, dass das (RICHTIGE) Design einer Datenbank keine kleine Aufgabe ist ...

Lesen Sie auch über NoSQL , dokumentenorientierte Datenbanken , Schlüsselwertdatenbanken , Wissensmanagement , Wissensrepräsentation und Argumentation , Ontologien , Expertensysteme , Geschäftsregelansatz , ERP , CMS . Vielleicht sollten Sie REDIS , MongoDB usw. verwenden.

Basile Starynkevitch
quelle
Nicht sicher. Ich habe es nicht getan. Danke für die letzten paar Links!
The_endian
IMHO sind auch die Links in den ersten Absätzen lesenswert.
Basile Starynkevitch
Ja, ich bin mir nicht sicher warum, aber es scheint, dass dieses Zeug in Entwicklerkursen nicht annähernd so viel "behandelt" wird, wie es sein könnte. Bis zu dem Punkt, an dem ich sicher bin, dass es im Webentwicklungsland einige ernsthafte Datenbank-Hackjobs gibt. Sie zeigen Ihnen, wie Sie das DBMS verwenden, aber nicht so viel über die Dinge, über die wir hier gesprochen haben.
The_endian
@TeeSee Ich kann Ihnen versichern, es ist nicht nur ein Webentwicklerland, in dem ernsthafte Hack-Jobs mit Datenbanken stattfinden. Aber ja, es gibt eine Menge davon, im Allgemeinen aus geschäftlichen Gründen, wie zum Beispiel, um die anfänglichen Kosten niedrig zu halten (Vergessen über Wartung und technische Schulden)
gabe3886