SlideShare une entreprise Scribd logo
1  sur  12
Apache
¿Qué es?
Es un gestor de base de datos no relacional (NOSQL), multiplataforma de código
abierto escrita y desarrollado por Apache Software Foundation.
De acuerdo a su sitio web http://cassandra.apache.org/, la configuración de Cassandra
involucra a mas de 300 TB de datos sobre mas de 400 maquinas lo que lo hace hoy por
hoy uno de los productos mas sólidos y populares del mercado
¿Cómo nace Cassandra?
•

Cassandra se originó mediante un proyecto del equipo de ingenieros de Facebook
que posteriormente han abierto con licencia Open source y colocado dentro de la
incubadora de los proyectos de Apache. Lo mismo ha hecho Google, pero a
diferencia de Facebook no ha sido tan considerado con la comunidad de
desarrolladores que sustenta el software libre. No ha liberado su implementación,
únicamente ha dado a conocer su modelo de datos: BigTable.
¿ Que es BigTable?
Google creó BigTable porque los sistemas de bases de datos
tradicionales no tenían ni tienen, la capacidad de crear
sistemas lo suficientemente grandes. Además, estos
sistemas de bases de datos relacionales, como SQL
Server, Oracle o MySQL fueron pensados y diseñados para
que se ejecutasen en un solo servidor con mucha potencia.
Por ello, no encajarían en las estructuras distribuidas den
miles de servidores.
Google BigTable es un mecanismo no relacional, un
almacenamiento de datos
distribuida y multidimensional basado en las tecnologías de almacenamiento
de propiedad de Google para la mayoría de aplicaciones en línea y back-end
de la empresa / productos. Proporciona arquitectura de datos escalable para
infraestructuras de bases de datos muy grandes.
BigTable se utiliza principalmente en los productos de propiedad de Google,
aunque algunos disponible en Internet en el Google App Engine y
aplicaciones de otros fabricantes de bases de datos.
- Modelo de datos Cuando nos hablan de base de datos lo primero que se nos viene a la mente son
definiciones como “tablas”, “claves primarias”, “claves foráneas”, “relaciones”, etc.
Cuando tratamos de pasar de un modelo entidad - relación al modelo relacional,
pensamos en normalización, en evitar duplicidad de datos, etc. Pero como lo
demuestra a través de la historia no todas las aplicaciones tienen la mismas
necesidades. Y es que existe un teorema (CAP Teorema de Brewer) que explica
que no podemos tener todo (Consistencia, Alta disponibilidad y Tolerancia a fallos)
y que hemos de elegir dos. Y no todas las aplicaciones tienen las mismas
necesidades. En algunos casos, nuestras aplicaciones necesitan almacenar gran
cantidad de información que ha de ser accedida de manera casi instántanea y
estar disponible 24x7. En este caso la forma de plantearse el modelo de datos es
diferente. En un modelo relacional típico, uno crea un esquema de datos
normalizado que permite solicitar cualquier consulta y añade índices a las tablas
que permitan acelerar dichas consultas. En este nuevo esquema de datos, uno ha
de plantearse primero que consultas va a realizar y crea el esquema en base a
conseguir el máximo rendimiento en los accesos a esa información y si es
necesario duplicar los datos para conseguir mejor rendimiento. Se podría decir
que casi crea un "mapa" de datos apropiado para cada consulta que se vaya a
realizar.
Arquitectura Cassandra
Después de examinar el modelo de datos de Cassandra, vamos a volver a su arquitectura
para comprender algunas de sus fortalezas y debilidades desde el punto de vista de sistemas
distribuidos.
La Figura muestra la arquitectura de un clúster de Cassandra. La primera observación
es que Cassandra es un sistema distribuido. Cassandra se compone de varios nodos, y
distribuye los datos entre los nodos (o fragmentos de ellas, en la terminología de
base de datos).
En términos simples, Cassandra utiliza un algoritmo hash para calcular el hash de las claves
de cada elemento de datos almacenado en Cassandra (por ejemplo, el nombre de la
columna Id. de fila). El rango de hash o todos los posibles valores de hash (también
conocido como espacio de claves) se divide entre los nodos en el cluster
Cassandra. Entonces Cassandra asigna a cada elemento de datos en el nodo y el nodo se
encarga de almacenar y gestionar el elemento de datos. El papel de "Cassandra - Un
sistema de almacenamiento estructurado descentralizada.
Posibles sorpresas con Cassandra
Tenga en cuenta estas diferencias cuando se pasa de una base de datos relacional para
Cassandra.

