Las bases de datos relacionales tradicionales suelen utilizar árboles B y montones para almacenar datos indexados y no indexados. Esto se debe al hecho de que el RDBMS tradicional está optimizado para cargas de trabajo que consisten en operaciones frecuentes de inserción / actualización / eliminación y selecciones de esquema amplio (es decir, conteo (*)). Esto es algo que los árboles B manejan realmente bien y probablemente no haya una mejor estructura de datos para ese caso de uso.
Los almacenes de datos tienen diferentes casos de uso y sirven diferentes cargas de trabajo de consulta. Los datos no cambian con tanta frecuencia y se agregan principalmente (como punto final de la tubería de datos caliente-caliente-frío), mientras que las consultas en el almacén generalmente involucran solo unas pocas columnas y alguna forma de agregación (consultas analíticas).
Debido a que usualmente operamos solo en un pequeño número de columnas (es decir, raramente recuperamos todos los datos de fila por fila) y manejamos una gran cantidad de datos, los datos de la tabla generalmente se almacenan en un formato comprimido de columna principal, en lugar de un formato de fila principal ( comúnmente utilizado en índices agrupados basados en B-tree). De esta forma, conservamos el espacio utilizado (a medida que implementamos conceptos como longitud de ejecución, codificación Huffman, algoritmos de compresión genéricos y especializados) y brindamos la capacidad de acceder a columnas individuales, según lo dicte la naturaleza de la carga de trabajo.
- ¿Cuáles son algunos métodos de diagnóstico utilizados en un algoritmo de agrupamiento?
- Cómo resolver la pregunta en la descripción a continuación
- ¿Podría haber un límite superior en la 'inteligencia' de una IA?
- ¿Cuáles son algunos algoritmos que usamos diariamente que tienen complejidades [matemáticas] O (n), O (n ^ 2), [/ matemáticas] y [matemáticas] O (\ log n) [/ matemáticas]?
- ¿Qué estructuras de datos / algoritmos de coincidencia usa vimdiff?
Dichas estructuras de datos se denominan típicamente índices de almacén de columnas. El uso de la palabra ‘índice’, aquí, es engañoso, ya que la estructura no es realmente un índice, en el sentido tradicional, por lo que no proporciona la capacidad de realizar búsquedas rápidas de puntos, filtros o consultas de rango. La estructura suele ir acompañada de mapas de bits y filtros Bloom que facilitan las uniones hash, así que agréguelos a su lista de estructura de datos.
Por supuesto, esto solo se aplica a las tablas que contienen datos de hechos. Las tablas que contienen datos de dimensión (es decir, un conjunto relativamente estrecho y discreto de valores ampliamente utilizados) todavía se almacenan como árboles B.
Hay muchos almacenes de datos diferentes y muchas tecnologías diferentes utilizadas. Los relacionales usualmente usan lo que he descrito.