Translate

miércoles, 27 de febrero de 2019

Modelo lógico de datos de Apache HBase

Vamos s revisar varios conceptos del modelo logico de datos de hbase. Como sabran Hbase no es una base de datos relacional, pero esta puede ser más flexible y escalable que las bases relacionales.

Hbase provee row keys, concepto que podemos mapear con las primary keys de las bases de datos relacionales. Nosotros podemos trabajar sin grandes operaciones de lectura y escritura, dado que las filas estan divididas en columns families y columnas. Esto soporta escalado vertical y horizontal de las tablas.

Una tabla esta compuesta por filas→ familias de columnas → columnas → celdas

Por lo tanto podemos pensar en una fila como un conjunto no vacio de familias de columnas, la familia de columnas como un conjunto no vacio de columnas y las columnas son estan formadas (made up) por celdas. Y los datos son accedidos por el row key.

Nosotros podemos o debemos consultar por row key más el column family y el nombre de la columna.


A nivel conceptual, las tablas de hbase vistas como un conjunto separado de filas pero a nivel fisico, se guardan conjuntos de columnas que son las familias de columnas.  

A nivel conceptual, una tabla HBase se puede ver como un conjunto disperso de filas, pero en el almacenamiento real, se almacena según una familia de columnas. Al definir una tabla, las columnas se pueden agregar o especificar en la ejecución en una familia de columnas. Debemos decidir el número y el nombre de la familia de columnas en el momento de la reactivación de la tabla, pero las columnas se pueden agregar según sea necesario en cualquier momento mientras se almacenan los datos, y esta es la belleza de la ausencia de esquemas cuando usamos HBase.

Una columna siempre se representa y se accede utilizando el nombre de la familia de columnas como prefijo (columnfamilyname: columnname) para que sepamos a qué familia de columnas se accede. Las columnas que no contienen valores no se almacenan. 

En las versiones anteriores de HBase, no teníamos un concepto de base de datos; sin embargo, existía el concepto de Tabla. La versión más reciente de HBase introduce un concepto llamado espacio de nombres (compatible con HBase 0.96 y versiones posteriores) que agrupa las tablas de forma lógica, lo que brinda una representación más estructurada y organizada, y un almacenamiento de tablas.