Saltar al contenido

Parte 07 — Grafos, columnas, tiempo y búsqueda

Modelos especializados y el criterio para saber cuando la carga de trabajo justifica salir del relacional.

5 clases · 15 horas · 20 conceptos · 16 fuentes

Antes de esta parte

Esta parte se apoya en lo trabajado antes. Si vienes de fuera del programa, revisa al menos el vocabulario de:

De qué trata esta parte

Cinco familias especializadas y un mismo criterio para todas: qué carga de trabajo justifica salir del relacional, y qué se paga por hacerlo. La estructura de la parte es deliberadamente comparativa, porque el error habitual no es elegir mal el motor especializado, sino adoptarlo sin haber comprobado que el relacional ya no daba más.

Grafos, para los recorridos de profundidad variable que SQL resuelve mal —con la aclaración honesta de cuándo una CTE recursiva sobre PostgreSQL es suficiente—. Columnas anchas, con su método de diseño invertido: primero la lista de consultas, después una tabla por consulta. Series temporales, con sus tres restricciones propias: cardinalidad de etiquetas, retención y submuestreo. Búsqueda de texto, con el índice invertido y la relevancia de TF-IDF a BM25. Y analítica columnar, donde se miden las cuatro contribuciones que producen los dos órdenes de magnitud, en lugar de atribuirlos al producto.

Las clases 041 y 042 son además preparación directa de la parte 13: BM25 vuelve como componente léxico de la búsqueda híbrida, y precisión y exhaustividad vuelven como métricas de un sistema RAG.

Al terminar esta parte podrás

  1. Decidir si un recorrido justifica un motor de grafos o si una CTE recursiva es suficiente.
  2. Diseñar tablas de columnas anchas partiendo de la lista de consultas y no del modelo conceptual.
  3. Controlar la cardinalidad, la retención y el submuestreo de una serie temporal.
  4. Explicar cómo se construye un índice invertido y cómo BM25 ordena los resultados.
  5. Medir de dónde sale la ventaja de un motor columnar en lugar de atribuirla al producto.

Las clases, una por una

#ClaseNivelHorasFuentes
038Grafos de propiedades y los recorridos que SQL hace malIntermedio33
039Columnas anchas: modelar desde la consultaAvanzado33
040Series temporales: cardinalidad, retención y agregados continuosIntermedio33
041Búsqueda de texto: índice invertido, análisis y relevanciaIntermedio33
042Analítica columnar: por qué el formato cambia el orden de magnitudAvanzado34

038 — Grafos de propiedades y los recorridos que SQL hace mal

Intermedio · 3 h · 3 fuentes · requiere 026, 028

Los recorridos que SQL hace mal: profundidad variable, caminos y vecindarios. Explica la ventaja estructural del motor de grafos —la reunión sin índice, porque cada nodo guarda las direcciones de sus vecinos— y también cuándo una CTE recursiva sobre PostgreSQL es suficiente y no hace falta otro sistema.

nodo arista recorrido de profundidad variable reunión sin índice

039 — Columnas anchas: modelar desde la consulta

Avanzado · 3 h · 3 fuentes · requiere 019, 034

El método de diseño invertido de las columnas anchas: primero se escribe la lista de consultas y después una tabla por consulta, aunque los mismos datos queden repetidos cinco veces. La clave de partición decide en qué nodo vive la fila y la de agrupamiento el orden dentro de ella; equivocarse en la primera es el error de diseño más caro de esta familia.

clave de partición clave de agrupamiento desnormalización por consulta

040 — Series temporales: cardinalidad, retención y agregados continuos

Intermedio · 3 h · 3 fuentes · requiere 006, 019

Las series temporales y sus tres restricciones propias: la cardinalidad de etiquetas, que explota si se usa un identificador como etiqueta; la retención, que hay que decidir antes de acumular; y el submuestreo con agregados continuos, que es cómo se sostiene un histórico largo sin crecimiento lineal.

cardinalidad de etiquetas submuestreo retención agregado continuo

041 — Búsqueda de texto: índice invertido, análisis y relevancia

Intermedio · 3 h · 3 fuentes · requiere 004, 025

Por qué `LIKE '%algo%'` no es buscar. Presenta el índice invertido, el analizador que decide qué es un término, y la relevancia de TF-IDF a BM25. Cierra con precisión y exhaustividad, el par de métricas que hace que una búsqueda se pueda evaluar en lugar de opinar sobre ella; ambas reaparecen en la parte 13.

índice invertido analizador TF-IDF BM25 precisión y exhaustividad

042 — Analítica columnar: por qué el formato cambia el orden de magnitud

Avanzado · 3 h · 4 fuentes · requiere 033

De dónde salen realmente los dos órdenes de magnitud de la analítica: leer solo las columnas necesarias, comprimirlas mejor porque los valores contiguos se parecen, procesarlas en lotes vectorizados y podar bloques enteros por sus estadísticas. La clase mide las cuatro contribuciones en lugar de atribuirlas al producto.

almacenamiento columnar compresión ejecución vectorizada poda de particiones

Errores frecuentes en esta parte

Cada uno de estos es una creencia habitual y su corrección.

Vocabulario de la parte

Los 20 términos que esta parte introduce. Todos están también en el glosario del programa con sus términos relacionados.

