SlideShare una empresa de Scribd logo
1 de 15
Universidad Peruana de Ciencias e Informática

Mario Ernesto Huayta Sáenz
INTRODUCCION
MongoDB es un sistema de base de datos multiplataforma orientado a documentos, de
esquema libre. Esto significa que cada entrada o registro puede tener un esquema de datos
diferente, con atributos o “columnas” que no tienen por qué repetirse de un registro a otro.
Está escrito en C++, lo que le confiere cierta cercanía al bare metal, o recursos de hardware
de la máquina, de modo que es bastante rápido a la hora de ejecutar sus tareas.
Además, está licenciado como GNU AGPL 3.0, de modo que se trata de un software de
licencia libre. Funciona en sistemas operativos Windows, Linux, OS X y Solaris.
TERMINOLOGIA BASICA

En MongoDB, cada registro o conjunto de datos se denomina documento. Los documentos se
pueden agrupar en colecciones, las cuales se podría decir que son el equivalente a las tablas en
una base de datos relacional (sólo que las colecciones pueden almacenar documentos con muy
diferentes formatos, en lugar de estar sometidos a un esquema fijo). Se pueden crear índices
para algunos atributos de los documentos, de modo que MongoDB mantendrá una estructura
interna eficiente para el acceso a la información por los contenidos de estos atributos.
CARACTERISTICAS

Su velocidad y su rico pero sencillo sistema de consulta de los contenidos de la base
de datos. Se podría decir que alcanza un balance perfecto entre rendimiento y
funcionalidad, incorporando muchos de los tipos de consulta que utilizaríamos en
nuestro sistema relacional preferido, pero sin sacrificar en rendimiento.

Es un SGBD No SQL. Las crecientes necesidades en cuanto a
rendimiento, escalabilidad, velocidad, rendimiento han hecho que este término esté ya
en nuestras vidas.
Las bases de datos No SQL vencen a las BD relacionales tradicionales al no requerir
un modelo estáticos y estructura de datos para almacenar la información.
Ausencia de transacciones. (Aunque parezca un inconveniente)esto le permite a
MongoDB ser más rápida y escalable a nivel horizontal.
Escalabilidad horizontal. En sistemas tradicionales RDBMS, para mejorar el rendimiento
de la base de datos se adquiría una máquina más potente (escalado vertical). En
MongoDB funciona mejor el escalado horizontal (incrementar número de máquinas)
Almacenamiento Orientado a documentos (BSON)
JSON es más que una gran forma de intercambiar información, es también una excelente
forma de almacenarla
MongoDB almacena todo un registro en un mismo documento.
No hay necesidad de especificar estructura alguna y sus documentos pueden cambiarse
individualmente.
MongoDB usa BSON (Binary-JSON),un formato abierto basado en JSON que permite
manejar datos binarios,
Con el uso de BSON MongoDB es muy rápida en la
búsqueda, indexación, almacenamiento y recuperación de la información
BSON es fácil y rápidamente transformable en cualquier tipo de dato nativo
de cualquier lenguaje de programación.
Soporte a Querys dinámicas
Como en las bases de datos tradicionales, MongoDB también acepta la
ejecución de queries dinámicas (a diferencia de otras como CouchDB)

Indexación de Documentos
Todos los documentos son automáticamente indexados con una clave
llamada _id.
Esta clave nos asegura que cada documento es único,
MongoDB permite indexar documentos embebidos (se puede crear un índice
en un código postal)
Indices Geoespaciales
Permite la indexación de la información basado en la localización.
Permite crear consultas del tipo: “cuantos artículos se encuentran a cierta
distancia de un determinado conjunto de coordenadas”,
Analisis de Rendimiento de Querys
MongoDB provee una herramienta para el análisis de consultas que permite
determinar el rendimiento de nuestras consultas o conocer posibles
defectos en su estructura o simplemente mejorar el tiempo de respuesta de
las mismas.
GridFS
BSON puede almacenar hasta 4Mb de datos binarios en un documento
Si necesitamos espacio adicional (imágenes, audio, vídeo) MongoDB provee de un sistema
llamado GridFS.
GridFS permite almacenar la información del archivo (metadato) en una colección de archivos: los
datos se divide en pequeñas partes llamadas “chunks”
Replicación de Datos
MongoDB provee mecanismo llamado
replicación maestro-esclavo, con lo que solo
una base de datos está activa para escritura en
un momento dado.

