Esses conceitos de SQL são para desenvolvedores iniciantes, intermediários ou avançados? [fechadas]
16
Estive aprendendo SQL recentemente e praticando com MySQL / Postgres e em breve Oracle DB. Também pesquisei na web um estudo de 'road map' de bancos de dados, mas não consegui encontrar um, infelizmente.
Quero entender onde e por que conceitos específicos de banco de dados caem na escala, do iniciante ao intermediário e avançado. Estou pensando em bancos de dados relacionais para a maior parte.
Explique como apresentar as habilidades listadas abaixo em uma progressão de Iniciante -> Intermediário -> Avançado para qual nível de desenvolvedor deve conhecê-las:
Eu diria que existem dois tipos de coisas a saber em relação ao SQL (isso é verdade para muitas tecnologias), existem coisas técnicas específicas, como junções, subconsultas, uniões, etc., que você entende ou não, e então há coisas como design de banco de dados e modelagem de dados, com um gradiente de habilidade, como arte. Você melhora com o tempo com essas coisas mais suaves, mas nunca as "conhece" porque não há "elas funcionam dessa maneira" com elas.
Dito isto, aqui está um layout geral com o qual eu iria e estou absolutamente aberto a comentários / pensamentos de outras pessoas em que posso estar errado.
Principiante
Cláusulas Where (entre, etc)
Sintaxe de atualização
Entendimento e uso da junção interna x esquerda x direita
Sintaxe para alterar e criar estruturas
Tabelas temporárias e seu uso
Cursores
Ideia básica para que servem os índices, embora não como eles funcionam
Compreensão de que servem as chaves estrangeiras e como contorná-las (exclusões em cascata etc.)
Compreende o básico das transações
Compreende restrições
Intermediário
Como os índices funcionam, a diferença entre agrupados, não agrupados, etc., o que é uma página e como eles são exibidos
Compreensão das subconsultas e pode pensar em usá-las em junções e onde
Pivôs
Consegue pensar em ingressar em uma tabela quando relevante
Pode gerar relatórios de dados complexos por meio de agrupamentos com funções agregadas
Pode criar perfis básicos apenas em uma capacidade de monitoramento / depuração, como a leitura de um log
Entende a diferença entre OLAP e OLTP e quando / onde usar estruturas OLAP
Sabe como usar gatilhos e não usá-los
Entende as transações e pode colocá-las em camadas, manipulando falhas na pilha
Avançado
Pode ler um plano de execução e entender como as diferentes partes da consulta o afetam
Pode ajustar consultas com dicas de execução sem prejudicar o desempenho (dicas de paralelismo, dicas de índice, dicas de loop etc.)
Pode criar um perfil e usar rastreamentos para identificar e entender estatísticas de execuções sob carga do mundo real
Sabe quais são as estruturas de dados no disco
Pode usar contadores de desempenho e entender qual é a carga e o comportamento do banco de dados monitorando-os
Sabe como projetar um cubo OLAP e fazer mineração de dados avançada com um
Sabe como usar gatilhos e como usá-los com segurança, com risco mínimo
Sabe como usar transações distribuídas, mesmo com camadas
Era tudo o que eu conseguia pensar em cima da minha cabeça. Por favor, deixe comentários mencionando outras pessoas que eu perdi ou se coloquei algo no lugar errado. Eu não sou avançado o suficiente para conhecer uma enorme lista de técnicas avançadas para derrubar heh
Engraçado, sua lista é bem parecida com a minha; embora eu coloque os planos de execução um passo à frente, caso contrário, temos basicamente o mesmo. Quase coloquei a terceira forma normal no intermediário, mas realmente acho que a modelagem de dados não pode ser atribuída a iniciantes / intermediários / avançados, é simplesmente um talento artístico tão cinza. Saber fazer o 3º normal é uma habilidade, saber quando é uma arte. O como é relevante embora e eu quase colocá-lo em intermediário, bem como para que heh
Aqui está a escala que eu uso ao entrevistar candidatos. Esta é obviamente a minha opinião pessoal, as escalas podem variar facilmente:
Primeiro, estou procurando habilidades de banco de dados, não especificamente "SQL".
Principiante:
Intermediário:
Avançado:
fonte