He estado trabajando con el almacenamiento durante un tiempo.
Estoy intrigado por las bases de datos en columnas y la velocidad que tienen para ofrecer para la recuperación de datos.
Tengo una pregunta de varias partes:
- ¿Cómo funcionan las bases de datos en columnas?
- ¿En qué se diferencian de las bases de datos relacionales?
Respuestas:
¿Cómo funcionan las bases de datos en columnas?
La base de datos en columnas es un concepto más bien una arquitectura / implementación particular. En otras palabras, no hay una descripción particular sobre cómo funcionan estas bases de datos; de hecho, varios se basan en DBMS tradicionales, orientados a filas, simplemente almacenando la información en tablas con una (o más bien dos) columnas (y agregando la capa necesaria para acceder a los datos en columnas de una manera fácil).
¿En qué se diferencian de las bases de datos relacionales? Generalmente difieren de las bases de datos tradicionales (orientadas a filas) con respecto a ...
... en casos de uso específicos de DBMS .
En particular, ofrecen ventajas en las áreas mencionadas cuando el uso típico es calcular valores agregados en un número limitado de columnas, en lugar de intentar recuperar todas / la mayoría de las columnas para una entidad determinada.
¿Existe una versión de prueba de una base de datos en columnas que pueda instalar para jugar? (Estoy en Windows 7) Sí, existen implementaciones comerciales, gratuitas y también de código abierto de bases de datos en columnas. Para empezar, consulte la lista al final del artículo de Wikipedia .
Tenga en cuenta que varias de estas implementaciones se introdujeron para abordar una necesidad particular (por ejemplo, una huella muy pequeña, una distribución de datos muy comprimible o una emulación de matriz de repuesto, etc.) en lugar de proporcionar un DBMS orientado a columnas de propósito general per-se.
Nota: La observación sobre la "orientación de propósito único" de varios DBMS en columnas no es una crítica de estas implementaciones, sino más bien una indicación adicional de que tal enfoque para DBMS se desvía del enfoque más "natural" (y ciertamente más ampliamente utilizado) de almacenar entidades de registro. Como resultado, este enfoque se utiliza cuando el enfoque orientado a filas no es satisfactorio y, por lo tanto, tiende a
a) estar dirigido a un propósito particular b) recibir menos recursos / interés que el trabajo en "Propósito general", "Probado y Probado ", enfoque tabular.
Tentativamente, el modelo de datos Entity-Attribute-Value (EAV) puede ser una estrategia de almacenamiento alternativa que tal vez desee considerar. Aunque distinto del modelo de base de datos en columna "puro", EAV comparte varias de las características de las bases de datos en columna.
fuente
¿Cómo funcionan las bases de datos en columnas? El concepto que define a un almacén de columnas es que los valores de una tabla se almacenan contiguamente por columna. Así, la tabla de proveedores clásica de la base de datos de proveedores y piezas de CJ Date:
se almacenaría en el disco o en la memoria algo como:
Esto contrasta con un almacén de filas tradicional que almacenaría los datos de esta manera:
De este concepto simple fluyen todas las diferencias fundamentales en el rendimiento, para bien o para mal, entre un almacén de columnas y un almacén de filas. Por ejemplo, un almacén de columnas se destacará en la realización de agregaciones como totales y promedios, pero insertar una sola fila puede ser costoso, mientras que lo contrario es válido para los almacenes de filas. Esto debería ser evidente en el diagrama anterior.
¿En qué se diferencian de las bases de datos relacionales? Una base de datos de relaciones es un concepto lógico. Una base de datos en columnas, o almacén de columnas, es un concepto físico. Por tanto, los dos términos no son comparables de forma significativa. Los DMBS orientados a columnas pueden ser relacionales o no, al igual que los DBMS orientados a filas pueden adherirse más o menos a principios relacionales.
fuente
Yo diría que el mejor candidato para comprender las bases de datos orientadas a columnas es verificar HBase ( Apache Hbase ). Verifique el código y explore más para obtener información sobre la implementación.
fuente
Además, las bases de datos en columnas tienen una afinidad integrada por la compresión de datos y el proceso de carga es único. Aquí hay un artículo que escribí en 2008 que explica un poco más.
También puede estar interesado en un nuevo informe de Carl Olofson de IDC sobre la tecnología DBMS de tercera generación. Discute columnar, et al. Si no es cliente de IDC, puede obtenerlo gratis en nuestro sitio. También realizará un seminario web el 16 de junio (también en nuestro sitio).
(Por cierto, un comentario anterior enumera asterdatos, pero no creo que sean en columnas).
fuente
Para comprender qué es la base de datos orientada a columnas, es mejor contrastarla con la base de datos orientada a filas.
Las bases de datos orientadas a filas (por ejemplo, MS SQL Server y SQLite) están diseñadas para devolver datos de manera eficiente para una fila completa. Lo hace almacenando todos los valores de las columnas de una fila juntos. Las bases de datos orientadas a filas son adecuadas para los sistemas OLTP (por ejemplo, ventas minoristas y sistemas de transacciones financieras).
Las bases de datos orientadas a columnas están diseñadas para devolver datos de manera eficiente para un número limitado de columnas. Lo hace almacenando todos los valores de una columna juntos. Dos bases de datos orientadas a columnas ampliamente utilizadas son Apache Hbase y Google BigTable (utilizada por Google para sus búsquedas, análisis, mapas y Gmail). Son adecuados para los proyectos de big data. Una base de datos orientada a columnas se destacará en operaciones de lectura en un número limitado de columnas, sin embargo, la operación de escritura será costosa en comparación con las bases de datos orientadas a filas.
Para más: https://en.wikipedia.org/wiki/Column-oriented_DBMS
fuente
Información del Producto. Esto puede ayudar. Se trataba de productos destacados en una búsqueda de Google.
http://www.vertica.com/
http://www.paraccel.com/
http://www.asterdata.com/index.php
fuente
kx es otra base de datos en columnas, utilizada por ejemplo en el sector financiero. Sin embargo, la licencia cuesta $ 50K la última vez que verifiqué. Sin optimización necesaria, ningún índice es necesaria, debido kx tiene operadores poderosos (equivalentes MATLAB:
.*
,kron
,bsxfun
, ...).fuente