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.
- ¿Hay algún algoritmo que sea más rápido que log (n)?
- ¿Cuál es el curso / certificación mejor pagado disponible para estructuras de datos y algoritmo?
- ¿Qué son los proyectos de código abierto? Soy muy bueno en C ++, estructuras de datos y algoritmos. ¿Puedo contribuir a algunos proyectos de código abierto? Si es así, ¿cómo? ¿Tendré que aprender algún idioma nuevo?
- Me acabo de unir a TopCoder porque quiero aprender las estructuras de datos y cómo codificarlas en C, pero no tengo idea de dónde comenzar en TopCoder ya que puedo ver 3 categorías en el sitio, pero no pude encontrar la forma correcta. ¿Qué debo hacer para comenzar?
- En la visión por computadora, ¿el aprendizaje automático va a hacer obsoletos los algoritmos de aprendizaje no automático?
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.