Documente Academic
Documente Profesional
Documente Cultură
2017
Contenido
Introducción ........................................................................................................................................ 3
NoSQL .................................................................................................................................................. 3
¿Por qué aparecen los sistemas NoSQL? ............................................................................................ 3
NoSQL frente a bases de datos relacionales ................................................................................... 4
Pero, ¿en qué se diferencian exactamente? ....................................................................................... 4
Consultas Map-Reduce: ...................................................................................................................... 6
Funcion map ........................................................................................................................................ 7
Funcion Reduce ................................................................................................................................... 7
Arquitectura del Map-reduce.............................................................................................................. 8
Combinador (Agregadores locales) ................................................................................................... 10
Tolerancia a Fallos ............................................................................................................................. 10
NoSQL vs SQL: Cuándo utilizar qué tipo de base de datos ............................................................... 11
Que es Cassandra? ............................................................................................................................ 12
Cassandra, la dama de las bases de datos NoSQL..................................................................... 12
Historia y orígenes............................................................................................................................. 13
Particularidades principales .............................................................................................................. 13
Arquitectura ...................................................................................................................................... 14
Replicacion de datos en Cassandra ................................................................................................... 15
Componentes de Cassandra.............................................................................................................. 15
Las operaciones de escritura ............................................................................................................. 16
las operaciones de lectura ................................................................................................................ 16
keyspace ............................................................................................................................................ 16
Familia de columna ........................................................................................................................... 17
Columna ............................................................................................................................................ 18
SuperColumn ..................................................................................................................................... 18
Ejemplo.............................................................................................................................................. 19
Conclusión ......................................................................................................................................... 20
Introducción
Dentro de los nuevos sistemas de almacenamiento que están surgiendo
dentro del universo Big Data, Cassandra es uno de los más interesantes y
reseñables. Cassandra se define como una base de datos NoSQL distribuida y
masivamente escalable, y esta es su mayor virtud desde nuestro punto de
vista, la capacidad de escalar linealmente.
Además, Cassandra introduce conceptos muy interesantes como el soporte
para multi data center o la comunicación peer-to-peer entre sus nodos. En
este artículo vamos a profundizar en estas y otras características que hacen a
Cassandra tan especial.
NoSQL
Pero llegó la web, el software como servicio, los servicios en la nube y las
startups de éxito con millones de usuarios. Y con todo ello llegaron los
problemas de alta escalabilidad. Si bien los modelos relacionales se pueden
adaptar para hacerlos escalar incluso en los entornos más difíciles, sí que es
cierto que, a menudo, se hacen cada vez menos intuitivos a medida que
aumenta la complejidad. Triples y cuádruples JOINs en consultas SQL que
asustan al más pintado nada más verlas, a veces poco eficientes, y sistemas
de almacenamiento de resultados en cachés para acelerar la resolución de las
peticiones y evitar ejecutar cada vez estas pesadas operaciones, son el pan
de cada día en muchos de estos proyectos de software.
Funcion map
Funcion Reduce
La función reduce es aplicada en paralelo para cada grupo, produciendo una
colección de valores para cada dominio:
Reduce(k2, list (v2)) -> list(v3)
Un worker que tenga asignada una tarea específica de map tomará como
entrada la partición que le corresponda. Se dedicará a parsear los pares
(clave, valor) para crear una nueva pareja de salida, tal y como se
específica en su programación. Los pares clave y valor producidos por la
función map se almacenan como buffer en la memoria.
Tolerancia a Fallos
El mecanismo de MapReduce es tolerante a fallos cuando uno de los workers
se ve sometido a un fallo. Como MapReduce se ha diseñado para procesos en
los que se encuentran involucrados grandes tamaños de datos mediante el
empleo de cientos o miles de ordenadores. Aún siendo la probabilidad de
fallo baja, es muy posible que uno (o varios) de los workers quede
desactivado precisamente por fallo de la máquina que le daba soporte. El
"master" periódicamente hace ping a cada worker para comprobar su
estatus.
Si no existe respuesta tras un cierto instante de espera, el master interpreta
que el worker está desactivado. Cualquier tarea map() que ha sido completa
por el worker regresa de inmediato a su estado de espera, y por lo tanto
puede resultar elegible para su asignación en otros workers. De forma
similar, cualquier función map (o reduce) que se encuentre en progreso
durante el fallo, se resetea a estado de reposo pudiendo ser elegida para su
nueva re-asignación.
Las tareas de map completados se vuelven a re-ejecutar ante un fallo debido
en parte a que su salida se almacena en los discos locales de la máquina que
falló, y por lo tanto se consideran inaccesibles. Las tareas reduce completas
no son necesarias volver a ser re-ejecutadas debido a que su salida se ha
almacenado en el sistema global. cuando la tarea de map se ejecuta por
un worker A y luego por un worker B (debido principalmente a un fallo), en
este caso todas las tareas reduce() son notificadas para que eliminen datos
procedentes del worker A y acepten las del worker B. De esta forma la
ejecución de MapReduce es resiliente.
Particularidades principales
Cassandra se ha vuelto tan popular debido a sus excepcionales características
técnicas. A continuación se presentan algunas de las características de
Cassandra:
Escalabilidad elástica - Cassandra es altamente escalable; que permite
añadir más hardware para dar cabida a más clientes y más datos según
el requisito.
Siempre en la arquitectura - Cassandra no tiene ningún punto único de
fallo y es continuamente disponible para aplicaciones críticas de
negocio que no pueden permitirse un fracaso.
Su gran rendimiento lineal de escala - Cassandra es escalable
linealmente, es decir, que aumenta su rendimiento a medida que
aumenta el número de nodos del clúster. Por lo tanto, mantiene un
tiempo de respuesta rápido.
El almacenamiento de datos flexible - Cassandra acomoda a todos los
posibles formatos de datos, incluyendo: estructurada,
semiestructurada, y no estructurados. Puede alojar de forma dinámica
los cambios en sus estructuras de datos de acuerdo a su necesidad.
La distribución de datos fácil - Cassandra proporciona la flexibilidad
para distribuir los datos en las que necesita mediante la replicación de
datos a través de múltiples centros de datos.
Soporte de transacciones - Cassandra admite propiedades como
atomicidad, coherencia, aislamiento y durabilidad (ACID).
Escrituras rápidas - Cassandra fue diseñado para ejecutarse en
hardware barato de los productos básicos. Se lleva a cabo escrituras
extraordinariamente rápido y puede almacenar cientos de terabytes
de datos, sin sacrificar la eficiencia de la lectura.
Arquitectura
El objetivo del diseño de Cassandra es manejar grandes cargas de trabajo de
datos a través de múltiples nodos sin ningún punto único de fallo. Cassandra
tiene sistema distribuido de igual a igual a través de sus nodos, y los datos se
distribuyen entre todos los nodos de un clúster.
Todos los nodos de un clúster juegan el mismo papel. Cada nodo es
independiente y al mismo tiempo interconectados a otros nodos.
Cada nodo de un clúster puede aceptar solicitudes de lectura y
escritura, independientemente de donde los datos se encuentra
realmente en el clúster.
Cuando un nodo se cae, las peticiones de lectura / escritura se pueden
servir de otros nodos de la red.
Replicacion de datos en Cassandra
En Cassandra, uno o más de los nodos en un acto clúster como réplicas para
una determinada pieza de datos. Si se detecta que algunos de los nodos
respondieron con un valor fuera de fecha, Cassandra devolverá el valor más
reciente al cliente. Después de devolver el valor más reciente, Cassandra
lleva a cabo una reparación de lectura en el fondo para actualizar los valores
rancios.
La siguiente figura muestra una vista esquemática de cómo Cassandra utiliza
la replicación de datos entre los nodos de un clúster para garantizar ningún
punto único de fallo.
Componentes de Cassandra
Los componentes clave de Cassandra son los siguientes -
Nodo - Es el lugar donde se almacenan los datos.
Centro de datos - Se trata de una colección de nodos relacionados.
Cluster - Un clúster es un componente que contiene uno o más centros
de datos.
Comprometerse registro - El registro de confirmación es un mecanismo
de recuperación de accidente en Cassandra. Cada operación de
escritura se escribe en el registro de confirmación.
Mem-mesa - Un mem-tabla es una estructura de datos residente en
memoria. Después de cometer registro, los datos se escriben en el
mem-mesa. A veces, para una familia de una sola columna, habrá
múltiples mem-mesas.
SSTable - Es un archivo de disco en el que los datos se añade desde la
mem-mesa cuando su contenido alcanzan un valor de umbral.
Filtro Bloom - Estos no son más que rápidos, no deterministas,
algoritmos para comprobar que es un elemento es un miembro de un
conjunto. Es un tipo especial de memoria caché. filtros Bloom se
accede después de cada consulta.
keyspace
Espacio de claves es el contenedor más externo de datos en Cassandra. Los
atributos básicos de un espacio de claves en Cassandra son -
Factor de replicación - Es el número de máquinas del clúster que
recibirán copias de los mismos datos.
Estrategia de colocación de réplica - No es más que la estrategia de
colocar réplicas en el anillo. Tenemos estrategias como la simple
estrategia (estrategia de cremallera en cuenta), la estrategia de la
topología de red de edad (estrategia de cremallera cuenta), y
la estrategia de la topología de red (estrategia de centro de datos
compartidos).
Familias de columna - espacio de claves es un contenedor para una
lista de una o más familias de columna. Una familia de columna, a su
vez, es un contenedor de una colección de filas. Cada fila contiene
columnas ordenadas. familias de las columnas representan la
estructura de los datos. Cada espacio de claves tiene al menos uno y a
menudo muchas familias de columna.
La sintaxis de la creación de un espacio de claves es el siguiente -
CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
La siguiente ilustración muestra una vista esquemática de un espacio
de claves.
Familia de columna
Una familia de columna es un contenedor para una colección ordenada de
filas. Cada fila, a su vez, es una colección ordenada de columnas. En la
siguiente tabla se enumeran los puntos que diferencian a una familia
columna de una tabla de bases de datos relacionales.
Columna
Una columna es la estructura de datos básica de Cassandra con tres valores,
a saber tecla o la columna nombre, valor y una marca de tiempo. A
continuación se realiza la estructura de una columna.
SuperColumn
Una columna de Super es una columna especial, por lo tanto, también es un
par clave-valor. Pero una columna súper almacena un mapa de sub-
columnas.
En general, las familias de las columnas se almacenan en el disco en archivos
individuales. Por lo tanto, para optimizar el rendimiento, es importante tener
columnas que es probable para consultar juntos en la misma familia de la
columna, y una columna de súper puede ser útil.
Ejemplo
Creación de un nuevo KeySpace: