Questi concetti SQL sono per sviluppatori principianti, intermedi o avanzati? [chiuso]


16

Ho imparato SQL di recente e mi sono esercitato con MySQL / Postgres e presto Oracle DB. Ho anche cercato sul web uno studio "road map" dei database, ma sfortunatamente non sono riuscito a trovarne uno.

Voglio capire dove e perché particolari concetti di database rientrano nella scala da principiante a intermedio e avanzato. Sto pensando ai database relazionali per la maggior parte.

Spiegare come disporre le abilità elencate di seguito in una progressione di Principiante -> Intermedio -> Avanzato per quale livello di sviluppatore dovrebbe conoscerle:

  • Clausole Where
  • Sintassi dell'aggiornamento
  • Si unisce
  • Modifica e crea istruzioni
  • Tabelle temporanee
  • Cursori
  • indici
  • Chiavi esterne
  • vincoli
  • Le transazioni
  • subquery
  • perni
  • Funzioni aggregate
  • profiling
  • OLAP e OLTP
  • trigger
  • Piani di esecuzione
  • Suggerimenti per l'esecuzione
  • Contatori delle prestazioni
  • Normalizzazione

Risposte:


20

Direi che ci sono due tipi di cose da sapere riguardo a SQL (questo è vero per molte tecnologie in realtà), ci sono cose tecniche specifiche come join, sottoquery, sindacati, ecc. Che capisci o non capisci, e poi ci sono cose come la progettazione di database e la modellazione di dati che hanno un gradiente di abilità, come l'arte. Migliorerai nel tempo con quelle cose più morbide, ma non le "conosci" mai perché non c'è "loro funzionano così" con loro.

Detto questo, ecco un layout generale con cui vorrei andare, e sono assolutamente aperto a commenti / pensieri di altri in cui potrei sbagliarmi.

Principiante

  • Clausole Where (in, Between, ecc.)
  • Sintassi dell'aggiornamento
  • Interno e sinistra contro destra comprensione e utilizzo del join
  • Sintassi per l'alterazione e la creazione di strutture
  • Tabelle temporanee e loro utilizzo
  • Cursori
  • Idea di base a cosa servono gli indici, anche se non come funzionano
  • Comprensione a cosa servono le chiavi esterne e come aggirarle (eliminazioni a cascata, ecc.)
  • Comprende le basi delle transazioni
  • Comprende i vincoli

Intermedio

  • Come funzionano gli indici, differenza tra cluster, non cluster, ecc., Cos'è una pagina e come sono layout
  • Comprensione di sottoquery e può pensare attraverso il loro utilizzo in join e dove
  • perni
  • Può pensare unendosi a un tavolo su se stesso, se pertinente
  • Può generare report di dati complessi tramite raggruppamenti per byte con funzioni aggregate
  • Può eseguire la profilazione di base solo in una capacità di monitoraggio / debug come la lettura di un registro
  • Comprende la differenza tra OLAP e OLTP e quando / dove utilizzare le strutture OLAP
  • Sa come usare i trigger e non usarli
  • Comprende le transazioni e può stratificarle gestendo gli errori nello stack

Avanzate

  • Può leggere un piano di esecuzione e comprendere come le diverse parti della query lo influenzano
  • È possibile ottimizzare le query con suggerimenti di esecuzione senza rovinare le prestazioni (suggerimenti di parallelismo, suggerimenti di indice, suggerimenti di loop, ecc.)
  • Può profilare e utilizzare tracce per identificare e comprendere le statistiche delle esecuzioni sotto carico del mondo reale
  • Sa quali sono le strutture di dati sul disco
  • Può utilizzare i contatori delle prestazioni e comprendere il carico e il comportamento del database dal loro monitoraggio
  • Sa come progettare un cubo OLAP ed eseguire il data mining avanzato con uno
  • Sa come utilizzare i trigger e come utilizzarli in modo sicuro, con un rischio minimo
  • Sa come utilizzare le transazioni distribuite anche con i livelli

Questo è tutto ciò che ho potuto escogitare dalla cima della mia testa. Si prega di lasciare commenti che menzionino altri che mi sono perso o se ho messo qualcosa nel posto sbagliato. Non sono abbastanza avanzato per conoscere un vasto elenco di tecniche avanzate per mettere giù heh


È interessante solo vedere le nostre due liste fianco a fianco
Chris Pitman il

11

Ecco la scala che uso durante l'intervista ai candidati. Questa è ovviamente la mia opinione personale, le scale possono facilmente variare:

Innanzitutto, cerco competenze di database, non specificamente "SQL".

Principiante:

  • Conosce la sintassi SQL di base
  • Può selezionare e filtrare i dati su più tabelle
  • Comprende i join interni / esterni / incrociati
  • Vaga comprensione di normalizzazione, indicizzazione, transazioni, blocco

Intermedio:

  • Comprende le differenze tra stili procedurali e dichiarativi per SQL
  • Esperienza con almeno un DB estensioni SQL (PSQL, TSQL, ecc.)
  • Comprende e può progettare un database in terza forma normale
  • Comprende e può implementare l'indicizzazione
  • Comprende le transazioni e può usarle in un singolo database
  • Sa quando e come analizzare un piano di esecuzione

Avanzate:

  • Comprende quando e come denormalizzare un database
  • Comprende come impostare transazioni distribuite su un database e sistemi integrati
  • Può impostare un database per alta disponibilità, recupero dati, ecc
  • Comprensione approfondita del funzionamento interno di ciascun motore DB (almeno due)
  • Punti extra per una significativa esposizione al data warehousing e reporting
  • Punti extra per un'esposizione significativa alle varianti di NoSQL e una serie razionale di criteri per quando usare cosa

Divertente, la tua lista è abbastanza simile alla mia; anche se ho messo i piani di esecuzione un passo avanti, altrimenti abbiamo sostanzialmente lo stesso. Ho quasi messo la terza forma normale in intermedio, ma penso davvero che la modellazione dei dati non possa essere attribuita a principiante / intermedio / avanzato, è semplicemente un talento artistico così grigio. Saper fare la 3a normalità è un'abilità, sapere quando è un'arte. Il come è rilevante però e quasi lo metto anche in quello intermedio per quel heh
Jimmy Hoffa il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.