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:

  • Cláusulas Where
  • Sintaxe de atualização
  • Junções
  • Alterar e criar instruções
  • Tabelas temporárias
  • Cursores
  • Índices
  • Chaves estrangeiras
  • Restrições
  • Transações
  • Subconsultas
  • Pivôs
  • Funções agregadas
  • Criação de perfil
  • OLAP e OLTP
  • Gatilhos
  • Planos de execução
  • Dicas de execução
  • Contadores de desempenho
  • Normalização
Daniel
fonte

Respostas:

20

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

Jimmy Hoffa
fonte
Sua interessante apenas para ver o nosso lado duas listas a lado
Chris Pitman
11

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:

  • Conhece a sintaxe básica do SQL
  • Pode selecionar e filtrar dados em várias tabelas
  • Compreende junções internas / externas / transversais
  • Conhecimento vaga de normalização, indexação, transações, bloqueio

Intermediário:

  • Compreende as diferenças entre estilos procedurais e declarativos para SQL
  • Experiência com pelo menos uma extensão de banco de dados SQL (PSQL, TSQL, etc)
  • Entende e pode criar um banco de dados na terceira forma normal
  • Entende e pode implementar indexação
  • Compreende transações e pode usá-las em um único banco de dados
  • Sabe quando e como analisar um plano de execução

Avançado:

  • Entende quando e como desnormalizar um banco de dados
  • Entende como configurar transações distribuídas em um banco de dados e sistemas integrados
  • Pode configurar um banco de dados para alta disponibilidade, recuperação de dados, etc.
  • Profundo entendimento do funcionamento interno de cada mecanismo de banco de dados (pelo menos dois)
  • Pontos extras por exposição significativa a data warehousing e relatórios
  • Pontos extras por exposição significativa a variantes do NoSQL e um conjunto racional de critérios para quando usar o que
Chris Pitman
fonte
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
Jimmy Hoffa