TérminoQué significaSe trabaja en
agregado continuoVista materializada que se actualiza de forma incremental según llegan datos nuevos, típicamente con medias u otros resúmenes por intervalo. Permite responder «el promedio por hora del último año» sin recorrer mil millones de puntos en cada consulta.040
almacenamiento columnarGuardar juntos todos los valores de una misma columna en lugar de todas las columnas de una misma fila. Una consulta analítica lee solo las columnas que necesita y comprime mucho mejor, porque los valores contiguos se parecen entre sí.042
analizadorPrimer componente del gestor: convierte el texto SQL en un árbol sintáctico y comprueba que los objetos citados existen y que los tipos encajan. Aquí mueren los errores de sintaxis, antes de tocar un solo dato. (En la clase 041 la misma palabra nombra otra cosa: el analizador de texto que parte un documento en términos indexables.)041
aristaRelación dirigida y con tipo entre dos nodos, que puede llevar sus propias propiedades. En un motor de grafos es un puntero real, no una clave foránea que haya que buscar en un índice, y de ahí viene su ventaja al recorrer.038
BM25Función de relevancia que refina TF-IDF con saturación de la frecuencia y normalización por longitud del documento, gobernadas por los parámetros `k1` y `b`. Es la referencia léxica contra la que se compara cualquier buscador, incluidos los vectoriales.041
cardinalidad de etiquetasNúmero de combinaciones distintas de etiquetas en una base de series temporales; cada combinación es una serie con su índice y su memoria. Meter un identificador de usuario o de petición como etiqueta produce una explosión de cardinalidad que tumba el motor.040
clave de agrupamientoLa parte de la clave primaria que ordena las filas dentro de una partición. Es lo que permite leer rangos —«los últimos 20 mensajes de este chat»— con una sola lectura secuencial, y por eso el orden se decide al crear la tabla, no al consultar.039
clave de particiónLa parte de la clave primaria que decide en qué nodo vive la fila. Toda consulta eficiente debe fijarla; una consulta sin ella obliga a preguntar a todo el anillo, y es el error de diseño número uno en columnas anchas.039
compresiónEn un formato columnar, los valores contiguos se parecen, así que técnicas como el diccionario, la codificación por carrera o el delta reducen el tamaño en un orden de magnitud. Menos bytes leídos es menos entrada y salida, que es de donde sale casi toda la ventaja analítica.042
desnormalización por consultaMétodo de diseño de columnas anchas: se escribe primero la lista de consultas y luego una tabla por consulta, aunque los mismos datos queden repetidos en cinco tablas. La coherencia entre copias pasa a ser responsabilidad de la aplicación.039
ejecución vectorizadaEl ejecutor procesa lotes de valores por operador en lugar de fila a fila. Reduce el costo por fila del intérprete y permite usar instrucciones SIMD; combinada con el formato columnar, es la explicación de las diferencias de dos órdenes de magnitud frente a un motor de filas.042
nodoVértice del grafo de propiedades: una cosa con etiquetas y con pares clave-valor propios. Equivale a una fila, con la diferencia de que sus conexiones son parte de la estructura y no se recomponen por reunión.038
poda de particionesDescartar ficheros o bloques enteros sin abrirlos, gracias a los mínimos y máximos guardados en sus metadatos. Es lo que hace que consultar un día concreto sobre un histórico de diez años cueste casi lo mismo que consultar ese día solo.042
precisión y exhaustividadPrecisión: qué proporción de lo devuelto era relevante. Exhaustividad (o *recall*): qué proporción de lo relevante se devolvió. Casi siempre se compensan entre sí, y por eso una búsqueda solo puede evaluarse fijando cuál de las dos importa en ese caso.041
recorrido de profundidad variableConsulta del tipo «amigos de amigos hasta cinco saltos» o «cualquier camino entre A y B». En SQL exige una CTE recursiva y una reunión por nivel; en un motor de grafos el costo depende del subgrafo recorrido, no del tamaño total del grafo.038
retenciónCuánto tiempo se conservan los datos antes de borrarlos automáticamente. En series temporales es una decisión de capacidad; en datos personales es además una obligación legal, y las dos deben coincidir en la misma política escrita.040
reunión sin índicePropiedad de los motores de grafos nativos: cada nodo guarda las direcciones físicas de sus vecinos, así que pasar de uno a otro no consulta ningún índice. Es la razón técnica de que el recorrido profundo escale donde el `JOIN` repetido se degrada.038
submuestreoReducir la resolución de los datos antiguos: guardar cada segundo la última hora, cada minuto la última semana, cada hora el último año. Es cómo se sostiene un histórico largo sin que el tamaño crezca de forma lineal para siempre.040
TF-IDFPeso clásico de un término: crece con su frecuencia en el documento (TF) y decrece con el número de documentos en que aparece (IDF). Formaliza la intuición de que «el» no distingue nada y «hipervisor» distingue mucho.041
índice invertidoEstructura que va de cada término al listado de documentos que lo contienen —lo contrario de recorrer los documentos buscando el término—. Es la base de todo buscador de texto y la razón de que `LIKE '%algo%'` no sea comparable a una búsqueda de verdad.041

Fuentes usadas en esta parte

16 obras distintas sostienen lo que se afirma en estas 5 clases.

Otras partes