Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

NoSQL

No description
by

JP Fiorilli

on 20 September 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of NoSQL

Teorema de Brewer (CAP)
Agenda
Concepto/definición
Como surge
Características
Teorema de CAP
Tipos de bases NoSQL
Ventajas y desventajas
Principales motores
Ejemplos Mongo DB - Cassandra
Empresas con DB mixtas
Caso TWITTER
Cuando si, cuando no
Comparación con otras DB del mercado

Concepto - Definición
“Not Only SQL”
Sistema Gestor de base de datos
No relacional.
Este tipo de estructura se diferencia por la forma en la que realiza el almacenamiento de datos
Cómo surge?
Características
Ventajas
Escalabilidad horizontal
Tolerancia a fallos
Redundancia
Rapidez y simpleza
Maneja grandes cantidad de datos

Desventajas
No tenemos soporte
Limitación en creación de informes
No hay un modelo standard
Limitación de espacio
(mas)
Tipos de Bases NoSQL
Caso Twitter
Cuándo sí y cuándo no
Base Clave - Valor
Comparemos:
Bases Mapeo Columnas
Bases Documentales
Bases Grafos
Basado en documentos
Concepto de Documento
Colección
Instancias de MongoDB
Principales Motores
Carlo Strozzi
Eric Evans empleado de Rackspace
Auge
SQL no es el principal lenguaje
No necesitan JOIN
Escalabilidad Horizontal
Tolerancia a fallos y redundancia
No requieren estructuras fijas como Tablas
Garantiza ACID???
Características
Multiplataforma orientado a documentos
Escrito en C++
Software de licencia libre
Funciona con Windows, Linux, OS X y Solaris
Consultas dinámicas
Redis es un código abierto, BSD (Berkeley Software Distribution)
Puede ser clusterizado aunque el trabajo y gestión de todo esto debe ser llevado a cabo por el cliente que debe separar las llaves entre los servidores que componen el cluster. De esta forma el escalado es muy sencillo
Que son los Sistemas BSD?
Así se llamó a las distribuciones de código fuente que se hicieron en la Universidad de Berkeley en California y que en origen eran extensiones del sistema operativo UNIX® de AT&T Research, éstos no son clones sino derivados de código abierto del sistema operativo de AT&T Research, el cual es a su vez ancestro del moderno UNIX System V

redis> hset usuario:1 nombre Marcos

redis> hset usuario:1 codigo 328


redis> hgetall usuario:1
1. "nombre"
2. "Marcos"
3. "codigo"
4. "328"

Implementaciones de REDIS
Almacenamiento con formato de claves-valor
Se clasifica como un servidor de estructura de datos
Las claves pueden contener:
cadenas , hash , listas , conjuntos y conjuntos ordenados
Es muy rápido
Se puede realizar inserción y obtención de datos
Características de REDIS
Principales Características
Guardan los datos en columnas
Mayor velocidad al leer los datos
Concepto de familia de columnas (filas + columnas)
No son tan veloces para escribir datos por eso se usan mas en sistemas que deben leer datos
Tiene su propio lenguaje de consulta
¿Que es cassandra?

Es un lenguaje NoSQL que fue creado por y para Facebook para intentar solventar la problemática relacionada con el rendimiento del motor de búsquedas, concretamente con las relacionadas en la comunicación entre usuarios (“Inbox Search“).
Esta funcionalidad implica un gran volumen de datos a almacenar, con una perspectiva de crecimiento muy alta.
En el 2008 Cassandra fue liberado por Facebook que se lo donó a la fundación Apache, quienes habilitaron su código para que sea abierto.


¿Como Trabaja una Base Cassandra?

Una tabla de datos por cada instancia de Cassandra.
Cada familia de columnas puede contener o bien columnas o bien supercolumnas. Las supercolumnas son columnas es decir la agrupación de n-columnas.
Cada columna contiene elementos de la forma “Clave-Valor-Tiempo”, donde el valor del campo tiempo es definible por el usuario.
Cada fila de una tabla puede tomar valores en columnas distintas 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 R1 puede tener valores en A y B mientras que la fila R2 puede tenerlos en A, C, D y E.
¿Quienes usan Cassandra?
Principales Características

