Sind diese SQL-Konzepte für Anfänger, Fortgeschrittene oder fortgeschrittene Entwickler? [geschlossen]

16

Ich habe kürzlich SQL gelernt und mit MySQL / Postgres und bald mit Oracle DB geübt. Ich habe auch im Internet nach einer Roadmap-Studie für Datenbanken gesucht, aber leider keine gefunden.

Ich möchte verstehen, wo und warum bestimmte Datenbankkonzepte vom Anfänger bis zum Fortgeschrittenen und Fortgeschrittenen eine Rolle spielen. Ich denke zum größten Teil über relationale Datenbanken nach.

Bitte erläutern Sie, wie Sie die unten aufgelisteten Fertigkeiten in einer Abfolge von Anfänger -> Mittelstufe -> Fortgeschritten auslegen, für welche Entwicklerebenen sie bekannt sein sollten:

  • Where-Klauseln
  • Syntax aktualisieren
  • Schließt sich an
  • Anweisungen ändern und erstellen
  • Temporäre Tabellen
  • Cursor
  • Indizes
  • Fremde Schlüssel
  • Einschränkungen
  • Transaktionen
  • Unterabfragen
  • Drehpunkte
  • Aggregatfunktionen
  • Profiling
  • OLAP und OLTP
  • Löst aus
  • Ausführungspläne
  • Ausführungshinweise
  • Leistungsindikatoren
  • Normalisierung
Daniel
quelle

Antworten:

20

Ich würde sagen, dass es in Bezug auf SQL zwei Arten von Dingen gibt (dies gilt wirklich für viele Technologien), es gibt bestimmte technische Dinge wie Verknüpfungen, Unterabfragen, Gewerkschaften usw., die Sie verstehen oder nicht, und dann gibt es Dinge wie Datenbankdesign und Datenmodellierung, die ein gewisses Maß an Geschick haben, wie Kunst. Mit den weicheren Dingen wird man mit der Zeit besser, aber man "kennt" sie nie, weil es keine "Arbeitsweise" mit ihnen gibt.

Das heißt, hier ist ein allgemeines Layout, das ich verwenden würde, und ich bin absolut offen für Kommentare / Gedanken von anderen, bei denen ich mich möglicherweise irre.

Anfänger

  • Where-Klauseln (dazwischen, usw.)
  • Syntax aktualisieren
  • Inneres gegen linkes gegen rechtes verbinden Verständnis und Gebrauch
  • Syntax zum Ändern und Erstellen von Strukturen
  • Temporäre Tabellen und ihre Verwendung
  • Cursor
  • Grundlegende Vorstellung, wofür Indizes gedacht sind, aber nicht, wie sie funktionieren
  • Verständnis, wozu Fremdschlüssel dienen und wie man sie umgeht (kaskadierende Löschvorgänge usw.)
  • Versteht die Grundlagen von Transaktionen
  • Versteht Zwänge

Mittlere

  • Wie Indizes funktionieren, Unterschied zwischen geclusterten und nicht geclusterten Seiten usw., was eine Seite ist und wie sie angeordnet sind
  • Verstehen von Unterabfragen und Überlegen, wie diese in Joins und Wheres verwendet werden können
  • Drehpunkte
  • Kann es sich überlegen, sich an einen Tisch zu setzen, wenn dies relevant ist
  • Kann komplexe Datenberichte über Gruppen-Bys mit Aggregatfunktionen generieren
  • Kann grundlegende Profilerstellung nur in einer Überwachungs- / Debugging-Funktion wie das Lesen eines Protokolls durchführen
  • Versteht den Unterschied zwischen OLAP und OLTP und wann / wo OLAP-Strukturen verwendet werden
  • Kann Trigger verwenden und nicht verwenden
  • Versteht Transaktionen und kann sie beim Behandeln von Fehlern im Stapel aufteilen

