2010-01-25 21 views
77

He estado trabajando con el almacenamiento desde hace un tiempo.¿Qué es una base de datos en columnas?

Estoy intrigado por las bases de datos Columnar y la velocidad que tienen que ofrecer para la recuperación de datos.

He varias partes pregunta:

  • ¿Cómo funcionan las bases de datos columnares?
  • ¿Cómo difieren de las bases de datos relacionales?
+0

Además del número reducido de búsquedas mencionadas en las respuestas, algunas implementaciones (por ejemplo, el almacén de columnas del servidor SQL) comprimirán los datos. Esto evita el filtrado de fila, pero también puede mejorar el rendimiento de la consulta. – Pace

Respuesta

41

¿Cómo funcionan las bases de datos columnares?
base de datos en columnas es un concepto más bien una determinada arquitectura / aplicación. En otras palabras, no hay una descripción particular sobre cómo funcionan estas bases de datos; de hecho, varios se basan en DBMS tradicional, orientado a filas, simplemente almacenando la información en tablas con una (o más bien a menudo dos) columnas (y agregando la capa necesaria para acceder a los datos de columna de una manera fácil).

¿Cómo difieren de las bases de datos relacionales? Por lo general, se diferencian de las bases de datos tradicionales (por filas) con respecto a ...

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

... en los casos de uso específicos de DBMSes.
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 tratar de 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í, hay una implementación comercial, gratuita y también de código abierto de bases de datos columnares. Consulte la lista al final de Wikipedia article para empezar.
Tenga en cuenta que varias de estas implementaciones se introdujeron en una necesidad particular (por ejemplo, distribución de datos muy compacta, muy compresible o emulación de matrices de repuesto, etc.) en lugar de proporcionar un DBMS orientado a columnas de uso general per se.

Nota: El comentario sobre la "orientación de propósito único" de varios DBMS columnares no es una crítica de estas implementaciones, sino una indicación adicional de que dicho enfoque para DBMSes se desvía de lo más "natural" (y ciertamente más ampliamente utilizado) para almacenar entidades de registro. Como resultado, este enfoque se utiliza cuando el enfoque orientado a filas no es satisfactorio, y por lo tanto, y tiende a
a) ser designado para un propósito particular b) recibir menos recursos/interés que trabajar 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 es distinto del modelo de DB columna "puro", EAV comparte varias de las características de los DB columnares.

2

Información del producto. Esto puede ayudar. Estos fueron los productos destacados en una búsqueda de Google.

http://www.vertica.com/

http://www.paraccel.com/

http://www.asterdata.com/index.php

+0

Una cosa a tener en cuenta sobre Vertica es que he visto una referencia en la web de que el costo de la licencia es de $ 150k/TB. entonces no es barato – Mark

+0

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

+1

Amazon ofrece su súper rápido almacenamiento de datos RedShift por debajo de $ 1,000 por terabyte por año si no está particularmente buscando el Columnar uno. – mevdiven

195

Cómo hacer bases de datos columnares trabajo? El concepto de definición de una tienda de columnas es que los valores de una tabla se almacenan contiguamente por columna. Por lo tanto la tabla de proveedores clásico de proveedor y partes de base de datos de CJ Fecha:

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 almacena en el disco o en la memoria algo como:

S1S2S3S4S5;2010302030;LondonParisParisLondonAthens;SmithJonesBlakeClarkAdams 

Esto está en contraste con una rowstore tradicional que almacenaría la los datos de la misma familia:

S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams 

de este simple concepto de todos los flujos de las diferencias fundamentales en el rendimiento, para mejor o peor, entre una columna de la tienda y en una fila-sto re. Por ejemplo, un almacén de columnas se destacará al realizar agregaciones como totales y promedios, pero insertar una sola fila puede ser costoso, mientras que el inverso se aplica a las tiendas en fila. Esto debería ser evidente en el diagrama anterior.

¿Cómo difieren de las bases de datos relacionales? Una base de datos de relaciones es un concepto lógico. Una base de datos columnar, o column-store, es un concepto físico. Por lo tanto, los dos términos no son comparables de ninguna manera significativa. Los DMBS orientados a columnas pueden ser relacionales o no, del mismo modo que los DBMS orientados a filas pueden adherirse más o menos a principios relacionales.

+15

Esto parece mejor que la respuesta aceptada, pero no soy un experto. Upvote. –

+2

Las bases de datos orientadas a columnas se usan cuando las agregaciones en columnas específicas se consultan como informe de ventas. El punto aquí es si usa una base de datos orientada a filas, entonces todas las filas (bloques) necesitan traerse a la memoria principal, lo que incluye mucho tiempo de búsqueda del disco para traer todo el bloque del disco al RAM, incluso si solo está interesado en la columna que te ayuda a proporcionar un informe de ventas. Mientras que en el esquema orientado a columna, las columnas se almacenan contiguamente en los bloques, lo que hace que las búsquedas sean menores 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

2

Además, los DB Columnar tienen una afinidad incorporada para la compresión de datos, y el proceso de carga es único. Aquí hay un article que escribí en 2008 que explica un poco más.

Puede que también esté interesado en un nuevo informe de Carl Olofson de IDC sobre la tecnología DBMS de 3ª generación. Discute columnar, et al. Si no es un 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, uno de los comentarios por encima de las listas asterdata pero no creo que son columnar.)

+0

Puede obtener el informe de IDC en: http://paraccel.com/press/3rd_generation_database_technology/ –

+0

Aster Data es una base de datos relacional MPP y tiene soporte nativo para tablas columnares. – topchef

+0

@kimstanick, URL paraccel está muerto. – user674669

4

yo diría que el mejor candidato a entender acerca de las bases de datos en columnas es comprobar HBase (Apache Hbase). Puede verificar el código y explorar más para conocer la implementación.

1

kx es otra base de datos columnar, por ejemplo, utilizada en el sector financiero. Sin embargo, la licencia fue de $ 50K la última vez que revisé. No se necesita optimización, no se necesita índice, porque kx tiene operadores potentes (equivalentes de matlab: .*, kron, bsxfun, ...).

1

Para entender qué es una 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. Las bases de datos orientadas a filas son adecuadas para 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 al almacenar todos los valores de una columna juntos. Dos bases de datos orientadas a columnas ampliamente utilizadas son Apache Hbase y Google BigTable (utilizadas por Google para su búsqueda, 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

0

columnares bases de datos son muy utilizados en análisis y BI. De acuerdo con Wiki. Al almacenar datos en columnas en lugar de filas, la base de datos puede acceder con mayor precisión a los datos que necesita para responder a una consulta en lugar de escanear y descartar datos no deseados en filas. Son adecuados para cargas de trabajo similares a OLAP para el almacenamiento de datos. De acuerdo con el article empírico, las organizaciones a menudo usan una base de datos orientada a filas que se ejecuta en el back-end y una base de datos en columnas para las necesidades de BI front-end.

Cuestiones relacionadas