Apache Cassandra

Cassandra es una base de datos masterless totalmente distribuida, que ofrece una escalabilidad superior y tolerancia a fallas para bases de datos tradicionales de un solo maestro. En comparación con otras bases de datos populares distribuidas como Riak, HBase y Voldemort, Cassandra ofrece una interfaz única, robusta y expresiva para modelar y consultar datos.

Que es Big Data

Big data es un término relativamente nuevo que se ha ido acumulando en los últimos años. Big data es un término utilizado para los conjuntos de datos que son relativamente grandes para ser almacenados en un sistema de base de datos tradicional o procesados por tuberías de procesamiento de datos tradicionales. Esta información podría ser estructurada, semiestructurada o no estructurada datos. Los conjuntos de datos que pertenecen a esta categoría generalmente se escalan a terabytes o petabytes de datos.Big Data involucra las siguientes características:
  • Velocidad:los datos se mueven a una velocidad sin precedentes y deben abordarse de manera oportuna.
  • Volumen:las organizaciones recopilan datos de una variedad de fuentes, incluidas transacciones comerciales, sociales medios e información de datos de sensor o de máquina a máquina. Esto podría involucrar terabytes a petabytes de datos. En el pasado, almacenarlo habría sido un problema, pero las nuevas tecnologías se han aliviado
  • Variedad: los datos vienen en todo tipo de formatos, desde datos estructurados hasta almacenados en formatos tradicionales. bases de datos a datos no estructurados (blobs) como imágenes, archivos de audio y archivos de texto.
  • Complejidad:los datos de hoy provienen de múltiples fuentes, lo que hace que sea difícil vincular, combinar, limpiar y transformar datos en todos los sistemas. Sin embargo, es necesario conectarse y correlacionar relaciones, jerarquías y enlaces de datos múltiples, o sus datos pueden perder el control rápidamente. Debe poder atravesar múltiples centros de datos, nubes y zonas geográficas.

Escala de salida frente vs arquitectura de escalamiento

Escalar significa agregar más nodos a un sistema, como agregar más servidores a un base de datos distribuida o sistema de archivos. Esto también se conoce como escala horizontal. Ampliar significa agregar más recursos a un solo nodo dentro del sistema, como agregar más CPU, memoria o discos a un servidor. Esto también se conoce como escala vertical.

Clustering

los datos deben distribuirse entre diferentes nodos en un clúster. Los datos deberían ser replicado a través de múltiples nodos para mantener fallas de nodo. Esto ayuda a difundir los datos el clúster y diferentes nodos contienen diferentes subconjuntos de datos. Esto mejora el rendimiento y proporciona tolerancia a fallas.

Un nodo es una instancia de software de base de datos que se ejecuta en un servidor. Múltiples instancias de la misma base de datos podría estar ejecutándose en el mismo servidor.

La escalabilidad horizontal

La escalabilidad horizontal se refiere a la capacidad de expandir la capacidad de almacenamiento y procesamiento de una base de datos agregar más servidores a un clúster de base de datos. La capacidad de almacenamiento de una base de datos de maestro único tradicional es limitado por la capacidad del servidor que aloja la instancia maestra. Si el conjunto de datos supera esta capacidad y un servidor más poderoso no está disponible, el conjunto de datos debe ser compartido entre múltiples independientes instancias de bases de datos que no saben nada el uno del otro. Su aplicación tiene la responsabilidad de saber a qué instancia pertenece un dato dado.

Cassandra, por otro lado, se despliega como un conjunto de instancias que se conocen entre sí. De el punto de vista de la aplicación cliente, el clúster es una sola entidad; la aplicación no necesita saber, ni preocuparse, a qué máquina pertenece un dato. En cambio, los datos se pueden leer o escribir en cualquier instancia en el cluster, referido como un nodo; este nodo reenviará la solicitud a la instancia donde los datos realmente pertenece. El resultado es que las implementaciones de Cassandra tienen una capacidad casi ilimitada para almacenar y procesar datos. Cuando se requiere capacidad adicional, más máquinas simplemente pueden agregarse al clúster. Cuando nuevo máquinas se unen al clúster, Cassandra se encarga de reequilibrar los datos existentes para que cada nodo en el clúster expandido tiene una parte más o menos igual. Además, el rendimiento de un clúster Cassandra es directamente proporcional a la cantidad de nodos dentro del cluster. A medida que sigues agregando instancias, la lectura y el rendimiento de escritura seguirá aumentando linealmente.

Modelado de datos

Cassandra proporciona una sintaxis similar a SQL para interactuar con la base de datos. Cassandra Query Language (CQL) presenta una familiar columna de representación de datos en fila. CQL proporciona una tabla familiar similar a SQL. Definición con columnas y tipos de datos definidos. El esquema es flexible, y se pueden agregar nuevas columnas mientras se utilizan los datos existentes. El modelo de datos no admite características problemáticas en sistemas distribuidos como joins. Además de esto, Cassandra proporciona otras características tales como colecciones para almacenar múltiples artículos en un una sola columna. También le permite definir fácilmente índices secundarios y vistas materializadas para búsquedas rápidas en columnas de clave no primaria.

Instalación de Cassandra