Fortgeschritten

  • Kann einen Ausführungsplan lesen und verstehen, wie sich die verschiedenen Teile der Abfrage darauf auswirken
  • Kann Abfragen mit Ausführungshinweisen optimieren, ohne die Leistung zu beeinträchtigen (Parallelitätshinweise, Indexhinweise, Schleifenhinweise usw.)
  • Kann Traces für das Identifizieren und Verstehen von Ausführungsstatistiken unter realer Last profilieren und verwenden
  • Kennt die Datenstrukturen auf der Festplatte
  • Kann Leistungsindikatoren verwenden und verstehen, wie sich die Datenbanklast und das Datenbankverhalten auf deren Überwachung auswirken
  • Kennt das Entwerfen eines OLAP-Cubes und das Ausführen eines erweiterten Data Mining mit einem
  • Kennt den Umgang mit Triggern und deren sichere Verwendung bei minimalem Risiko
  • Kann verteilte Transaktionen auch mit Ebenen verwenden

Das ist alles, was ich mir vorstellen kann. Bitte hinterlasse Kommentare, in denen andere erwähnt werden, die ich verpasst habe oder wenn ich etwas falsch platziert habe. Ich bin nicht weit genug fortgeschritten, um eine riesige Liste fortgeschrittener Techniken zu kennen, mit denen ich mich auseinandersetzen kann

Jimmy Hoffa
quelle
Es ist interessant, nur unsere beiden Listen nebeneinander zu sehen
Chris Pitman
11

Hier ist die Skala, die ich bei der Befragung von Kandidaten verwende. Dies ist natürlich meine persönliche Meinung, Maßstäbe können leicht variieren:

Zunächst suche ich nach Datenbankkenntnissen, nicht speziell nach "SQL".

Anfänger:

  • Kennt die grundlegende SQL-Syntax
  • Kann Daten über mehrere Tabellen hinweg auswählen und filtern
  • Versteht innere / äußere / Kreuzverbindungen
  • Vages Verständnis von Normalisierung, Indizierung, Transaktionen, Sperren

Mittlere:

  • Versteht die Unterschiede zwischen prozeduralen und deklarativen Stilen für SQL
  • Erfahrung mit mindestens einer DBs-SQL-Erweiterung (PSQL, TSQL usw.)
  • Versteht und kann eine Datenbank in dritter normaler Form entwerfen
  • Versteht und kann die Indizierung implementieren
  • Versteht Transaktionen und kann sie in einer einzigen Datenbank verwenden
  • Weiß, wann und wie ein Ausführungsplan zu analysieren ist

Fortgeschrittene:

  • Versteht wann und wie man eine Datenbank denormalisiert
  • Versteht, wie verteilte Transaktionen in einer Datenbank und auf integrierten Systemen eingerichtet werden
  • Kann eine Datenbank für Hochverfügbarkeit, Datenwiederherstellung usw. Einrichten
  • Tiefes Unverständnis der internen Abläufe jeder DB-Engine (mindestens zwei)
  • Zusätzliche Punkte für eine erhebliche Gefährdung durch Data Warehousing und Reporting
  • Zusätzliche Punkte für eine signifikante Exposition gegenüber NoSQL-Varianten und eine rationale Reihe von Kriterien, wann was verwendet werden soll
Chris Pitman
quelle
Komisch, deine Liste ist meiner ziemlich ähnlich; Obwohl ich Ausführungspläne einen Schritt nach oben gesetzt habe, haben wir im Grunde das gleiche. Ich habe fast die 3. Normalform in die Zwischenstufe eingeordnet, aber ich denke wirklich, dass Datenmodellierung nicht Anfängern / Zwischenstufen / Fortgeschrittenen zugeschrieben werden kann, es ist einfach zu viel von einem künstlerischen Talent, das so grau ist. Zu wissen, wie man die 3. Normalität macht, ist eine Fähigkeit, zu wissen, wann eine Kunst ist. Das Wie ist jedoch relevant und ich habe es fast auch für dieses He in die Zwischenstufe gebracht
Jimmy Hoffa,