¿Qué es una base de datos en columnas?

98

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?
Raj Más
fuente
1
Además del número reducido de búsquedas mencionado en las respuestas, algunas implementaciones (por ejemplo, el almacén de columnas del servidor SQL) comprimirán los datos. Esto evita el filtrado de filas pero, además, puede mejorar el rendimiento de las consultas.
Ritmo

Respuestas:

49

¿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 ...

  • actuación...
  • requisitos de almacenamiento ...
  • facilidad de modificación del esquema ...

... 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.

mjv
fuente
253

¿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:

SNO  STATUS CITY    SNAME
---  ------ ----    -----
S1       20 London  Smith
S2       10 Paris   Jones
S3       30 Paris   Blake
S4       20 London  Clark
S5       30 Athens  Adams

se almacenaría en el disco o en la memoria algo como:

S1S2S3S4S5;2010302030;LondonParisParisLondonAthens;SmithJonesBlakeClarkAdams 

Esto contrasta con un almacén de filas tradicional que almacenaría los datos de esta manera:

S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams

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.

Paul Mansour
fuente
22
Esto parece mejor que la respuesta aceptada, pero no soy un experto. Voto a favor.
Rob Grant
2
Las bases de datos orientadas a columnas se utilizan cuando se consultan agregaciones en columnas específicas como un informe de ventas. El punto aquí es que si usa una base de datos orientada a filas, entonces todas las filas (bloques) deben llevarse a la memoria principal, lo que incluye mucho tiempo de búsqueda del disco para llevar todos los bloques del disco a la memoria RAM, incluso si solo está interesado en la columna lo que le ayuda a proporcionar un informe de ventas. Mientras que en el esquema orientado a columnas, las columnas se almacenan contiguamente en los bloques, lo que reduce las búsquedas debido a la menor cantidad de bloques. Entonces, las bases de datos de columnas se usan para OLAP, mientras que las orientadas a filas se usan para cosas OLTP.
bharatj
4

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.

hari_sree
fuente
2

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).

kim stanick
fuente
Puede obtener el informe de IDC en: paraccel.com/press/3rd_generation_database_technology
kim stanick
Aster Data es una base de datos relacional MPP y tiene soporte nativo para tablas en columnas.
topchef
@kimstanick, la URL de paraccel está muerta.
user674669
2

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

Razan Paul
fuente
1

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

S.Lott
fuente
Una cosa a tener en cuenta sobre Vertica es que he visto una referencia en la web al costo de la licencia de $ 150k / TB de datos almacenados. por lo que no es barato.
Mark
@Mark: El costo no es el problema. La información es el problema. Si el OP quiere información, los proveedores suelen ser la mejor fuente posible.
S.Lott
1
Amazon ofrece su almacenamiento de datos RedShift súper rápido por debajo de $ 1,000 por terabyte por año si no está buscando particularmente Columnar.
mevdiven
1

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, ...).

usuario2987828
fuente