•
•
•
•

No hay transacciones, sin uniones
No hay claves foráneas y claves son inmutables
Keys tienen que ser únicos
La búsqueda se complica

Solo como algunas menciones.
Terminología de Cassandra
Column. Es la unidad mas básica en el modelo de datos de
Cassandra. Una column es un triplete de un key (un nombre) un value
(un valor) y un timestamp. Los valores son todos suministrados por el
cliente. El tipo de dato del key y el value son matrices de bytes de Java,
el tipo de dato del timestamp es un long primitive.
 column son inmutables para evitar problemas de multithreading.
Las
 column se organizan dentro de las columns families.
Las
 column se ordenan por un tipo, que pueden ser uno de los
Las
siguientes:

AsciiType

BytesType

LongType

TimeUUIDType

UTF8Type

SuperColumn. Es una column cuyos values son una o más columns,
que en este contexto se llamaran subcolumns. Las subcolumns están
ordenadas, y el numero de columnas que se puede definir es ilimitada.
Las Super columns, a diferencias de las columns, no tienen un
timestamp definido.

Column Family. Es mas o menos análogo a una tabla en un modelo
relacional. Se trata de un contenedor para una colección ordenada de
columns. Cada column family se almacena en un archivo separado

Keyspace. Es el contenedor para las column family. Es mas o menos
análogo a una base de datos en un modelo relacional, usado en
Cassandra para separar aplicaciones. Un keyspace es una colección
ordenada de columns family.

Clúster. Conjunto de máquinas que dan soporte a Cassandra y son
vistas por los clientes como una única máquina.
¿Porque apostar por Cassandra?
Cassandra se basa en gran medida de BigTable (modelo de datos) y Dynamo
(arquitectura), dos de las más conocidas y potentes bases de datos actuales. Esto por
sí solo puede ser suficiente para considerarlo, entre otras cosas como:
• Orientada a columnas.
• Esta hecha en java.
• Permite modificar la consistencia de los datos.
• Se puede hacer uso de CQL(Cassandra Query Language)
• Bajo una licencia Apache
• Es mantenida por la organización Apache.
• La usan grandes organizaciones como Facebook o Twitter.
• Tiene herramientas para administrar los nodos de forma gráfica.
• Es fácil de instalar en un principio.
• Solución en cluster enfocada a la escalabilidad.
• Tolerancia a fallos, cualquier nodo del cluster puede ser fácilmente sustituido.
• Descentralización de datos.
• Una comparación en tiempos de lectura y escritura de cientos de veces inferior, en
pruebas realizadas con un alto volumen de datos.
• Sencillo modelo de datos similar a una hash table.
Comparación de las
implementaciones de consulta
Clientes/APIs
Cassandra tiene clientes para diferentes tecnologías

Python

Java

Node.js

Clojure

.NET

Ruby

PHP

Perl

Go

Haskell

C++
 el caso de Java una alternativa interesante es Kundera, basada
En
en el paradigma JPA 2.0.

Contenu connexe

Tendances

El modelo de entidad relación (e r)
El modelo de entidad relación (e r)El modelo de entidad relación (e r)
El modelo de entidad relación (e r)YENZU
 
Tecnicas matriz de trazabilidad
Tecnicas matriz de trazabilidadTecnicas matriz de trazabilidad
Tecnicas matriz de trazabilidadGiovani Ramirez
 
descarga e instalación de cassandra nosql
descarga e instalación de cassandra nosqldescarga e instalación de cassandra nosql
descarga e instalación de cassandra nosqlBriian Villarroel
 
Implementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlImplementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlPipe Muñoz
 
mongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y ComponentesmongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y Componentesomenar
 
NoSQL: Un nuevo paradigma - Apache Cassandra
NoSQL: Un nuevo paradigma - Apache CassandraNoSQL: Un nuevo paradigma - Apache Cassandra
NoSQL: Un nuevo paradigma - Apache CassandraWladimir Cabarcas
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentesmartin
 
SGBD de Facebook, Twitter, YouTube, Google y Uber
SGBD de Facebook, Twitter, YouTube, Google y UberSGBD de Facebook, Twitter, YouTube, Google y Uber
SGBD de Facebook, Twitter, YouTube, Google y UberJuan Isaac Valle Arellano
 
