Breve reseña histórica
Creado para otorgar alta disponibilidad de grandes volúmenes de información. Su versión original fue desarrollada por ex-empleados de las compañías Amazon y Microsoft para Facebook. En el 2008 fue liberado como proyecto open source en Google Code. En el 2009 pasó a ser un proyecto Apache incubator y en el 2010 se convirtió en un proyecto top-Level.
Descripción
Cassandra es un sistema de almacenamiento de datos escrito en Java basado en la tecnología BigTable implementada por Google y la estructura de Dynamo de Amazon, siendo así una base de datos NoSQL, es decir, que su sistema de manejo de información difiere del modelo clásico de gestión de bases de datos relacionales (SGBDR) o en inglés (RDBMS).
Características
- Distribuido
Cassandra es un sistema distribuido, lo que significa que su núcleo opera a través de diferentes máquinas (a menudo llamadas nodos), mientras los sus usuarios lo perciben como una sola entidad.
- Descentralizado
Significa que cada uno de los servidores posee exactamente la misma información y cumple las mismas funciones que los demás, es diferente al modelo administrador/esclavos en el cual si el administrador deja de funcionar toda la base de datos esta vulnerable a cualquier fallo, además, Cassandra implementa un protocolo P2P y presenta una lista de todas las máquinas, tanto las que están activas, como las que no.
- No posee punto de fallo
Como ya se dijo, al ser descentralizado todas las máquinas en un clúster (grupo de nodos o máquinas) poseen la misma información, lo que se denomina un servidor simétrico, y de esta manera si alguna de éstas falla, la información puede ser obtenida de otra sin problema.
- Fácil configuración
Al ser todos los nodos idénticos no difiere la configuración de uno de ellos a otro, de esta manera configurar una maquina o más es exactamente el mismo proceso.
- Escalabilidad
Significa que el sistema es capaz de soportar un número creciente de peticiones sin afectar en gran medida su rendimiento o funcionamiento. Podemos resaltar acá dos tipos de escalabilidad, la escalabilidad vertical, referente al hardware, es decir, adicionar o mejorar las características de las máquinas existentes en el clúster, y la escalabillidad horizontal, que consiste en aumentar el número de nodos dentro del clúster, para esto Cassandra es capaz de sincronizar sus datos con las nuevas máquinas que se incorporan al sistema, a lo que se le denomina también escalabilidad flexible, ya que está en la capacidad de escalar o des escalar según sea necesario.
- Alta disponibilidad
La disponibilidad de un sistema esta directamente ligada a su capacidad para cumplir peticiones. El sistema utilizado por Cassandra lo hace altamente disponible, ya que si se presentara algún fallo en alguno de los nodos, éste se puede corregir sin tener que detener el sistema.
- Sistema orientado a columnas
Como se mencionó antes Cassandra no es un sistema de datos relacional, en cambio utiliza un sistema de almacenamiento multidimensional, lo que quiere decir que, no es necesario que todos los registros posean el mismo número de columnas y cada registro tiene una llave única de acceso a los datos.
Cassandra almacena la información en tablas mutidimensionales de hash, esto es una gran ventaja ya que no se hace necesario definir con anterioridad la estructura de la tabla y ésta puede modificarse incluso después de estar en uso.
- Esquema libre
La estructura usada por Cassandra hace necesaria la definición de una característica denominada espacio clave (keyspace), cuyo contenido son familias de columnas (family columns). El keyspace se crea para ubicar family columns con configuración o características similares, mientras las family columns contienen información relacionada.
- Alto desempeño
Cassandra fue diseñado para proporcionar un alto desempeño aprovechando al máximo el rendimiento de las máquinas que poseen procesadores de núcleos múltiples, y además muchas de estas máquinas distribuidas en diferentes almacenes de datos. Mientras más máquians sean incorporadas a un sistema, mejor será el rendimiento y se aprovecharán mejor las características de Cassandra.
- Escalabilidad
Significa que el sistema es capaz de soportar un número creciente de peticiones sin afectar en gran medida su rendimiento o funcionamiento. Podemos resaltar acá dos tipos de escalabilidad, la escalabilidad vertical, referente al hardware, es decir, adicionar o mejorar las características de las máquinas existentes en el clúster, y la escalabillidad horizontal, que consiste en aumentar el número de nodos dentro del clúster, para esto Cassandra es capaz de sincronizar sus datos con las nuevas máquinas que se incorporan al sistema, a lo que se le denomina también escalabilidad flexible, ya que está en la capacidad de escalar o des escalar según sea necesario.
- Alta disponibilidad
La disponibilidad de un sistema esta directamente ligada a su capacidad para cumplir peticiones. El sistema utilizado por Cassandra lo hace altamente disponible, ya que si se presentara algún fallo en alguno de los nodos, éste se puede corregir sin tener que detener el sistema.
- Sistema orientado a columnas
Como se mencionó antes Cassandra no es un sistema de datos relacional, en cambio utiliza un sistema de almacenamiento multidimensional, lo que quiere decir que, no es necesario que todos los registros posean el mismo número de columnas y cada registro tiene una llave única de acceso a los datos.
- Esquema libre
La estructura usada por Cassandra hace necesaria la definición de una característica denominada espacio clave (keyspace), cuyo contenido son familias de columnas (family columns). El keyspace se crea para ubicar family columns con configuración o características similares, mientras las family columns contienen información relacionada.
- Alto desempeño
Cassandra fue diseñado para proporcionar un alto desempeño aprovechando al máximo el rendimiento de las máquinas que poseen procesadores de núcleos múltiples, y además muchas de estas máquinas distribuidas en diferentes almacenes de datos. Mientras más máquians sean incorporadas a un sistema, mejor será el rendimiento y se aprovecharán mejor las características de Cassandra.
No hay comentarios:
Publicar un comentario