Ich bin seit sechs Jahren Programmierer. Während meiner Karriere habe ich an vielen Webanwendungen gearbeitet.
Die meiste Zeit, wenn eine Datenbank benötigt wurde, wurde sie uns (den Programmierern) übergeben oder wir mussten an einer alten Datenbank arbeiten. Wenn nicht, mussten wir die Datenbank selbst erstellen und entwerfen, was nicht so schwierig war.
Aber sollen wir als Programmierer die gesamte Datenbank von Grund auf neu erstellen, wenn wir eine neue Anwendung erstellen müssen, in der Daten so wichtig sind und unübersichtliche Anforderungen mit einem komplexen Datenmodell haben?
Ist es nicht im besten Interesse der App und des Unternehmens, dies von einem Experten durchführen zu lassen?
Ich versuche nicht, vor dem Entwerfen der Datenbank davonzulaufen, aber es ist eine Sache, die so wichtig ist, richtig zu machen.
quelle
Antworten:
Zuallererst ist es Ihre Aufgabe, wenn der Projektmanager es Ihnen sagt. Kleinere Unternehmen haben oft keine Vollzeit-DB-Experten. Es gibt ohnehin keine klare Unterscheidung zwischen Entwicklern und DB-Experten (und sollte es auch nicht geben) - jeder gute Entwickler verfügt über beträchtliche Kenntnisse über DBs, und jeder gute DBA kann zumindest in der Sprache der DB für gespeicherte Prozeduren codieren .
Während das DB-Design ein ziemlich zentraler Teil einer Anwendung ist, ist es nicht wichtiger, "richtig" zu sein als andere zentrale Teile, von denen eine Menge anderer Code abhängt.
Und genau wie bei Code ist die Idee, dass Sie einen Super-Experten dazu bringen, sich eine Woche lang hinzusetzen und gründlich nachzudenken und dann das perfekte Design aufzuschreiben, das sich niemals ändern muss, eine Illusion. Das DB-Design kann und wird sich während der Entwicklung der Anwendung ändern.
Es ist daher von Vorteil, die DB von einem Programmierer (der die DBs gut versteht) entwickeln zu lassen, da Sie dann jemanden haben, der beide Seiten kennt. Das ist sicherlich besser, als es von jemandem machen zu lassen, der nur DBs versteht und nichts mit dem Rest der Entwicklungsarbeit zu tun hat.
quelle
Es ist üblich, dass Programmierer die Datenbank erstellen. Sehr gewöhnlich. Leider haben viele Programmierer keine Erfahrung mit der DB. Sie verstehen nicht, wie man gegen Big Data, die Konzepte von Data Marts, Sternschemata usw. berichtet. Einige verstehen nicht einmal die Grundlagen der Normalisierung.
Wenn ein Mann die Fähigkeiten hat, alles auf Expertenebene zu tun, ist dies ein sehr gutes Produkt. Eine Ein-Mann-Armee kann mit 1000-facher Qualität in einem Bruchteil der Zeit das schaffen, was ein 10-Mann-Team kann. Keine Übertreibung.
Es ist im besten Interesse für den Programmierer, dies zu tun (weniger Leute), vorausgesetzt, der Programmierer weiß, was er tut. Natürlich gibt es auch Tausende von Fehlern, auf die man hinweisen kann.
quelle
Es ist eine interessante Frage - es gibt ein starkes Argument dafür, dass die meisten anständigen Entwickler verstehen sollten, wie man eine relationale Datenbank richtig strukturiert, das heißt, dass sie in der Lage sein sollten, ein normalisiertes Schema zu erstellen und - basierend auf Erfahrung und gemeinsamen Mustern - vernünftig zu machen Entscheidungen darüber, wie Daten strukturiert gespeichert werden sollen (für mich ist es meist selbstverständlich, aber ich weiß, dass nicht jeder das so sieht).
Wenn Sie sich außerdem Entity Framework Code-first ansehen, der besagt, dass derselbe Gedanke, mit dem ein Datenmodell auf niedriger Ebene erstellt wird, ein vernünftiges Schema ergibt - oder zumindest einen Hinweis darauf.
Nein, ich glaube nicht, dass Sie einen Datenbankexperten benötigen, um ein Datenbankschema zu entwerfen - zumindest nicht für kleine und mittlere Datenbanken (an denen ich gearbeitet habe).
Das Problem ist, dass das Entwerfen eines guten (oder zumindest angemessenen) Schemas nicht die ganze Geschichte ist - insbesondere nicht, wenn die Datenbank skaliert werden muss. Es scheint mir, dass der "Mehrwert" eines DBAs darin besteht, andere Dinge als das grundlegende Schema richtig zu machen - Indizes, Speicherkonfiguration, Pflege der Datenbank (Kontrolle der Dateigröße, Neuerstellung von Indizes usw.), schlauer zu sein mit Benutzern und Rollen und so weiter und so fort.
Ein guter Programmierer sollte ein vielfältiges Portfolio an Fähigkeiten mitbringen - sollte mehr als ein Codierer sein, und ich würde das Verständnis von Datenbanken in dieses Portfolio einbeziehen.
quelle
Ich denke, die Fähigkeit, eine vernünftige relationale Datenbank zu entwerfen, ist im Wesentlichen eine Notwendigkeit für Nicht-Junior-Programmierer.
Vor allem für große Anwendungen ist es wichtig, dass die Datenbank beim ersten Mal "richtig" eingestellt wird (Schema, Indizierung usw.). Wenn das Unternehmen Zugang zu einem qualifizierten DBA hat, sollte diese Aufgabe auf ihren Teller fallen; Im Allgemeinen werden sie qualifizierter sein. Potenzielle Überprüfungen / Diskussionen sollten mit dem Hauptentwickler durchgeführt werden, der auf der Clientseite auf die Datenbank zugreift und mit ihnen arbeitet, damit es keine Überraschungen gibt. Wenn kein DBA vorhanden ist, entwirft der Programmierer die Datenbank.
quelle
Ich sehe hier zwei Fragen:
Geschäftslogik
Geschäftslogik befindet sich nicht in einer Datenbank. Es ist ein konzeptionelles Modell, das von anderen Ebenen in Ihrem System unabhängig sein muss.
Sie können jederzeit eine Datenbank durch eine andere ersetzen oder sich sogar für die Verwendung von NoSQL-Lösungen entscheiden, um potenzielle Leistungsprobleme zu beheben.
Datenbankentwickler können in den Modellierungsprozess einbezogen werden. Normalerweise wird dies jedoch von Personen durchgeführt, die die Problemdomäne vollständig verstehen. In unserer Organisation wird dies von serverseitigen Entwicklern durchgeführt.
Viele denken, dass die Datenbank eine Grundlage für Ihre Anwendung ist. Wenn Sie ein schlechtes Fundament herstellen, wird das System herunterfallen. Ich bin damit nicht einverstanden. Ich sehe die Datenbank als Speichermedium, das immer ersetzt werden kann.
Persistierende Daten
Sie sollten wissen, wie Sie Daten auf verschiedenen Speichermedien, einschließlich SQL- und NoSQL-Lösungen, speichern können.
Der Grad des erforderlichen Fachwissens hängt von der Größe des Systems ab, an dem Sie arbeiten.
Kleine Unternehmen erwarten, dass Sie über dieses Wissen verfügen, wenn größere Unternehmen normalerweise Experten einstellen, um die Anforderungen in Bezug auf Leistung, Skalierbarkeit und Sicherheit zu erfüllen.
Zusammenfassen:
Das Domänenmodell ist eine Grundlage für Ihr System, nicht für die Datenbank.
Wenn Sie für ein kleines Unternehmen an einem relativ kleinen Projekt arbeiten, sollten Sie die Datenbank wahrscheinlich selbst entwerfen.
Wenn Sie für ein großes Unternehmen auf einem Unternehmenssystem arbeiten, ist es wahrscheinlich sinnvoller, die Arbeit an die Domänenexperten weiterzuleiten.
quelle