Ficheros con organización secuencial indexada
Ficheros con organización secuencial indexadaFicheros con organización secuencial indexada
Ficheros con organización secuencial indexadaFportavella
 
Programación Asíncrona en Node JS
Programación Asíncrona en Node JSProgramación Asíncrona en Node JS
Programación Asíncrona en Node JSJavier Vélez Reyes
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
Ventajas y desventajas de los modelos de bd
Ventajas y desventajas de los modelos de bdVentajas y desventajas de los modelos de bd
Ventajas y desventajas de los modelos de bdIrene Lorza
 
NoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesNoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesAndrés Londoño
 

Tendances (20)

Informe cassandra
Informe cassandraInforme cassandra
Informe cassandra
 
El modelo de entidad relación (e r)
El modelo de entidad relación (e r)El modelo de entidad relación (e r)
El modelo de entidad relación (e r)
 
1. Modelo de Datos
1. Modelo de Datos1. Modelo de Datos
1. Modelo de Datos
 
Tecnicas matriz de trazabilidad
Tecnicas matriz de trazabilidadTecnicas matriz de trazabilidad
Tecnicas matriz de trazabilidad
 
Objetivos de las bases de datos
Objetivos de las bases de datosObjetivos de las bases de datos
Objetivos de las bases de datos
 
descarga e instalación de cassandra nosql
descarga e instalación de cassandra nosqldescarga e instalación de cassandra nosql
descarga e instalación de cassandra nosql
 
Implementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlImplementacion de bases de datos en mysql
Implementacion de bases de datos en mysql
 
colecciones en java
colecciones en javacolecciones en java
colecciones en java
 
mongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y ComponentesmongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y Componentes
 
NoSQL: Un nuevo paradigma - Apache Cassandra
NoSQL: Un nuevo paradigma - Apache CassandraNoSQL: Un nuevo paradigma - Apache Cassandra
NoSQL: Un nuevo paradigma - Apache Cassandra
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentes
 
SGBD de Facebook, Twitter, YouTube, Google y Uber
SGBD de Facebook, Twitter, YouTube, Google y UberSGBD de Facebook, Twitter, YouTube, Google y Uber
SGBD de Facebook, Twitter, YouTube, Google y Uber
 
Ado net
Ado netAdo net
Ado net
 
Ficheros con organización secuencial indexada
Ficheros con organización secuencial indexadaFicheros con organización secuencial indexada
Ficheros con organización secuencial indexada
 
Base de datos
Base de datosBase de datos
Base de datos
 
Programación Asíncrona en Node JS
Programación Asíncrona en Node JSProgramación Asíncrona en Node JS
Programación Asíncrona en Node JS
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Ventajas y desventajas de los modelos de bd
Ventajas y desventajas de los modelos de bdVentajas y desventajas de los modelos de bd
Ventajas y desventajas de los modelos de bd
 
NoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesNoSQL bases de datos no relacionales
NoSQL bases de datos no relacionales
 
Taller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL proceduralTaller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL procedural
 

En vedette (9)

Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4jBases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
 
Manual apache cassandra y comandos en la shell
Manual apache cassandra y comandos en la shellManual apache cassandra y comandos en la shell
Manual apache cassandra y comandos en la shell
 
Actividad 4 presentacion escobar
Actividad 4 presentacion escobarActividad 4 presentacion escobar
Actividad 4 presentacion escobar
 
Big table por Matias tesoriero
Big table por Matias tesorieroBig table por Matias tesoriero
Big table por Matias tesoriero
 
Apache Cassandra en SmartPolitech
Apache Cassandra en SmartPolitech Apache Cassandra en SmartPolitech
Apache Cassandra en SmartPolitech
 
Base de datos
Base de datosBase de datos
Base de datos
 
Redis: servidor de estructuras de datos
Redis: servidor de estructuras de datosRedis: servidor de estructuras de datos
Redis: servidor de estructuras de datos
 
Dynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and ComparisonDynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and Comparison
 
Arquitectura fisica y logica
Arquitectura fisica y logicaArquitectura fisica y logica
Arquitectura fisica y logica
 

Similaire à Apache cassandra (20)

Big data y las apis (big data spain)
Big data y las apis (big data spain)Big data y las apis (big data spain)
Big data y las apis (big data spain)
 