Todas las peticiones de escritura se realizan en
la base de datos maestra y esta las pasa a la
réplica (esclavo)
Si la bd principal falla la esclava ocupa su lugar.
MongoDB implementa el concepto de réplica a
pares de modo que cuando falla se determina
cuál de las 2 bases de datos (maestro-esclavo)
es la que tomará el control para continuar
prestando el servicio.
Implementación de Auto Sharding
El AutoSharding es muy interesante en
despliegues a gran escala, delega en MongoDB
la separación y recombinación de los datos y el
aseguramiento de que vaya al servidor correcto y
que las querys se ejecuten y combinen de la
forma más eficiente posible.
Formato de los documentos e ideas para la
organización de datos
Los distintos documentos se almacenan en formato BSON, o Binary JSON, que es una
versión modificada de JSON que permite búsquedas rápidas de datos.
Para hacernos una idea, BSON guarda de forma explícita las longitudes de los
campos, los índices de los arrays, y demás información útil para el escaneo de datos.
Es por esto que, en algunos casos, el mismo documento en BSON ocupa un poco más
de espacio de lo que ocuparía de estar almacenado directamente en formato JSON. Pero
una de las ideas claves en los sistemas NoSQL es que el almacenamiento es barato, y es
mejor aprovecharlo si así se introduce un considerable incremento en la velocidad de
localización de información dentro de un documento.
EJEMPLO
Un ejemplo de un documento en MongoDB podría ser perfectamente éste:
{
“_id” : “4da2c0e2e999fb56bf000002”
“title” : “Una introducción a MongoDB”,
“body” : “Lorem ipsum dolor sit amet…”,
“published_at” : “2011-05-09T18:17:07-07:00”,
“author_info” : { “_id” : “4dc8919331c0c00001000002”
“name” : “Carlos Paramio” },
“tags” : [“MongoDB”, “NoSQL”, “Bases de datos”]
“comments” : [ { “author_info” : { “name” : “Jorge Rubira”, “email” :
“email1@example.com” },
“body” : “Test”, “created_at” : “2011-05-10T10:14:01-07:00” }, { “author_info” : {
“name” : “Txema Rodríguez”, “email” : “email2@example.com” },
“body” : “Otro test”,
“created_at” : “2011-05-10T10:14:09-07:00” } ]
“liked_by” : [“4d7cf768e999fb67c0000001”,“4da34c62ba875a19d4000001”] }
CONSULTAR UNA BASE DE DATOS CON MONGODB
db.posts.find({‘title’ : ‘Una introducción a MongoDB’}) El valor a consultar puede estar anidado en
un tipo de datos más completo en el atributo del documento (por ejemplo, como valor de un hash
asociado al atributo, o como el valor de uno de los ítems de un array). Se utiliza un punto como
separador de los nombres de las claves de los diferentes hashes que hay que recorrer hasta llegar al
valor deseado.
Por ejemplo, la siguiente consulta devolvería todos los posts escritos por un determinado autor:
db.posts.find({‘author_info._id’ : ‘4da2c0e2e999fb56bf000002’})
Y esta otra los posts etiquetados con MongoDB:
db.posts.find({‘tags’ : ‘MongoDB’})
El hash utilizado como conjunto de condiciones que deben cumplir los documentos a devolver
puede incluir operadores de muy diversos tipos, no sólo comparadores del valor absoluto buscado.
CONJUNTO DE CONDICIONES
Algunos de ellos son:
$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…)
CONCLUSIONES:
MONGODB ES OTRA ALTERNATIVA DE SGBD QUE COMO ESTA
EXPLICADO ANTES TIENDE A TENER MAYOR ACOGIDA CADA VEZ
QUE AVANZA EL TIEMPO DADA SU VERSATILIDAD DE CODIGO Y
ESTRUCTURA; ADEMAS DE SER NoSQL, ES UNA BUENA
HERRAMIENTA PARA LOS ADMINISTRADORES DE DB.
GRACIAS POR SU ATENCION.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

mongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y ComponentesmongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y Componentes
 
Mongo db
Mongo dbMongo db
Mongo db
 
Base de datos
Base de datosBase de datos
Base de datos
 
NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDB
 
Base de datos rodrigo
Base de datos rodrigoBase de datos rodrigo
Base de datos rodrigo
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
 
MongoDB - Madrid Devops Febrero
MongoDB - Madrid Devops FebreroMongoDB - Madrid Devops Febrero
MongoDB - Madrid Devops Febrero
 
Características MONGO DB
Características MONGO DBCaracterísticas MONGO DB
Características MONGO DB
 
Que es MongoDB
Que es MongoDBQue es MongoDB
Que es MongoDB
 
MongoDB (Conceptos Básicos) - Junio 2010
MongoDB (Conceptos Básicos) - Junio 2010MongoDB (Conceptos Básicos) - Junio 2010
MongoDB (Conceptos Básicos) - Junio 2010
 
MongoDB
MongoDBMongoDB
MongoDB
 
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
 
NoSQL - MongoDB
NoSQL - MongoDBNoSQL - MongoDB
NoSQL - MongoDB
 
Introducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBIntroducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDB
 
Mongodb
MongodbMongodb
Mongodb
 
MongoDB Avanzado
MongoDB AvanzadoMongoDB Avanzado
MongoDB Avanzado
 
MongoDB
MongoDBMongoDB
MongoDB
 
Mongo db
Mongo dbMongo db
Mongo db
 
Oracle
Oracle   Oracle
Oracle
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
 

Similar a Ultisgbd (20)

Mongo db
Mongo dbMongo db
Mongo db
 
Mongo db
Mongo dbMongo db
Mongo db
 
Mongo db
Mongo dbMongo db
Mongo db
 
MongoDB
MongoDBMongoDB
MongoDB
 
Sgbd mongodb
Sgbd   mongodbSgbd   mongodb
Sgbd mongodb
 
Act 04 rivera_alfredo_bd
Act 04 rivera_alfredo_bdAct 04 rivera_alfredo_bd
Act 04 rivera_alfredo_bd
 
Mongo bd michael landeo vargas
Mongo bd michael landeo vargasMongo bd michael landeo vargas
Mongo bd michael landeo vargas
 
Base de datos
Base de datosBase de datos
Base de datos
 
Investigación de sobre los conceptos que se deben de tratar en Mongo DB
Investigación de sobre los conceptos que se deben de tratar en Mongo DBInvestigación de sobre los conceptos que se deben de tratar en Mongo DB
Investigación de sobre los conceptos que se deben de tratar en Mongo DB
 
Base de datos
Base de datosBase de datos
Base de datos
 
mongodb.base de datis noo relacionles fr
mongodb.base de datis noo relacionles frmongodb.base de datis noo relacionles fr
mongodb.base de datis noo relacionles fr
 
Mongo db
Mongo dbMongo db
Mongo db
 
Rila
RilaRila
Rila
 
Introduccón a Mongodb
Introduccón a MongodbIntroduccón a Mongodb
Introduccón a Mongodb
 
Practica 2 base de datos
Practica 2 base de datosPractica 2 base de datos
Practica 2 base de datos
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Actividad 4
Actividad 4Actividad 4
Actividad 4
 
Act. 4 screencast y base de datos norma
Act. 4 screencast y base de datos normaAct. 4 screencast y base de datos norma
Act. 4 screencast y base de datos norma
 
¿que es mongodb?
¿que es mongodb?¿que es mongodb?
¿que es mongodb?
 
MongoDB
MongoDBMongoDB
MongoDB
 

