• Save
Apache Cassandra
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Apache Cassandra

on

  • 1,126 views

Breve presentación para conocer Apache Cassandra basada en Bases de Datos No-SQL.

Breve presentación para conocer Apache Cassandra basada en Bases de Datos No-SQL.

Statistics

Views

Total Views
1,126
Views on SlideShare
1,126
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Apache Cassandra Presentation Transcript

  • 1. Apache CassandraBases de Datos No-SQL
  • 2. ¿Por qué surge No-SQL?• La mayoría de los motores de bases de datos, de la actualidad, sebasan en la arquitectura relacional, y todos ellos utilizan ellenguaje de consultas SQL (con variaciones) para operar con losdatos.• Las bases de datos relacionales no tienen nada de malo. Gracias aellas hemos conseguido:▫ Normalizarlas: aplicar una serie de reglas que tratan de evitar que seproduzca redundancia, evitar problemas de actualización yproteger la integridad de los datos.▫ Y utilizarlas como sistema de persistencia: para almacenar informaciónorientada a objetos o desde nuestro propio lenguaje.
  • 3. ¿Por qué surge No-SQL?• La aparición de la web 2.0 trae consigo:▫ La aparición de startups: Empresas que nacen con una idea innovadora yque tratarán de ir introduciendo elementos para destacar de la posiblecompetencia que vaya surgiendo.▫ Las Redes Sociales.▫ Servicios en la Nube.• Todos estos nuevos elementos tienen éxito a gran escala (algunosalcanzarán millones de usuarios en poco tiempo) y esto provocará lallegada de los problemas de alta escalabilidad.
  • 4. ¿Por qué surge No-SQL?• Los modelos relacionales se pueden adaptar para hacerlosescalar incluso en los entornos más difíciles.• Esta adaptación trae consigo:▫ Consultas SQL complejas: con triples o cuádruples JOINS que aumentansu complejidad de implementación, a veces poco eficientes.▫ Sistemas de almacenamiento de resultados en cachés: para acelerar laresolución de las peticiones y evitar ejecutar constantemente estasoperaciones.• Los sistemas No-SQL intentarán atacar estos problemasproponiendo una estructura más versátil.
  • 5. Ventajas de No-SQL• Algunas de las ventajas, y a su vez característicascomunes de las BBDD No-SQL, son:▫ Ausencia de esquema en los registros dedatos,▫ escalabilidad horizontal sencilla,▫ y alta velocidad (aunque esto último no siemprees cierto, pues muchos de estos sistemas aún noestán suficientemente madurados).
  • 6. Ausencia de Esquema• Los datos no tienen una definición de atributosfija. Cada registro puede contener una información condiferente forma cada vez, pudiendo almacenar sólo losatributos que interesen en cada uno de ellos,facilitando el polimorfismo de datos bajo unamisma colección de información.• También se puede almacenar estructuras de datoscomplejas en un solo documento. Por ejemplopodemos almacenar la información sobre la publicaciónde un blog (título, cuerpo, autor, etc.), junto a loscomentarios y etiquetas vertidas sobre ella.
  • 7. Alta Velocidad• Muchos de estos sistemas realizan operacionesdirectamente en memoria, y sólo vuelcan los datos adisco cada cierto tiempo. Esto permite que lasoperaciones de escritura sean realmenterápidas.• Trabajar de este modo puede sacrificar fácilmente ladurabilidad de los datos, y en caso de cuelgue o apagónse podrían perder operaciones de escritura operder la consistencia. Normalmente, esto loresuelven permitiendo que una operación de escriturahaya de realizarse en más de un nodo antes de darla porválida, o disminuyendo el tiempo entre volcado y volcadode datos a disco. Aunque, aún así, existe ese riesgo.
  • 8. Inconvenientes de No-SQL• Ahora es el momento de los inconvenientes, y es queel precio que hay que pagar por tanta rapidez yredundancia de datos es que necesitamos perderen consistencia.• Y sí, es posible que dos usuarios que consultenla misma información en un determinadomomento obtengan resultados distintos(alguno de ellos obsoletos), pero esto puede carecerde importancia si:▫ Por ejemplo: el caso consiste en que un usuario nopodrá ver el tweet (si nos basamos en Twitter) de unamigo hasta el próximo acceso.
  • 9. Apache Cassandra• Cassandra es una base de datos de código abierto cuya principal característica es que fusiona Dynamo,de Amazon, con BigTable, de Google, siendo ambas implementaciones de código cerrado.• El desarrollo de Cassandra fue iniciado por Facebook, para intentar solventar la problemáticarelacionada con el rendimiento del motor de búsquedas, concretamente con las relacionadas en lacomunicación entre usuarios (“Inbox Search“). Esta funcionalidad implica un gran volumen de datos aalmacenar, con una perspectiva de crecimiento muy alta (el boom de las redes sociales se produjodespués de la implementación de Cassandra) y la necesidad de ofrecer un nivel de calidad de serviciofijado (SLA, Acuerdo de Nivel de Servicio).• Para poder comprobar la problemática de Facebook, y la solución:
  • 10. Apache Cassandra• En 2008 Cassandra fue liberada por Facebook,pasando a ser de código abierto, yactualmente es la gente de Apache quien lamantiene.• El éxito de este proyecto ha llegado hasta talpunto que en Abril de 2010, sus dos principalescreadores se ven obligados a ofrecer soportecomercial.
  • 11. Características• Primero debemos de especificar que Cassandra se trata de unsistema NoSQL por lo tanto no podemos catalogarla como unabase de datos orientada a columnas ya que no es relacional.• Cada familia de columnas puede contener o bien columnas o biensúper-columnas. Las súper-columnas son la agrupación de n-columnas.• Cada columna contiene elementos de la forma “Clave-Valor”.• Cada fila de una tabla puede tomar valores en columnasdistintas de una familia de columnas que otra fila, es decir,si se dispone de una familia de 5 columnas (A, B, C, D, E), la fila R1puede tener valores en A y B mientras que la fila R2 puede tenerlosen A, C, D y E.
  • 12. Características• Gracias a lo anterior, cuando usamos Cassandra nodebemos de especificar que campos tendrá, lo quenos permite ir añadiendo o ir eliminandosegún las necesidades.• Esto también obliga a hacer un cambio con respectoa los sistemas relacionales ya que cuando usemosCassandra deberemos de pensar primero en lasconsultas y luego proporcionarle los datosque cumplan la anterior consulta.
  • 13. Características• Cassandra puede ejecutarse en múltiples máquinassin necesidad de que el usuario necesitaconocer los detalles técnicos o en queinstancia se encuentra la información quenecesita consultar.• Fue diseñada para ser ejecutada en múltiples nodos,y sin necesidad de que estos nodos estegeográficamente cercanos. Es decir, podemostener un cluster que cuente con nodosgeográficamente repartidos a millones de km sinque esto altere la eficiencia.
  • 14. Características• Cassandra es un sistema descentralizado ya quecada nodo tiene exactamente la mismainformación que el resto de nodos, por lo tantosi uno fallase se podría replicar toda lainformación desde cualquier otro nodo.
  • 15. Características• Cassandra es escalable de forma elástica, esdecir, puede escalarse tanto horizontalmentecomo verticalmente.▫ Escalabilidad horizontal: añadir más nodos anuestro sistema, es decir, añadir más maquinas.▫ Escalabilidad vertical: añadir más capacidad anivel de hardware a las máquinas por ejemploañadiendo más memoria.
  • 16. Características• Cassandra tiene consistencia, de forma resumiday simple, esto significa que una lectura enCassandra siempre responderá con el valor másreciente escrito.▫ Consistencia débil: todos los datos se replicarán atodo el sistema pero esto llevará cierto tiempo.
  • 17. Modelado• Cassandra es un tipo de NoSQL clave-valor, por ello el modelado de datos es distinto almodelado de datos que conocemos para las Bases de datos relacionales.• Para representar los datos Cassandra usa los siguientes conceptos Básicos:▫ Column: Es el elemento más básico de la base de datos, por lo que es una unicidad atómica yse asemeja al concepto de campo en las bases de datos relacionales. Tiene la misma estructuraque un array asociativo, que contiene tres campos que son: Nombre: es un array de bytes. Valor: es un array de bytes. Timestamp: guarda la última vez que la columna fue accedida• Ejemplo visual de columna:Columna(Nombre->”Nombre del campo”Valor->”Valor del campo”Timestamp->”marca de tiempo”)
  • 18. Modelado▫ SuperColumn: es un elemento compuesto por varias columnas y sus nombres:• Ejemplo visual de supercolumna:Supercolumna(“Nombre de la supercolumna” -> xxx(“columna1”-> xxx(“nombre”-> xxx“valor”->xxx“timestamp”->xxx)“columna2”-> xxx(“nombre”-> xxx“valor”->xxx“timestamp”->xxxx)))
  • 19. Modelado▫ ColumFamily: Es un contenedor de columnas que se asemeja alconcepto de tabla de las bases de datos relacionales. El contenido es una lista ordenada de columnas. Cada columfamily se guarda en un fichero ordenadopor clave de fila. El contenido de una columfamilyconsta de un conjunto de filas con un conjunto decolumnas similar pero no idéntico.
  • 20. Modelado• Las family colum pueden ser de dos tipos:• SupercolumnFamily: es un mapa ordenado de nombres de super-columnas a mapas de nombres de columnas a valores de columnas.• Simplecolumnfamily: es un mapa de nombres de columnaordenadas a valores de columna.
  • 21. Modelado• Keyspace: Un espacio de claves o KeySpace esun esquema de alto nivel que contiene familiasde columnas, y se asemeja a una base de datosen lo que respecta al modelo relacional.
  • 22. Modelado• Una vez definidos todos los conceptos básicos del modelado de datos en Cassandra vamos a compararlocon el modelo de datos relacional, esto es peligroso hacerlo ya que aún no existe unacomparación certera al cien por ciento.• Lo primero que vamos a recordar es que elementos de un elemento pueden asimilarse con loselementos de otro modelo, una columna del modelo de datos de Cassandra se puede asemejar a un campoen el modelo relacional, las tablas del modelo relacional se asemejan a los columFamily de Cassandra ypor último las bases de datos del modelo relacional son los KeySpace de Cassandra.• Una distinción de las más importantes es que en Cassandra no existe la Integridad referencial queexiste en el modelo relacional, no hay joins, pero estos se pueden emular almacenando las claves deuna Columfamily en otras filas de otro columFamily o haciendo uso de índices.• Otra diferencia entre Cassandra y el Modelo de datos relacional es que Casandra no normaliza losdatos a la hora de genera el modelo, ya que trabaja con un mayor rendimiento con datos des-normalizados, por ello a la hora de modelar la base de datos de Cassandra se debe pensar primero enlas consultas que se van a realizar y una vez se sepan que consultas van a hacerse a las bases dedatos se realiza el modelo de datos para satisfacer a dichas consultas, al contrario que pasa con el modelorelacional en el que primero se piensa que datos van a ser los que se van a almacenar para luegomodelarlos de manera normalizada.
  • 23. Modelado• A continuación veremos dos imágenes resumenen las que se pueden ver cada una de lasdiferencias mencionadas.