El mundo Big Data y las APIs
El mundo Big Data y las APIsEl mundo Big Data y las APIs
El mundo Big Data y las APIs
 
Nosql
NosqlNosql
Nosql
 
Actividad 4
Actividad 4Actividad 4
Actividad 4
 
Base de datos ryjt
Base de datos ryjtBase de datos ryjt
Base de datos ryjt
 
NoSql introducción -Innova4j
NoSql introducción -Innova4jNoSql introducción -Innova4j
NoSql introducción -Innova4j
 
Base de datos
Base de datosBase de datos
Base de datos
 
Apache Cassandra - Base de datos
Apache Cassandra - Base de datosApache Cassandra - Base de datos
Apache Cassandra - Base de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Cassandra trabajo2 tv eq5
Cassandra trabajo2 tv eq5Cassandra trabajo2 tv eq5
Cassandra trabajo2 tv eq5
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
BASES DE DATOS
BASES DE DATOSBASES DE DATOS
BASES DE DATOS
 
Presentacion de power point
Presentacion de power pointPresentacion de power point
Presentacion de power point
 
Presentacion de power point
Presentacion de power pointPresentacion de power point
Presentacion de power point
 
Base de datos
Base de datosBase de datos
Base de datos
 
Diaposotivas apache-cassandra
Diaposotivas apache-cassandraDiaposotivas apache-cassandra
Diaposotivas apache-cassandra
 

