Erstellen von Objekten wie Tabellen und Indizes sind ziemlich wichtig, auch wenn der Code von der dba autorisiert oder erstellt werden muss. Welche anderen Bereiche, die normalerweise von dbas ausgeführt werden, sollten dem versierten Entwickler bekannt sein?Was sind die wesentlichen dba Fähigkeiten, die ein Entwickler lernen sollte?
Antwort
Die Grundlagen der Datenbankspeicherung und -optimierung sind riesig. Zu wissen, wie man Tabellen gut indiziert und partitioniert, ist ein unschätzbares Wissen.
Auch, wie man einen Abfrageausführungsplan liest.SQL ist so eine coole Sprache, dass es Ihnen genau sagt, wie es Ihren Code laufen lässt, solange Sie freundlich fragen. Dies ist absolut notwendig, um Ihren Code zu optimieren und Engpässe zu finden.
Datenbankwartung (Sicherungen, schrumpfende Dateien, etc.) ist immer wichtig, um Ihre Server reibungslos am Laufen zu halten. Es wird auch oft übersehen.
Entwickler sollten alle über Trigger und Stored Procedures wissen - die Datenbank für Sie arbeiten zu bekommen. Diese Dinge können helfen, so viele Aufgaben zu automatisieren, und oft übersehen Entwickler sie und versuchen, sie alle auf der App Seite zu behandeln, wenn sie wirklich von etwas behandelt werden sollten, das in Sätzen denkt.
Was mich zum wichtigsten Punkt bringt, muß Datenbank-Entwickler in Sets denken. Zu oft höre ich: "Für jede Reihe will ich ..." und das ist in der Regel ein Alarm in meinem Kopf. Sie sollten darüber nachdenken, wie das Set interagiert und welche Aktionen Sie für ganze Spalten ausführen möchten.
Einige gute Punkte dort, thx – DBMarcos99
Optimierung. Ihr Code sollte immer so wenig Ressourcen wie möglich verwenden.
Ich mag diese Antwort! (Obwohl ich mir Szenarien vorstellen kann, in denen die Ressourcennutzung kein vorrangiges Problem darstellt) – DBMarcos99
Ein Entwickler ist verantwortlich für alles, was zu tun, dass sein Code a) korrekt und b) schnell macht.
Dies beinhaltet natürlich das Erstellen von Indizes und Tabellen.
Eine DBA
für Indizes verantwortlich machen ist eine schlechte Idee. Was ist, wenn der Code langsam läuft? Wer ist schuld: Ein Entwickler mit schlechtem Code oder ein DBA
mit einem schlechten Index?
Ein DBA
sollte datenbankunterstützende Operationen wie das Erstellen von Backups, den Aufbau der Infrastruktur usw. und das Melden von Ressourcenmangel vermitteln.
Er oder sie sollte nicht die einzige Person sein, die Entscheidungen trifft, die sich auf die Leistung des gesamten Datenbanksystems auswirken.
Relationale Datenbanken, wie jetzt ist noch nicht in diesem Zustand der Aufspaltung der Verantwortung erlauben würde, so dass Entwickler die Abfragen machen könnten rechts und die DBA
konnte sieschnell machen. Das ist ein Mythos.
Wenn es einen Mangel an Ressourcen (zum Beispiel ein Index macht eine Abfrage schnell auf Kosten einiger DML
Betrieb langsam ist), sollte diese berichtet sein von einem DBA, nicht festen.
Jetzt ist es eine Entscheidungsfindung Zeit. Was brauchen wir mehr, schnelle Abfrage oder einen schnellen Einsatz?
Diese Entscheidung sollte vom Programm-Manager (und nicht DBA
oder Entwickler) getroffen werden.
Und wenn die Entscheidung getroffen wird, sollte der Entwickler die neue Aufgabe gegeben werden: "Machen Sie die SELECT
Abfrage so schnell wie möglich, unter Berücksichtigung, dass Sie diesen Index nicht haben". Oder "machen Sie eine INSERT
Abfrage, um so schnell wie möglich zu sein, unter Berücksichtigung, dass Sie diesen Index haben werden".
Ein Entwickler sollte alles über wissen, wie eine Datenbank funktioniert, wenn sie normal funktioniert.
Ein DBA
sollte alles über wissen, wie man eine Datenbank normal arbeiten lässt.
Letzteres umfasst die Möglichkeit, ein Backup zu erstellen, die Wiederherstellung aus einem Backup und die Fähigkeit, Ressourcenkonflikte zu erkennen und zu melden.
Thx für Ihre Eingabe. Ich kann mir viele Szenarien vorstellen, in denen die dba für die Abfrageoptimierung verantwortlich ist - der Entwickler verlässt, die db-Struktur ändert sich, die Funktionalität wird geändert, neue Indizes werden benötigt etc. – DBMarcos99
'DBMarcos99': alles, was Sie gerade beschrieben haben (außer wenn der Entwickler geht) Entscheidung fällen. Dies ist nicht die Verantwortung von DBA, dies liegt in der Verantwortung des Programmmanagers. – Quassnoi
@Quassnoi: Ich stimme nicht zu; ein DBA zu sein ist "ALLES" über Entscheidungsfindung und Verantwortung. Sie können nicht jede einzelne Minute Entscheidung von einem Programm-Manager ausführen, nichts würde jemals getan werden. Das Geschäft, in dem wir uns alle befinden, geht es darum, Ergebnisse zu liefern, und das ist die Rolle von DBA. –
Eine Sache, die zur Zeit in dem Sinne ist, wie die Informationen zu navigieren und zu verstehen, dass Datenbank „System“ Tabellen/Ansichten geben Sie. Z.B. in SQL Server die Ansichten, die unter der Master-Datenbank sind. Diese Ansichten enthalten Informationen wie aktuelle Logins, Listen von Tabellen und Partitionen etc., die allesamt nützlich sind, um Dinge wie hängende Logins oder ob Benutzer gerade verbunden sind usw. zu finden.
Thx für diese Antwort. – DBMarcos99
Beziehungen Ihrer Tabellen. Sie sollten immer einen aktuellen Ausdruck und eine Kopie Ihrer Datenbank haben. Sie müssen die Primärschlüssel, Fremdschlüssel, erforderliche und automatisch gefüllte Spalten kennen, ohne dass ich denke, dass Sie keine effizienten Abfragen schreiben können oder dass Ihre Datenbank nur das enthält, was sie benötigt.
Ich denke, dass alle anderen es abgedeckt haben.
Ich würde empfehlen, ein Verständnis der Sicherheitsarchitektur für die relevanten DBMS zu entwickeln.
Dies könnte die Entwicklung von sicherem Code erleichtern.
Mit SQL Server speziell im Auge zum Beispiel:
- verstehen, warum Ihr „Managed Code“ (wie .NET CLR) sollte erhöhten Berechtigungen nicht gewährt werden. Was wären die Folgen davon?
- Was ist Cross-Database Besitzverkettung? Wie funktioniert es?
- Ausführungskontext verstehen.
- Wie funktioniert die native SQL Server-Verschlüsselung?
- Wie können Sie eine gespeicherte Prozedur signieren? Warum würdest du das überhaupt tun wollen?
- Etc.
Als allgemeine Regel gilt, je mehr verstehen Sie den Motor mit dem Sie arbeiten, desto mehr Leistung Sie können davon quetschen.
Dies ist ein schönes Beispiel dafür, was ich als * wirklich * eine 'DBA'-Aufgabe betrachte, die Entwickler auch verstehen sollten. +1. – Quassnoi
Ein gutes Verständnis der Architektur Ihres Datenbanksystems wird definitiv hilfreich sein. Können Sie ein Diagramm auswendig zeichnen, um Komponenten Ihres DBMS und ihre Interaktionen zu zeigen?
- 1. Was sollte ein nicht-programmierender Manager lernen?
- 2. Was sind die Voraussetzungen, um maschinelles Lernen zu lernen?
- 3. Was sind die Links zu lernen, Arduino?
- 4. SQL-Server für einen Oracle-Entwickler/dba
- 5. Was alles sollte ein Experte C# /. Net/WPF Entwickler wissen?
- 6. Was sind die Fähigkeiten von Moq und Rhino.mocks?
- 7. Was sollte ein Front-End-Entwickler von einem Texter erwarten?
- 8. Was sind die wesentlichen Java-Bibliotheken und Dienstprogramme für einen wiederkehrenden dynamischen Sprachbenutzer?
- 9. PowerShell-Skripte, die jeder Entwickler kennen sollte
- 10. Was sind die Hauptunterschiede zwischen IE7 und IE8, die ein Webentwickler kennen sollte?
- 11. Welche TechConlogies kann ein ETL-Entwickler lernen?
- 12. Was sind die Grails-Bugs, mit denen Entwickler umgehen müssen?
- 13. Was sind die empfohlenen Semantic Web Reasoners für Entwickler?
- 14. Wie lese ich die Empfehlungen von DBA?
- 15. Was sind die besten Seiten/Bücher zum Lernen von Apache?
- 16. Was sind die besten Ressourcen, um Ant zu lernen?
- 17. Was sind die Werte?
- 18. Was sollte ein Entwickler über Interoperabilität mit verwaltetem Code wissen?
- 19. Was sollte ein Entwickler wissen, bevor er mobile Apps erstellt?
- 20. Was jeder C++ Entwickler über das Verknüpfen wissen sollte
- 21. Was sollte ein .NET-Entwickler über MSBuild wissen?
- 22. Wie kann ein Kunde die Bedeutung eines qualifizierten DBA verstehen?
- 23. Sollte ich NHaml lernen?
- 24. Warum sollte ein Entwickler Silverlight verwenden?
- 25. ADO.NET Entities Framework-Leistungstipps, die jeder Entwickler kennen sollte
- 26. sollten Web-Entwickler lernen Flash
- 27. Erforderliche Fähigkeiten für einen leitenden ActionScript/Flex-Entwickler
- 28. Mit welchen Konzepten sollte ein vC++ Entwickler vertraut sein?
- 29. Was sind die Hauptunterschiede zwischen IE7 und IE8, die ein Web-Tester kennen sollte?
- 30. Was sind die Grundprinzipien des Semantic Web, die ein Architekt kennen sollte?
Entwickler sollten (und fast immer) mehr wissen als die DBAs. –
Bitte mach das zu einem Community-Wiki. –
Mit Respekt, Neil, dem stimme ich nicht zu.Datenbankadministratoren haben Zugriff auf aktuelle RUNSTATS oder Ausführungspläne, damit sie * wissen, was die Engpässe sind. Entwickler gehen lediglich von erwarteten Daten aus. Manchmal sind diese Annahmen richtig, manchmal nicht. Aber sie sind * Annahmen. – paxdiablo