Neo4j es robusto
Totalmente ACID.
Transaccional
Debido a su modelo de datos gráfica, Neo4j es muy ágil y rápido.
Para las operaciones de datos conectados, Neo4j funciona mil veces más rápido que las bases de datos relacionales.
Soporta índices.
Lenguaje de Consulta propio.
Representación en forma de Nodos.
Se pueden garantizar solo dos de las siguientes propiedades
B
asically Available - Disponibilidad!

S
oft State

E
ventually Consistent
BASE (contrario al ACID)
Escalabilidad
- Horizontal
- Vertical

Ejemplos!
Vertical
Horizontal
Resultados
Escalabilidad
Descentralizada
Tolerancia a fallos
Y mayor velocidad

SQL
NoSQL
Amazon DynamoDB
Amazon SimpleDB
Empresas con Bases Mixtas
Bases de datos distribuidas
Las bases de datos NoSQL no reemplazan a las bases relacionales, son un complemento que surgió para poder cubrir las necesidades que la gran cantidad de datos generados por los sistemas actuales ocasionan.

Conclusiones

BASES RELACIONALES

CREATE TABLE clientes (
nif CHAR(14) NOT NULL,
nombre CHAR(20) NOT NULL,
apellidos CHAR(30) NOT NULL,
CONSTRAINT pk_clientes PRIMARY KEY (nif)
);

CREATE TABLE metodos_pago (
id_metodopago CHAR(2) NOT NULL,
d_metodopago CHAR(20) NOT NULL,
CONSTRAINT pk_metodos_pago PRIMARY KEY (id_metodopago)
);

CREATE TABLE pago_clientes (
nif CHAR(14) NOT NULL,
id_metodopago CHAR(2) NOT NULL,
id_metodo CHAR(3) NOT NULL,
datos_pago CHAR(100),
CONSTRAINT pk_pago_clientes PRIMARY KEY (nif, id_metodo_pago, id_metodo),
CONSTRAINT fk_pago_clientes_clientes FOREIGN KEY nif REFERENCES clientes (nif),
CONSTRAINT fk_pago_clientes_pagos FOREIGN KEY id_metodopago REFERENCES metodos_pago (id_metodopago)
);
CASO 1: EN TRES DOCUMENTOS

{
"_id": "es.nosql.demo.clientes.12346578Z",
"_rev": "1-a7b1dbc4475bcca028654c46116995f7",
"tipo": "clientes"
"nombre": "Perico",
"apellidos": "Eldel Ospalotes"
}




{
"_id": "es.nosql.demo.metodospagoclientes._id_único",
"_rev": "1-acb341a7b1dbc4475bcca028654c4611",
"tipo": "pagoclientes",
"cliente": "es.nosql.demo.clientes.12346578Z",
"metodopago": "Paypal",
"datospago": "blog@nosql.es"
}



{
"_id": "_design/pagoclientes",
"_rev": "1-6ae9b200597ec5d4899e904edb6a8aec",
"language": "javascript",
"views": {
"pagoclientes": {
"map": "function(doc) {if (doc.tipo == 'clientes') {emit([doc._id, 0], doc);} else { if (doc.tipo = 'pagoclientes') {emit([doc._id, 1], doc); } } }"
}
}
}
CASO 2: UN UNICO DOCUMENTO

{
"_id": "es.nosql.demo.clientes.12346578Z",
"_rev": "1-a7b1dbc4475bcca028654c46116995f7",
"tipo": "clientes"
"nombre": "Perico",
"apellidos": "Eldel Ospalotes",
"metodospago": [{"tipo": "Paypal", "datospago": "blog@nosql.es"}, {"tipo": "Efectivo"}, {"tipo": "Mastercard", "datospago": "4567-9875-9863-4456/999"}]
}
EJEMPLOS COUCHDB
Full transcript