Apache cassandra

  • 1. Apache ¿Qué es? Es un gestor de base de datos no relacional (NOSQL), multiplataforma de código abierto escrita y desarrollado por Apache Software Foundation. De acuerdo a su sitio web http://cassandra.apache.org/, la configuración de Cassandra involucra a mas de 300 TB de datos sobre mas de 400 maquinas lo que lo hace hoy por hoy uno de los productos mas sólidos y populares del mercado
  • 2. ¿Cómo nace Cassandra? • Cassandra se originó mediante un proyecto del equipo de ingenieros de Facebook que posteriormente han abierto con licencia Open source y colocado dentro de la incubadora de los proyectos de Apache. Lo mismo ha hecho Google, pero a diferencia de Facebook no ha sido tan considerado con la comunidad de desarrolladores que sustenta el software libre. No ha liberado su implementación, únicamente ha dado a conocer su modelo de datos: BigTable.
  • 3. ¿ Que es BigTable? Google creó BigTable porque los sistemas de bases de datos tradicionales no tenían ni tienen, la capacidad de crear sistemas lo suficientemente grandes. Además, estos sistemas de bases de datos relacionales, como SQL Server, Oracle o MySQL fueron pensados y diseñados para que se ejecutasen en un solo servidor con mucha potencia. Por ello, no encajarían en las estructuras distribuidas den miles de servidores. Google BigTable es un mecanismo no relacional, un almacenamiento de datos distribuida y multidimensional basado en las tecnologías de almacenamiento de propiedad de Google para la mayoría de aplicaciones en línea y back-end de la empresa / productos. Proporciona arquitectura de datos escalable para infraestructuras de bases de datos muy grandes. BigTable se utiliza principalmente en los productos de propiedad de Google, aunque algunos disponible en Internet en el Google App Engine y aplicaciones de otros fabricantes de bases de datos.
  • 4. - Modelo de datos Cuando nos hablan de base de datos lo primero que se nos viene a la mente son definiciones como “tablas”, “claves primarias”, “claves foráneas”, “relaciones”, etc. Cuando tratamos de pasar de un modelo entidad - relación al modelo relacional, pensamos en normalización, en evitar duplicidad de datos, etc. Pero como lo demuestra a través de la historia no todas las aplicaciones tienen la mismas necesidades. Y es que existe un teorema (CAP Teorema de Brewer) que explica que no podemos tener todo (Consistencia, Alta disponibilidad y Tolerancia a fallos) y que hemos de elegir dos. Y no todas las aplicaciones tienen las mismas necesidades. En algunos casos, nuestras aplicaciones necesitan almacenar gran cantidad de información que ha de ser accedida de manera casi instántanea y estar disponible 24x7. En este caso la forma de plantearse el modelo de datos es diferente. En un modelo relacional típico, uno crea un esquema de datos normalizado que permite solicitar cualquier consulta y añade índices a las tablas que permitan acelerar dichas consultas. En este nuevo esquema de datos, uno ha de plantearse primero que consultas va a realizar y crea el esquema en base a conseguir el máximo rendimiento en los accesos a esa información y si es necesario duplicar los datos para conseguir mejor rendimiento. Se podría decir que casi crea un "mapa" de datos apropiado para cada consulta que se vaya a realizar.
  • 5.
  • 6. Arquitectura Cassandra Después de examinar el modelo de datos de Cassandra, vamos a volver a su arquitectura para comprender algunas de sus fortalezas y debilidades desde el punto de vista de sistemas distribuidos. La Figura muestra la arquitectura de un clúster de Cassandra. La primera observación es que Cassandra es un sistema distribuido. Cassandra se compone de varios nodos, y distribuye los datos entre los nodos (o fragmentos de ellas, en la terminología de base de datos).
  • 7. En términos simples, Cassandra utiliza un algoritmo hash para calcular el hash de las claves de cada elemento de datos almacenado en Cassandra (por ejemplo, el nombre de la columna Id. de fila). El rango de hash o todos los posibles valores de hash (también conocido como espacio de claves) se divide entre los nodos en el cluster Cassandra. Entonces Cassandra asigna a cada elemento de datos en el nodo y el nodo se encarga de almacenar y gestionar el elemento de datos. El papel de "Cassandra - Un sistema de almacenamiento estructurado descentralizada. Posibles sorpresas con Cassandra Tenga en cuenta estas diferencias cuando se pasa de una base de datos relacional para Cassandra. • • • • No hay transacciones, sin uniones No hay claves foráneas y claves son inmutables Keys tienen que ser únicos La búsqueda se complica Solo como algunas menciones.
  • 8. Terminología de Cassandra Column. Es la unidad mas básica en el modelo de datos de Cassandra. Una column es un triplete de un key (un nombre) un value (un valor) y un timestamp. Los valores son todos suministrados por el cliente. El tipo de dato del key y el value son matrices de bytes de Java, el tipo de dato del timestamp es un long primitive.  column son inmutables para evitar problemas de multithreading. Las  column se organizan dentro de las columns families. Las  column se ordenan por un tipo, que pueden ser uno de los Las siguientes:  AsciiType  BytesType  LongType  TimeUUIDType  UTF8Type
  • 9.  SuperColumn. Es una column cuyos values son una o más columns, que en este contexto se llamaran subcolumns. Las subcolumns están ordenadas, y el numero de columnas que se puede definir es ilimitada. Las Super columns, a diferencias de las columns, no tienen un timestamp definido.  Column Family. Es mas o menos análogo a una tabla en un modelo relacional. Se trata de un contenedor para una colección ordenada de columns. Cada column family se almacena en un archivo separado  Keyspace. Es el contenedor para las column family. Es mas o menos análogo a una base de datos en un modelo relacional, usado en Cassandra para separar aplicaciones. Un keyspace es una colección ordenada de columns family.  Clúster. Conjunto de máquinas que dan soporte a Cassandra y son vistas por los clientes como una única máquina.
  • 10. ¿Porque apostar por Cassandra? Cassandra se basa en gran medida de BigTable (modelo de datos) y Dynamo (arquitectura), dos de las más conocidas y potentes bases de datos actuales. Esto por sí solo puede ser suficiente para considerarlo, entre otras cosas como: • Orientada a columnas. • Esta hecha en java. • Permite modificar la consistencia de los datos. • Se puede hacer uso de CQL(Cassandra Query Language) • Bajo una licencia Apache • Es mantenida por la organización Apache. • La usan grandes organizaciones como Facebook o Twitter. • Tiene herramientas para administrar los nodos de forma gráfica. • Es fácil de instalar en un principio. • Solución en cluster enfocada a la escalabilidad. • Tolerancia a fallos, cualquier nodo del cluster puede ser fácilmente sustituido. • Descentralización de datos. • Una comparación en tiempos de lectura y escritura de cientos de veces inferior, en pruebas realizadas con un alto volumen de datos. • Sencillo modelo de datos similar a una hash table.
  • 12. Clientes/APIs Cassandra tiene clientes para diferentes tecnologías  Python  Java  Node.js  Clojure  .NET  Ruby  PHP  Perl  Go  Haskell  C++  el caso de Java una alternativa interesante es Kundera, basada En en el paradigma JPA 2.0.