Ultisgbd

  • 1. Universidad Peruana de Ciencias e Informática Mario Ernesto Huayta Sáenz
  • 2. INTRODUCCION MongoDB es un sistema de base de datos multiplataforma orientado a documentos, de esquema libre. Esto significa que cada entrada o registro puede tener un esquema de datos diferente, con atributos o “columnas” que no tienen por qué repetirse de un registro a otro. Está escrito en C++, lo que le confiere cierta cercanía al bare metal, o recursos de hardware de la máquina, de modo que es bastante rápido a la hora de ejecutar sus tareas. Además, está licenciado como GNU AGPL 3.0, de modo que se trata de un software de licencia libre. Funciona en sistemas operativos Windows, Linux, OS X y Solaris.
  • 3. TERMINOLOGIA BASICA En MongoDB, cada registro o conjunto de datos se denomina documento. Los documentos se pueden agrupar en colecciones, las cuales se podría decir que son el equivalente a las tablas en una base de datos relacional (sólo que las colecciones pueden almacenar documentos con muy diferentes formatos, en lugar de estar sometidos a un esquema fijo). Se pueden crear índices para algunos atributos de los documentos, de modo que MongoDB mantendrá una estructura interna eficiente para el acceso a la información por los contenidos de estos atributos.
  • 4. CARACTERISTICAS Su velocidad y su rico pero sencillo sistema de consulta de los contenidos de la base de datos. Se podría decir que alcanza un balance perfecto entre rendimiento y funcionalidad, incorporando muchos de los tipos de consulta que utilizaríamos en nuestro sistema relacional preferido, pero sin sacrificar en rendimiento. Es un SGBD No SQL. Las crecientes necesidades en cuanto a rendimiento, escalabilidad, velocidad, rendimiento han hecho que este término esté ya en nuestras vidas. Las bases de datos No SQL vencen a las BD relacionales tradicionales al no requerir un modelo estáticos y estructura de datos para almacenar la información.
  • 5. Ausencia de transacciones. (Aunque parezca un inconveniente)esto le permite a MongoDB ser más rápida y escalable a nivel horizontal. Escalabilidad horizontal. En sistemas tradicionales RDBMS, para mejorar el rendimiento de la base de datos se adquiría una máquina más potente (escalado vertical). En MongoDB funciona mejor el escalado horizontal (incrementar número de máquinas) Almacenamiento Orientado a documentos (BSON) JSON es más que una gran forma de intercambiar información, es también una excelente forma de almacenarla MongoDB almacena todo un registro en un mismo documento. No hay necesidad de especificar estructura alguna y sus documentos pueden cambiarse individualmente. MongoDB usa BSON (Binary-JSON),un formato abierto basado en JSON que permite manejar datos binarios,
  • 6. Con el uso de BSON MongoDB es muy rápida en la búsqueda, indexación, almacenamiento y recuperación de la información BSON es fácil y rápidamente transformable en cualquier tipo de dato nativo de cualquier lenguaje de programación. Soporte a Querys dinámicas Como en las bases de datos tradicionales, MongoDB también acepta la ejecución de queries dinámicas (a diferencia de otras como CouchDB) Indexación de Documentos Todos los documentos son automáticamente indexados con una clave llamada _id. Esta clave nos asegura que cada documento es único, MongoDB permite indexar documentos embebidos (se puede crear un índice en un código postal)
  • 7. Indices Geoespaciales Permite la indexación de la información basado en la localización. Permite crear consultas del tipo: “cuantos artículos se encuentran a cierta distancia de un determinado conjunto de coordenadas”, Analisis de Rendimiento de Querys MongoDB provee una herramienta para el análisis de consultas que permite determinar el rendimiento de nuestras consultas o conocer posibles defectos en su estructura o simplemente mejorar el tiempo de respuesta de las mismas.
  • 8. GridFS BSON puede almacenar hasta 4Mb de datos binarios en un documento Si necesitamos espacio adicional (imágenes, audio, vídeo) MongoDB provee de un sistema llamado GridFS. GridFS permite almacenar la información del archivo (metadato) en una colección de archivos: los datos se divide en pequeñas partes llamadas “chunks”
  • 9. Replicación de Datos MongoDB provee mecanismo llamado replicación maestro-esclavo, con lo que solo una base de datos está activa para escritura en un momento dado. Todas las peticiones de escritura se realizan en la base de datos maestra y esta las pasa a la réplica (esclavo) Si la bd principal falla la esclava ocupa su lugar. MongoDB implementa el concepto de réplica a pares de modo que cuando falla se determina cuál de las 2 bases de datos (maestro-esclavo) es la que tomará el control para continuar prestando el servicio.
  • 10. Implementación de Auto Sharding El AutoSharding es muy interesante en despliegues a gran escala, delega en MongoDB la separación y recombinación de los datos y el aseguramiento de que vaya al servidor correcto y que las querys se ejecuten y combinen de la forma más eficiente posible.
  • 11. Formato de los documentos e ideas para la organización de datos Los distintos documentos se almacenan en formato BSON, o Binary JSON, que es una versión modificada de JSON que permite búsquedas rápidas de datos. Para hacernos una idea, BSON guarda de forma explícita las longitudes de los campos, los índices de los arrays, y demás información útil para el escaneo de datos. Es por esto que, en algunos casos, el mismo documento en BSON ocupa un poco más de espacio de lo que ocuparía de estar almacenado directamente en formato JSON. Pero una de las ideas claves en los sistemas NoSQL es que el almacenamiento es barato, y es mejor aprovecharlo si así se introduce un considerable incremento en la velocidad de localización de información dentro de un documento.
  • 12. EJEMPLO Un ejemplo de un documento en MongoDB podría ser perfectamente éste: { “_id” : “4da2c0e2e999fb56bf000002” “title” : “Una introducción a MongoDB”, “body” : “Lorem ipsum dolor sit amet…”, “published_at” : “2011-05-09T18:17:07-07:00”, “author_info” : { “_id” : “4dc8919331c0c00001000002” “name” : “Carlos Paramio” }, “tags” : [“MongoDB”, “NoSQL”, “Bases de datos”] “comments” : [ { “author_info” : { “name” : “Jorge Rubira”, “email” : “email1@example.com” }, “body” : “Test”, “created_at” : “2011-05-10T10:14:01-07:00” }, { “author_info” : { “name” : “Txema Rodríguez”, “email” : “email2@example.com” }, “body” : “Otro test”, “created_at” : “2011-05-10T10:14:09-07:00” } ] “liked_by” : [“4d7cf768e999fb67c0000001”,“4da34c62ba875a19d4000001”] }
  • 13. CONSULTAR UNA BASE DE DATOS CON MONGODB db.posts.find({‘title’ : ‘Una introducción a MongoDB’}) El valor a consultar puede estar anidado en un tipo de datos más completo en el atributo del documento (por ejemplo, como valor de un hash asociado al atributo, o como el valor de uno de los ítems de un array). Se utiliza un punto como separador de los nombres de las claves de los diferentes hashes que hay que recorrer hasta llegar al valor deseado. Por ejemplo, la siguiente consulta devolvería todos los posts escritos por un determinado autor: db.posts.find({‘author_info._id’ : ‘4da2c0e2e999fb56bf000002’}) Y esta otra los posts etiquetados con MongoDB: db.posts.find({‘tags’ : ‘MongoDB’}) El hash utilizado como conjunto de condiciones que deben cumplir los documentos a devolver puede incluir operadores de muy diversos tipos, no sólo comparadores del valor absoluto buscado.
  • 14. CONJUNTO DE CONDICIONES Algunos de ellos son: $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…)
  • 15. CONCLUSIONES: MONGODB ES OTRA ALTERNATIVA DE SGBD QUE COMO ESTA EXPLICADO ANTES TIENDE A TENER MAYOR ACOGIDA CADA VEZ QUE AVANZA EL TIEMPO DADA SU VERSATILIDAD DE CODIGO Y ESTRUCTURA; ADEMAS DE SER NoSQL, ES UNA BUENA HERRAMIENTA PARA LOS ADMINISTRADORES DE DB. GRACIAS POR SU ATENCION.