Ces concepts SQL sont-ils destinés aux développeurs débutants, intermédiaires ou avancés? [fermé]
16
J'ai récemment appris SQL et je m'entraîne avec MySQL / Postgres et bientôt Oracle DB. J'ai également recherché sur le Web une étude de la «feuille de route» des bases de données mais je n'ai malheureusement pas pu en trouver une.
Je veux comprendre où et pourquoi des concepts de base de données particuliers tombent sur l'échelle du débutant à intermédiaire et avancé. Je pense principalement aux bases de données relationnelles.
Veuillez expliquer comment présenter les compétences énumérées ci-dessous dans une progression de Débutant -> Intermédiaire -> Avancé pour quel niveau de développeur devrait les connaître:
Je dirais qu'il y a deux types de choses à savoir en ce qui concerne SQL (c'est vrai pour de nombreuses technologies en fait), il y a des choses techniques spécifiques comme les jointures, les sous-requêtes, les unions, etc. que vous comprenez ou ne comprenez pas, et puis il y a des choses comme la conception de bases de données et la modélisation de données qui a un gradient de compétences, comme l'art. On s'améliore avec le temps avec ces choses plus douces, mais on ne les "connaît" jamais car il n'y a pas "elles fonctionnent comme ça" avec elles.
Cela dit, voici une présentation générale avec laquelle j'irais, et je suis absolument ouvert aux commentaires / réflexions des autres où je peux me tromper.
Débutant
Clauses Where (entre, entre, etc.)
Mettre à jour la syntaxe
Compréhension et utilisation de la jointure interne vs gauche vs droite
Syntaxe pour modifier et créer des structures
Tables temporaires et leur utilisation
Curseurs
Idée de base à quoi servent les index, mais pas comment ils fonctionnent
Comprendre à quoi servent les clés étrangères et comment les contourner (suppressions en cascade, etc.)
Comprend les bases des transactions
Comprend les contraintes
Intermédiaire
Fonctionnement des index, différence entre les clusters, les non-clusters, etc., ce qu'est une page et leur mise en page
Compréhension des sous-requêtes et réflexion sur leur utilisation dans les jointures et les emplacements
Pivots
Peut penser en rejoignant une table sur elle-même lorsque cela est pertinent
Peut générer des rapports de données complexes via des regroupements avec des fonctions d'agrégation
Peut effectuer un profilage de base uniquement dans une capacité de surveillance / débogage comme la lecture d'un journal
Comprend la différence entre OLAP et OLTP et quand / où utiliser les structures OLAP
Savoir utiliser les déclencheurs et ne pas les utiliser
Comprend les transactions et peut les superposer en gérant les échecs de la pile
Avancée
Peut lire un plan d'exécution et comprendre comment les différentes parties de la requête l'affectent
Peut régler les requêtes avec des conseils d'exécution sans bousiller les performances (conseils de parallélisme, conseils d'index, conseils de boucle, etc.)
Peut profiler et utiliser des traces pour identifier et comprendre les statistiques des exécutions sous charge réelle
Sait quelles sont les structures de données sur le disque
Peut utiliser des compteurs de performances et comprendre la charge et le comportement de la base de données en les surveillant
Savoir concevoir un cube OLAP et effectuer une exploration de données avancée avec un
Sait comment utiliser les déclencheurs et comment les utiliser en toute sécurité, avec un risque minimal
Savoir utiliser les transactions distribuées même avec des couches
C'est tout ce que je pouvais trouver du haut de ma tête. Veuillez laisser des commentaires mentionnant les autres que j'ai manqués ou si j'ai mis quelque chose au mauvais endroit. Je ne suis pas assez avancé pour connaître une énorme liste de techniques avancées pour réprimer heh
C'est intéressant de voir nos deux listes côte à côte
Chris Pitman
11
Voici l'échelle que j'utilise lors des entretiens avec les candidats. C'est évidemment mon opinion personnelle, les échelles peuvent facilement varier:
Tout d'abord, je recherche des compétences en base de données, pas spécifiquement "SQL".
Débutant:
Connaît la syntaxe SQL de base
Peut sélectionner et filtrer les données sur plusieurs tables
Comprend les jointures internes / externes / croisées
Compréhension vague de la normalisation, de l'indexation, des transactions, du verrouillage
Intermédiaire:
Comprend les différences entre les styles procéduraux et déclaratifs pour SQL
Expérience avec au moins une extension SQL DB (PSQL, TSQL, etc.)
Comprend et peut concevoir une base de données sous une troisième forme normale
Comprend et peut implémenter l'indexation
Comprend les transactions et peut les utiliser dans une seule base de données
Sait quand et comment analyser un plan d'exécution
Avancée:
Comprend quand et comment dénormaliser une base de données
Comprend comment configurer des transactions distribuées à travers une base de données et des systèmes intégrés
Peut définir une base de données pour la haute disponibilité, la récupération de données, etc.
Méconnaissance approfondie du fonctionnement interne de chaque moteur DB (au moins deux)
Points supplémentaires pour une exposition significative à l'entreposage de données et au reporting
Points supplémentaires pour une exposition significative aux variantes de NoSQL, et un ensemble rationnel de critères pour savoir quand utiliser quoi
Drôle, votre liste est assez similaire à la mienne; même si je mets les plans d'exécution à un niveau supérieur, sinon nous avons essentiellement les mêmes. J'ai presque mis la 3e forme normale en intermédiaire, mais je pense vraiment que la modélisation des données ne peut pas être attribuée à un débutant / intermédiaire / avancé, c'est tout simplement trop un talent artistique qui est si gris. Savoir faire la 3e normale est une compétence, savoir quand est un art. Le comment est pertinent cependant et je l'ai presque mis en intermédiaire aussi pour ce heh
Voici l'échelle que j'utilise lors des entretiens avec les candidats. C'est évidemment mon opinion personnelle, les échelles peuvent facilement varier:
Tout d'abord, je recherche des compétences en base de données, pas spécifiquement "SQL".
Débutant:
Intermédiaire:
Avancée:
la source