Download "la dirección de" programador

Document related concepts
Transcript
Desarrollo y servicios web
Luisa Fernanda Rincón Pérez
2016-1
Sesión 24. Bases de datos NOSQL
– Introducción MongoDB
Luisa Fernanda Rincón Pérez
2015-1
¿Qué haremos hoy?
1. Bases de datos NoSQL
2. Tipos bases de datos NOSQL
3. MongoDB
¿Para qué sirven las bases de datos NoSQL?
Sirven para manejar y analizar grandes cantidades
de información. No son un reemplazo de SQL
tradicional. Son una alternativa
Hace parte
del concepto
de BIGDATA
-Clics de los
usuarios
-Selecciones
anteriores
¿Qué datos no son estructurados?
Textos
Social
media
Mobile data
Web site
content
Audio files
• Ejm llamadas
de call centers
Los datos en el mundo
http://www.signiant.com/blog/move-large-files-fastovercoming-the-challenge-of-transferring-huge-unstructureddata-sets/
¿Cómo se guardaba la información en bd
relacionales?
Información
distribuida en
muchas tablas
En NOSQL no precisa de un sistema de
tablas y relaciones entre ellas.
¿Por qué NoSQL?
http://callcenterinfo.tmcnet.com/analysis/articles/156051-what-att-purchase-tmobile-means.htm
En el contexto de BigData los sistemas prescinden de la
robustez de información en pos de una mayor agilidad
en las consultas. Ahora se devuelven gran cantidad de
datos con millones de registros involucrados.
NoSQL / Bd relacionales
Dato para
una bd
NO-SQL
Dato para una bd
relacional
En las bases de datos tradicionales
¿Qué son las bases de datos NOSQL?
No cumplen las restricciones
básicas del modelo relacional
• No permite JOINS
• No SCHEMAS
• No garantizan ACID (atomicidad,
consistencia, aislamiento y durabilidad)
• No usan SQL como lenguaje de consulta
Sistemas de
almacenamiento
no relacionales
No tienen un conjunto
de tablas
relacionadas entre sí
de una manera
ordenada y lógica.
Duplicidad de
información SI,
pero ya no es un
problema
https://www.nttreview.jp/archive/ntttechnical.php?contents=ntr201212fa3.html
¿Qué son las bases de datos NOSQL?
https://www.nttreview.jp/archive/ntttechnical.php?contents=ntr201212fa3.html
NoSQL características (BASE)
Basic availability
• El almacén funciona la mayoría del tiempo gracias al
almacenamiento distribuido y replicado, pero no
necesariamente 24/7
Soft-sate
• Los almacenes no tienen porque ser consistentes ni sus
réplicas en todo momento.
• El programador puede verificar esa consistencia.
• Ejm. Si se cambia la dirección de correo, es posible que
algún nodo mantenga la información desactualizada
Eventual consistency
• La consistencia se da eventualmente. En el caso del correo.
En algún momento todos los nodos volverán a tener la
misma información.
Propiedades adicionales bd NOSQL
Sharding
Particionamiento horizontal: Los documentos de la
base de datos son partidos para que se encuentren
en diferentes nodos. ( Balancear la carga entre los
nodos)
Replication
La misma información se replica en diferentes nodos
para garantizar disponibilidad. Puede hacerse en
forma de maestro-esclavo y peer-to-peer
Taxonomía NoSQL
Clave –
valor
Taxonomía
NoSQL
Documentos
Grafos
Taxonomía NOSQL- clave/valor
Es posible
facilmente leer un
registro de la base
de datos pero no
es posible buscar
datos entre
múltiples registros
[1].
Registros
repartidos entre
muchos nodos
Colección
de pares
clave/valor
Difícil de mantener
clave única cuando
aumentan los datos
Cada clave
es única
Soporta put, get y
delete sobre los
valores de la llave
Taxonomía NOSQL- orientadas a documentos
El valor asociado a cada
llave contiene datos
estructurados o
semiestructurados,
también llamados
documentos
Cada documento
puede tener cualquier
número de campos de
cualquier valor
Modelo de datos:
colecciones de
documentos (JSON, XML,
BSON)
Taxonomía noSQL-orientadas a grafos
Lo más importante
son las relaciones
de los datos.
Modelan los datos
como nodos y
aristas de grafos.
Útiles para redes
sociales
Ejemplo base de datos
NOSQL
Fuente. http://www.sitepoint.com/using-a-graphdatabase-with-ruby-part-i-introduction/
Sql RELACIONAL
Taxonomía noSQL-orientadas a grafos
Tomado de [2]
Algunas bases de datos NOSQL
¿Cuándo usar una base de dato NOSQL?
• Se tienen datos no estructurados o
semiestructados
• Es necesario cambiar los esquemas de la
base de datos rápidamente de acuerdo
a las necesidades del negocio.
• Es necesario consolidad muchas fuentes
de datos sin adaptarlas al mismo
esquema
Mongo DB
https://www.youtube.com/wat
ch?v=CvIr-2lMLsk
¿Qué es MongoDB?
• Base de datos NoSQL orientada a
documentos
• Usa JSON -BSON y tiene un lenguaje propio
de consultas.
• Implementado en C++
• Usada por SourceForge, Bit.ly, Foursquare o
GitHub
• URL: http://www.mongodb.org/
¿Por qué Mongo DB?
Fuente: http://db-engines.com/en/ranking
Motor NOSQL más popular
actualmente
¿Cuáles son las características de Mongo DB?
•
•
•
•
Consultas en lenguaje propio
Indexación como en bd relacionales
JSON como formato de datos
Replicación maestro - esclavo
• El maestro puede ejecutar comandos de lectura y
escritura.
• El esclavo puede copiar los datos del maestro y sólo se
puede usar para lectura
– El esclavo tiene la habilidad de poder elegir un nuevo
maestro en caso del que se caiga el servicio con el
maestro actual.
• Escalabilidad horizontal que se refiere a
aumentar el número de componentes.
Descargar MongoDB
http://www.mongodb.org/
http://www.mongodb.org/downloads
http://www.mongodb.org/downloads
Guía de instalación: http://docs.mongodb.org/manual/installation/
Instalación
1. Descargar, descomprimir, e instalar.
Mongo DB requiere una carpeta Data
para almacenar los datos
Directorio por defecto de los datos
C:\data\db
.
2. Iniciar el proceso
Si no se creó la carpeta correcta aparece el
error
Instalación
• 3. Abrir mongo.exe
Mongo corre por defecto en el puerto
Probar en
27017
consola
Conceptos básicos en MongoDB
Representación
Binaria de JSON
Utilidades de MongoDB
mongo
mongostat
•Shell javascript interactivo
de consulta
•Estadísticas de una instancia
de Mongo DB en ejecución
mongo
import/mongo •Facilita importar/exportar
datos
export
mongodump/
•Exportar y restaurar en
binario la base de datos
mongorestore
Ejemplo documento MongoDB
Fuente: http://docs.mongodb.org/manual/core/crud-introduction/
Ejemplo documento MongoDB (2)
http://www.tutorialspoint.com/mongodb/mongodb_quick_
guide.htm
Algunos comandos de MongoDB ejecutados desde la
consola de MongoDB
Crear una base de datos
Ver lista bases de datos ( se requiere insertar al menos un
dato para ver en la lista serviciosWebDB)
Algunos comandos de MongoDB
Crear colección db.createCollection
Insertar datos db.createCollection(“Students”)
Insertar datos en la colección
Insertar datos db.Students.insert({name: “Daniel”, lastname: “lopez”})
¿Cómo se insertan valores en MongoDB?
Fuente: http://docs.mongodb.org/manual/core/crud-introduction/
Algunos comandos de MongoDB
Consultar colecciones disponibles
db.getCollectionNames();
¿Cómo se seleccionan datos para
consultar/borrar/modificar/..? -- SELECTORES
Se comportan como la cláusula WHERE
de una instrucción SQL. Limitan los datos
que se requieren.
Son objetos JSON
¿Qué selectores existen?
Selector base
{ field: value}
{name: ‘pepe’}
Selector filtro
{field:
{filtro:valor}}
Filtros: $gt,
$gte,$lt,$lt3,$ne
$exists: se
encuentra el
campo
{name : {$exists:
true }}
$in: valores para
hacer match.
Arreglo
{name: {$in:
[‘nomUno,
nomDos’] }}
$or
{name: {$or:
{filro1}, {filtro2 }}
Buscar por id
{_id:
ObjectId(‘id’)}
Otros filtros
Object_id
{name: {$ne:
‘pepe’}}
Tutorial interactivo
¿Qué incluye?
Consultas
Inserción
Condi-cional
$exist
Id de los
documentos
http://mongly.openmymind.net/tutorial/index
Eliminación
¿Cómo se usan los selectores en el comando find?
1: Ascendente
-1: Descendente
Fuente: http://docs.mongodb.org/manual/core/crud-introduction/
Retorna un cursor que sirve para
recorrer los documentos
¿Cómo se hacen consultas en MongoDB?
¿Qué retornan las consultas? – Un cursor
Actualizar documentos - update
Todo el documento – sobrescribe lo que tenía si no se indica el
$set, sino se usa el $set se debe poner todo el documento de
nuevo.
Actualizar documentos upset
Si el documento no está se inserta, y si sí
está se actualiza. Es el tercer parámetro
de update y se envía en true
db.unicorns.update({name: 'Ulysee'},
{$inc: {vampires: 1}}, true);
Actualizar múltiples documentos ( Cuarto
parámetro)
Al adicionar un true como cuarto
parámetro se actualizan todos los
documentos que cumplan con el
criterio. Ejm
db.unicorns.update({gender: 'm'},{ $push:
{ loves: 'orange'} },false, true);
¿Cómo se borran datos? - remove
db.collectionName.remove({selector})
db.unicorns.remove({name:'Lois'})
No pasar selector remueve todos los elementos de la
colección
db.unicorns.remove()
Conexión MongoDB en PHP
Fuente:
http://www.tutorialspoint.com/mongodb/mongodb_php.htm
Descargar extensión, copiarla en
la carpeta ext de php, adicionar
línea en php.ini
Conectar base de datos. Si no existe, Mongo crea una
automáticamente
Crear una colección
Ejecución
programa
Insertar un documento
Imprimir todos los documentos de una
colección
Borrar documentos
Otras funciones
findOne(), save(), limit(), skip(), sort()
MongoLab
Ahora mlab
¿Qué es MLab?
¿Cómo se puede hacer la conexión?
Driver Mongo
Conexión REST
Referencias
[1] Enterprise NOSQL for dummies.
Charlie Brooks. 2014. MarkLogic Special
Edition.
[2] Neo4j web site http://neo4j.com/
[3] MongoDB web site
https://www.mongodb.org/
[4] MongoLab. https://mongolab.com
[5] http://nosql-database.org/