¿Son estos conceptos SQL para principiantes, intermedios o desarrolladores avanzados? [cerrado]

16

He estado aprendiendo SQL recientemente y practicando con MySQL / Postgres y pronto Oracle DB. También busqué en la web un estudio de 'mapa de ruta' de bases de datos, pero desafortunadamente no pude encontrar uno.

Quiero entender dónde y por qué conceptos particulares de bases de datos caen en la escala de principiante a intermedio y avanzado. Estoy pensando en bases de datos relacionales en su mayor parte.

Explique cómo diseñar las habilidades enumeradas a continuación en una progresión de Principiante -> Intermedio -> Avanzado para el nivel de desarrollador que debe conocerlas:

  • Donde cláusulas
  • Actualizar sintaxis
  • Uniones
  • Alterar y crear declaraciones
  • Tablas temporales
  • Cursores
  • Índices
  • Llaves extranjeras
  • Restricciones
  • Actas
  • Subconsultas
  • Pivotes
  • Funciones agregadas
  • Perfilado
  • OLAP y OLTP
  • Disparadores
  • Planes de ejecucion
  • Consejos de ejecución
  • Contadores de rendimiento
  • Normalización
Daniel
fuente

Respuestas:

20

Yo diría que hay dos tipos de cosas que debe saber con respecto a SQL (esto es cierto para muchas tecnologías realmente), hay cosas técnicas específicas como uniones, subconsultas, uniones, etc. que usted comprende o no, y luego hay cosas como el diseño de bases de datos y el modelado de datos que tiene un gradiente de habilidad, como el arte. Mejora con el tiempo con esas cosas más suaves, pero nunca las "conoce" porque no hay "funcionan de esta manera" con ellas.

Dicho esto, aquí hay un diseño general con el que iría, y estoy absolutamente abierto a comentarios / pensamientos de otros en los que pueda estar equivocado.

Principiante

  • Donde cláusulas (en, entre, etc.)
  • Actualizar sintaxis
  • Comprensión interna y izquierda versus derecha unir comprensión y uso
  • Sintaxis para alterar y crear estructuras
  • Tablas temporales y su uso.
  • Cursores
  • Idea básica para qué sirven los índices, aunque no cómo funcionan
  • Comprender para qué sirven las claves externas y cómo solucionarlas (eliminaciones en cascada, etc.)
  • Comprende los conceptos básicos de las transacciones.
  • Comprende las restricciones

Intermedio

  • Cómo funcionan los índices, la diferencia entre agrupados, no agrupados, etc., qué es una página y cómo se distribuyen
  • Comprensión de las subconsultas, y puede pensar en usarlas en uniones y dónde
  • Pivotes
  • Puede pensar uniéndose a una tabla en sí mismo cuando sea relevante
  • Puede generar informes de datos complejos a través de grupos bys con funciones agregadas
  • Puede hacer perfiles básicos solo en una capacidad de monitoreo / depuración como leer un registro
  • Entiende la diferencia entre OLAP y OLTP y cuándo / dónde usar estructuras OLAP
  • Sabe usar disparadores y no usarlos
  • Entiende las transacciones y puede superponerlas manejando fallas en la pila

Avanzado

  • Puede leer un plan de ejecución y comprender cómo las diferentes partes de la consulta lo afectan
  • Puede ajustar las consultas con sugerencias de ejecución sin arruinar el rendimiento (sugerencias de paralelismo, sugerencias de índice, sugerencias de bucle, etc.)
  • Puede perfilar y usar trazas para identificar y comprender estadísticas de ejecuciones bajo carga del mundo real
  • Sabe cuáles son las estructuras de datos en el disco.
  • Puede usar contadores de rendimiento y comprender cuál es la carga y el comportamiento de la base de datos al monitorearlos
  • Sabe cómo diseñar un cubo OLAP y hacer minería de datos avanzada con uno
  • Sabe cómo usar desencadenantes y cómo usarlos de manera segura, con un riesgo mínimo
  • Sabe usar transacciones distribuidas incluso con capas

Eso es todo lo que se me ocurrió en la cabeza. Por favor, deje comentarios mencionando a otros que extrañé o si puse algo en el lugar equivocado No estoy lo suficientemente avanzado como para saber una gran lista de técnicas avanzadas para sofocar je

Jimmy Hoffa
fuente
Es interesante ver nuestras dos listas una al lado de la otra
Chris Pitman
11

Aquí está la escala que uso al entrevistar candidatos. Obviamente, esta es mi opinión personal, las escalas pueden variar fácilmente:

Primero, estoy buscando habilidades de base de datos, no específicamente "SQL".

Principiante:

  • Conoce la sintaxis básica de SQL
  • Puede seleccionar y filtrar datos en varias tablas
  • Comprende las uniones internas / externas / cruzadas
  • Comprensión vaga de normalización, indexación, transacciones, bloqueo

Intermedio:

  • Comprende las diferencias entre los estilos de procedimiento y declarativo para SQL
  • Experiencia con al menos una extensión SQL DBs (PSQL, TSQL, etc.)
  • Comprende y puede diseñar una base de datos en la tercera forma normal
  • Comprende y puede implementar la indexación
  • Entiende las transacciones y puede usarlas en una sola base de datos
  • Sabe cuándo y cómo analizar un plan de ejecución

Avanzado:

  • Comprende cuándo y cómo desnormalizar una base de datos
  • Comprende cómo configurar transacciones distribuidas en una base de datos y sistemas integrados
  • Puede configurar una base de datos para alta disponibilidad, recuperación de datos, etc.
  • Comprensión profunda del funcionamiento interno de cada motor DB (al menos dos)
  • Puntos extra por exposición significativa al almacenamiento de datos e informes
  • Puntos adicionales para una exposición significativa a variantes de NoSQL, y un conjunto racional de criterios sobre cuándo usar qué
Chris Pitman
fuente
Es curioso, tu lista es bastante similar a la mía; aunque puse los planes de ejecución un paso adelante, de lo contrario tenemos básicamente lo mismo. Casi pongo la tercera forma normal en intermedia, pero realmente creo que el modelado de datos no puede atribuirse a principiante / intermedio / avanzado, es simplemente un talento artístico demasiado gris. Saber hacer 3º normal es una habilidad, saber cuándo es un arte. Sin embargo, el cómo es relevante y casi lo pongo en intermedio también para eso je
Jimmy Hoffa