NoSQL Databases
NoSQL Databases
NoSQL Databases
Contenido
Por qu aparecen
En qu se diferencian
Qu elegir
Tipos comunes
MongoDB
El Futuro
El Futuro
El 70% de los informes se utilizan para volver a introducir datos en bases de datos
20/40% de toda la mano de obra de EEUU se dedica a recoger, almacenar, recuperar, ...
informacin
Mercadeo de bases de datos es la
Predicciones
Por Qu Aparecen
De Dnde Vienen
Con los aos, hemos aprendido tcnicas comunes para normalizarlas, escalarlas, y utilizarlas
como sistema de persistencia para almacenar informacin desde nuestro lenguaje procedural u
orientado a objetos favorito (entre otros).
Apareci la web, el software como servicio, los servicios en la nube y los problemas de alta
escalabilidad.
Los modelos relacionales se adaptan para hacerlos escalar pero se hacen cada vez menos
intuitivos a medida que aumenta la complejidad. Triples y cudruples JOINs en consultas SQL, a
veces poco eficientes, y sistemas de almacenamiento de resultados en cachs para acelerar la
resolucin de las peticiones y evitar ejecutar cada vez estas pesadas operaciones, son el pan de
cada da en muchos proyectos de software.
Los sistemas NoSQL, acrnimo de Not Only SQL, intentan enfrentar este problema proponiendo
una estructura de almacenamiento ms verstil, aunque a costa de perder ciertas
funcionalidades como las transacciones, o la incapacidad de ejecutar el producto cartesiano de
dos tablas (tambin llamado JOIN) teniendo que recurrir a la desnormalizacin de datos.
Ejemplos: CouchDB, MongoDB, RavenDB, Neo4j, Cassandra, BigTable, Dynamo, Riak, Hadoop, y
otras muchas.
En Qu Se Diferencian
En Qu Se Diferencian
Modelo de Datos
Modelo de Consultas
Modelo de Consistencia
Los sistemas NoSQL tpicamente mantienen varias copias de los datos para proporcionar escalabilidad y
disponibilidad. Estos pueden utilizar dos tipos de consistencia distinta entre los datos de sus mltiples
copias: consistencia y consistencia eventual.
En los sistemas consistentes se garantiza que las escrituras sean inmediatamente visibles para las
consultas posteriores. Especialmente tiles para aplicaciones en las que es indispensable que los datos
sean siempre coherentes. Los sistemas consistentes proporcionan ventajas en las escrituras, pero las
lecturas y las actualizaciones son ms complejas.
En los sistemas eventualmente consistentes (trmino de Amazon), existe un periodo durante el que no
todas las copias de los datos estn sincronizadas. El hecho de no tener que comprobar la consistencia de
los datos en cada una de las operaciones supone una mejora importante en el rendimiento y disponibilidad
del sistema, aunque para ello se sacrifique la coherencia de los datos. Estos tipos de sistemas son
especialmente tiles para datos que no cambian a menudo, como archivos histricos o logs.
Las bases de datos orientadas a documento o grafo pueden ser consistentes o eventualmente
consistentes, mientras que las bases de datos clave-valor y orientadas a columna son tpicamente
eventualmente consistentes.
API
Qu Elegir
Qu elegir
Para un desarrollador no es difcil elegir entre un sistema y otro. Al final todo son tablas,
columnas, claves primarias, y sobre todo, consultas SQL.
Por el lado de las NoSQL hoy existen unas 150, ninguno ha obtenido todava la
fama que las bases de datos relacionales.
Hay varias aproximaciones diferentes para clasificar las bases de datos NoSQL (Teorema
CAP, con base en el modelo de datos, etc.)
Qu Elegir
Teorema para sistemas distribuidos llamado CAP, Eric Brewer. Explica que hay 3 requerimientos
bsicos en los sistemas distribuidos:
Consistencia. Se refiere a la integridad de la informacin. Todos los nodos del sistema ven la misma
informacin en todo momento.
Disponibilidad. Que tu aplicacin est disponible siempre. Si falla algn nodo los dems pueden seguir
operando sin problemas.
El teorema CAP establece que es imposible que un sistema satisfaga los 3 requerimientos de
forma simultnea, por lo que debe elegirse 2 y enfocarse en ellos. En el caso de los RDBMS, se
le da ms importancia a la consistencia y a la disponibilidad, en detrimento de la tolerancia al
particionamiento. Por otro lado, las diferentes opciones de NoSQL dan mayor prioridad a la
tolerancia y en ocasiones la disponibilidad.
Qu Elegir
Qu Elegir El Mercado
Tipos Comunes
Tipos Comunes
Orientadas a Documentos
Orientadas a Columnas
Ejemplos:
De Clave - Valor
Ejemplos:
De Grafo
Ejemplos:
Apache Cassandra
Neo4J
DynamoDB
CouchDB
Lenguaje de escritura
Usos
Taller en Clase
MongoDB
Naci a finales del 2007 como un proyecto interno de la empresa 10Gen para usarlo en
una aplicacin de Internet que estaban desarrollando. En 2009 deciden liberarlo como
Open Source y dedicarse ntegramente a l, ofreciendo soporte comercial y servicios
relacionados.
En lugar de guardar los datos en registros, guarda los datos en documentos. Estos
documentos son almacenados en BSON, que es una representacin binaria de JSON.
Anexo - JSON
10
manzanas
20
Peras
30
Naranjas
80
lechugas
Ej:
15
tomates
50
pepinos
Fruta:
Verduras
JSON - Ejemplo
Path: json['Fruteria'][0]['Fruta'][0]['Cantidad']
MongoDB - Ejemplo
Caractersticas
Cmo Funciona
db.Clientes.find({Nombre:"Pedro"});
MongoDB viene con una consola desde la que se pueden ejecutar los
distintos comandos.
Para qu se usa
Adecuada para crear aplicaciones de Internet que registren muchos datos o que simplemente se
quiera crear de manera muy flexible, pero tambin para sistemas muy grandes como registradores
de datos de sensores, que pueden llegar a recibir decenas o cientos de miles de lecturas de datos
por segundo, pasando por gestores de datos de ventas, infraestructura de almacenamiento para
redes sociales, juegos masivos online, gestores de contenidos, aplicaciones de anlisis de datos y
reporting...
Actualmente lo utilizan para empresas como eBay, Foursquare, SourceForge, The New York Times,
The Guardian, SAP, o el propio CERN en su colisionador de hadrones, y tambin muchas empresas
pequeas que quieren poder desarrollar de manera gil, barata, sencilla y sin miedo a poder crecer
ms adelante.
Taller - MongoDB
1.
2.
3.
Conectarse a la BD
4.
5.
6.
7.
http://docs.mongodb.org/manual/
reference/operator/query/where
/
Taller
Taller
Taller
Taller
Taller
Taller
Taller
Taller
Taller
Taller
Taller
1.Ingresar un documento a la coleccin creada con su informacin, habilidades
e intereses.
2.Describir qu sucede al crear el documento, revisar el documento despus
de ser creado y comentarlo.
3.Editar el documento y agregar 2 o ms intereses y habilidades
4.Realizar bsquedas que involucre un campo en un documento dentro de otro
documento.
5.Realizar una bsqueda por nombre o apellido
6.Utilizar where en una consulta
7.Realizar otras consultas que involucren aproximaciones de texto, colocar que
sucede.
db
Comprobamos las colecciones que contiene la base de datos (al principio no contendr ninguna):
use pruebas
show dbs
show collections
Insertamos nuestros primero documentos en una coleccin. La coleccin se crea automticamente la primera
vez que se accede a ella.
db.personas.find()
db.puntos.find()
db.personas.drop()
db.puntos.drop()
db.dropDatabase()
Trabajo #2
Ejercicio A
La liga de ftbol profesional quiere lanzar una nueva aplicacin para que los aficionados
puedan consultar la informacin de los partidos disputados en la temporada. La informacin
bsica que se debe incluir es la siguiente:
Jugadores: se necesita su nombre, dorsal y fecha de nacimiento.
Equipos: se necesita su nombre, su estadio y los jugadores que componen la plantilla.
Partidos: estn compuestos de dos equipos, un resultados y una lista de goleadores.
Se pide modelar una base de datos MongoDB para incluir esta informacin. Al modelar la
base de datos se debe tener en cuenta el posible uso que se har de la aplicacin. Es
importante elegir cmo relacionar los datos y justificar el porqu de dichas relaciones.
Trabajo #2
Ejercicio B
La compaa area Volando voy quiere lanzar una nueva web para gestionar sus vuelos. La
compaa est especialmente interesada en que ofrecer la mayor cantidad de informacin
posible a sus pasajeros. Dispone de la siguiente informacin que tiene que incluir:
Pasajeros: se necesita su nombre, nacionalidad y nmero de pasaporte.
Aviones: se necesita el modelo, el ao y un listado con las ltimas revisiones.
Vuelos: estn compuesto de un avin, una ciudad de origen, una ciudad de destino y
un listado de los pasajeros que han contratado el trayecto.
Se pide modelar una base de datos MongoDB para incluir esta informacin. Al modelar la
base de datos se debe tener en cuenta el posible uso que se har de la aplicacin. Es
importante elegir cmo relacionar los datos y justificar el porqu de dichas relaciones.
Bibliografa
Bases de datos NoSQL. Qu son y tipos que nos podemos encontrar. 2014. En
http://www.acens.com/wp-content/images/2014/02/bbdd-nosql-wp-acens.pdf
Bases de datos NoSQL. Elige la opcin que mejor se adapte a tus necesidades. 2014. En
http://www.genbetadev.com/bases-de-datos/bases-de-datos-nosql-elige-la-opcion-que-mejor
-se-adapte-a-tus-necesidades