2. - Indice -
¿Que es MongoDB? Herramientas útiles
¿Porque usar MongoDB? Preguntas...
Ventajas e Inconvenientes Recomendaciones
Como empezar... Contacto
La Shell
Bson - Json
Queries basicas
3. ¿Que es MongoDB?
Es un tipo de almacenamiento clave:valor con HA
− Los datos almacenados no requieren estructuras fijas
− No requieren dependencias entre documentos
Base de datos orientada a Documentos
La estructura de datos tiene 2 formatos:
− Json: Representación para “humanos” de los datos
dentro de un documento
− Bson: Versión binaria del Json, almacenamiento real de
los datos
4. ¿Que es MongoDB?
Operaciones atómicas
Indices
− Un indice es básicamente un orientador, te permite
mostrar de forma eficaz los elementos que buscas
− Esto es un arma de doble filo
Clusters
− Permite la creación de clusters inteligentes
− Replica Set, Sharding, Maestro-esclavo ...
5. ¿Porque usar MongoDB?
Son mas rápidas que cualquier SQL
Soportan la escritura de un gran volumen de datos
simultáneamente
Auto-sharding y Escalado Horizontal sin afectar a la
funcionalidad del producto
Soporta muchos lenguajes de programación
Fácil para su administración y fácil para el desarrollo
Y mucho más...
6. Ventajas
Escalable
Alto rendimiento
Open Source
Sin esquemas
Uso de Memoria en vez del disco como principal ubicación de
escritura
Escala muy bien con arquitecturas Cloud
AutoSharding
7. Inconvenientes
Open source
Las empresas consideran que no es un producto maduro
Requiere conocimientos de programación
Falta de especialización
No escala con herramientas de Business Intelligence
Migración casi imposible de un proveedor a otro
Cada NoSQL no tiene sus normas, no hay estándar
8. Como empezar...
Guiás de Instalación
Versión recomendada: 2.2
− Tiene muchas mejoras, sobre todo de seguridad con
respecto a sus antecesores
Drivers y Frameworks
Curso impartido por 10Gen - Recomendado 100%
9. La Shell
Esta es la pantalla de Help:
Descripcion de las acciones de ayuda
10. La Shell
Para acceder a la Shell tenemos que tener un demonio de base de datos
levantado
Al estar basada en JS podemos usar ventajas como asignación de
variables, bucles y tratamiento de objetos
11. Bson - Json
Bson es la representación binaria de un JSON, lo usa
MongoDB internamente para tratar con la propia
aplicación y operaciones internas dentro de la base de
datos. Esto frente a ataques es una manera de dificultar la
lectura en plano de los datos.
Un Json es formato de datos muy “friendly” para los
programadores, esta basado en “clave:valor” y esto hace
muy simple el desarrollo de la aplicación de cara las Dbs.
Cuesta acostumbrarse, pero después lo agradeces.
12. Bson - Json
Tipos de datos por JSON:
− Strings “x”:”yo”,
− Numbers “y”:25,
− Bools “z”:True,
− Null “v”:null,
− Arrays “c”:[1,2],
− Objects/documents “b”:{“city”:”Madrid”}
13. Queries
Ejemplos de uso
− db.user.find({“userName”:”Paco”,”age”:22})
− db.user.insert({“userName”:”Ana”,”age”:19,”city”:”Madrid”
})
− db.user.remove({“userName”:”Paco”})
− db.user.update({“userName”:”Jhon”}, {$set:
{“userName”:Jhony”}})
− db.user.update({“userName”:”Jhon”}, {$set:
{“userName”:Jhony”}},1,1)
El 1º 1 significa cambio multiple
El 2º 1 significa que si el campo no existe, lo crea
Por defecto estan a 0
14. Queries Basicas
Ejemplos prácticos:
Recomendación personal, antes de hacer una
modificación, hacer un backup
16. Herramientas
Herramientas de MongoDB:
− Mongoimport: Importar una DB
− Mongoexport: Exportar una DB
− Mongodump: Herramienta de Backup
− Mongorestore: Herramienta de Restauración
− Mongostat: Muestra el estatus del servicio de
MongoDB
19. Creditos
Nombre: Juan Manuel Parrilla
Puesto: Release Engineer en Telefonica I+D por Amaris
Contacto: juanmanuel.parrilla@amaris.com
Contacto Adicional: jmp.tid@gmail.com
Skype: jmp_tid
Twitter: @kerbeross
Editor's Notes
Db = especificas que la acción que vas a realizar es sobre la DB en uso. db.help = Acciones que puedes realizar sobre la base de datos. db.<colección>.help = Acciones que vas a realizar sobre una colección de la DB en uso. Help <zona> = Info general sobre una parte concreta de MongoDB Show = Muestra la info de DB, usuarios... db.<colección>.<accion> =Ejecutas una accion sobre una colección de una DB
$all : Para indicar que el array almacenado como valor del atributo debe tener los mismos elementos que el proporcionado en la condición. $exists : Para comprobar que el atributo existe en el documento. $mod : Para comprobar el resto de una división del valor del atributo por un número. $ne : Para indicar que el valor no puede ser el proporcionado. $in : Para indicar que el valor debe estar entre alguno de los proporcionados. $nin : Contrario de $in. $or : Para indicar que se debe cumplir al menos una condición de entre un grupo de condiciones. $nor : Contrario de $or. $size : Para indicar el número de elementos que debe haber en el array almacenado como valor. $type : Para comprobar el tipo del valor almacenado (número, cadena…) EG: Por ejemplo, {keywords: 'storage'} encontrará todos los documentos que incluyen 'storage' en su vector keywords. De igual forma, {keywords: {$in: ['storage', 'DBMS']} encontrará todos los documentos con 'storage' o 'DBMS' en su vector keywords. Regex : El valor debe concordar con la expresión regular indicada. EG: {nombre.apellido:/^d/} encontrará todos los documentos con un apellido comenzando en 'd' (correspondencia por expresión regular).