2009-08-24 5 views
6

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?

+5

Entwickler sollten (und fast immer) mehr wissen als die DBAs. –

+0

Bitte mach das zu einem Community-Wiki. –

+1

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

Antwort

7

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.

+0

Einige gute Punkte dort, thx – DBMarcos99

2

Optimierung. Ihr Code sollte immer so wenig Ressourcen wie möglich verwenden.

+0

Ich mag diese Antwort! (Obwohl ich mir Szenarien vorstellen kann, in denen die Ressourcennutzung kein vorrangiges Problem darstellt) – DBMarcos99

8

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.

+0

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

+1

'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

+1

@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. –

1

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.

+0

Thx für diese Antwort. – DBMarcos99

1

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.

2

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.

+0

Dies ist ein schönes Beispiel dafür, was ich als * wirklich * eine 'DBA'-Aufgabe betrachte, die Entwickler auch verstehen sollten. +1. – Quassnoi

0

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?

Verwandte Themen