jueves, 28 de junio de 2018

Cassandra una base Row-oriented de esquema flexible



El modelo de datos de Cassandra puede ser definido como Row-oriented o orientado a filas con particiones. En el que los datos se almacenan en tablas hash multidimensionales dispersas. Esto significa que para cualquier fila determinada puede tener una o más columnas, pero no es necesario que cada fila tenga todas las mismas columnas que otras filas (como el modelo relacional).

Particionado significa que cada fila tiene una clave única que hace que sus datos sean accesibles, y las claves se utilizan para distribuir las filas en múltiples almacenes de datos.

En el modelo de almacenamiento relacional, todas las columnas de una tabla se definen de antemano y se asigna espacio para cada columna, ya sea que esté poblada o no. Por el contrario, Cassandra almacena datos en una tabla hash multidimensional y ordenada. Como los datos se almacenan en cada columna, se almacenan como una entrada separada en la tabla hash. Los valores de las columnas se almacenan de acuerdo con un orden de clasificación coherente, omitiendo las columnas que no están rellenas, lo que permite un procesamiento de consulta y almacenamiento más eficiente.

En sus primeras versiones. Cassandra fue fiel al documento original de Bigtable al admitir un modelo de datos "sin esquema" en el que las nuevas columnas se pueden definir dinámicamente. Las bases de datos libres de esquemas, como Bigtable y MongoDB, tienen la ventaja de ser muy extensibles y de gran rendimiento para acceder a grandes cantidades de datos. El mayor inconveniente de las bases de datos sin esquema es la dificultad para determinar el significado y el formato de los datos, lo que limita la capacidad de realizar consultas complejas. Estas desventajas resultaron una barrera para la adopción para muchos, especialmente como proyectos de inicio que se beneficiaron de la flexibilidad inicial madurada en empresas más complejas que involucran a múltiples desarrolladores y administradores.

La solución para esos usuarios fue la introducción del Lenguaje de Consulta de Cassandra (CQL), que proporciona una forma de definir el esquema a través de una sintaxis similar al Lenguaje de Consulta Estructurado (SQL) familiar para aquellos que provienen de un fondo relacional. Inicialmente, se proporcionó CQL como otra interfaz para Cassandra junto con la interfaz libre de esquemas basada en el proyecto Apache Thrift. Durante esta fase de transición, el término "Esquema-opcional" se usó para describir que los modelos de datos podrían definirse por esquema usando CQL, pero también podrían extenderse dinámicamente para agregar nuevas columnas a través de la API . Durante este período, el almacenamiento de datos subyacente continuó basándose en el modelo Bigtable.

Entonces, quizás la mejor manera de describir la postura actual de Cassandra es que admite un "esquema flexible".