Universidad Dominicana O&M
NOMBRE:
Yoan
APELLIDO:
Danchet
Matricula:
17-MIIN-1-174
Materia:
Base de Datos
Tema:
Motores de base de Datos (MongoDB)
Profesor:
Starling Germosen
MONGO DB
HISTORIA
 MongoDB (de la palabra en inglés “humongous” que significa enorme) es
un sistema de base de datos NoSQL orientado a documentos, desarrollado
bajo el concepto de código abierto.
 MongoDB forma parte de la nueva familia de sistemas de base de datos
NoSQL. En lugar de guardar los datos en tablas como se hace en las base de
datos relacionales, MongoDB guarda estructuras de datos en documentos
similares a JSON con un esquema dinámico (MongoDB utiliza una
especificación llamada BSON), haciendo que la integración de los datos en
ciertas aplicaciones sea más fácil y rápida.
 El desarrollo de MongoDB empezó en octubre de 2007 por la compañía de
software 10gen. Ahora MongoDB es una base de datos lista para su uso en
producción y con muchas características (features). Esta base de datos se
utiliza mucho en la industria, contando con implantaciones en empresas
como MTV Network, Craiglist, BCI o Foursquare.
USO
 La base de datos MongoDB es adecuada para los siguientes usos:
 Almacenamiento y registro de eventos
 Para sistemas de manejo de documentos y contenido
 Comercio Electrónico
 Juegos
 Problemas de alto volumen de lecturas
 Aplicaciones móviles
 Almacén de datos operacional de una página web
 Manejo de contenido
 Almacenamiento de comentarios
 Votaciones
 Registro de usuarios
 Perfiles de usuarios
 Sesiones de datos
 etc.
 Proyectos que utilizan metodologías de desarrollo iterativo o ágiles
 Manejo de estadísticas en tiempo real
 MongoDB es utilizado para uno o varios de estos casos por varias empresas.
 Manipulación de datos: colecciones y documentos
CARACTERISTICAS
 Consultas Ad hoc
 MongoDB soporta la búsqueda por campos, consultas de rangos y
expresiones regulares. Las consultas pueden devolver un campo específico del
documento pero también puede ser una función JavaScript definida por el
usuario.
 Indexación
 Cualquier campo en un documento de MongoDB puede ser indexado, al igual
que es posible hacer índices secundarios. El concepto de índices en MongoDB
es similar a los encontrados en base de datos relacionales..
 Replicación
 MongoDB soporta el tipo de replicación primario-secundario. Cada grupo de
primario y sus secundarios se denomina replica set . El primario puede
ejecutar comandos de lectura y escritura. Los secundarios replican los datos
del primario y sólo se pueden usar para lectura o para copia de seguridad,
pero no se pueden realizar escrituras. Los secundarios tiene la habilidad de
poder elegir un nuevo primario en caso de que el primario actual deje de
responder.
 Balanceo de carga
 MongoDB se puede escalar de forma horizontal usando el concepto de
“shard”. El desarrollador elige una clave de sharding, la cual determina
cómo serán distribuidos los datos de una colección. Los datos son divididos
en rangos (basado en la clave de sharding) y distribuidos a través de
múltiples shard. Cada shard puede ser una replica set. MongoDB tiene la
capacidad de ejecutarse en múltiple servidores, balanceando la carga y/o
replicando los datos para poder mantener el sistema funcionando en caso
que exista un fallo de hardware. La configuración automática es fácil de
implementar bajo MongoDB y se pueden agregar nuevas servidores a
MongoDB con el sistema de base de datos funcionando.
 Almacenamiento de archivos
 MongoDB puede ser utilizado como un sistema de archivos, tomando la
ventaja de la capacidad que tiene MongoDB para el balanceo de carga y la
replicación de datos utilizando múltiples servidores para el
almacenamiento de archivos. Esta función se llama GridFS y es más bien
una implementación en los drivers, no en el servidor, por lo que está
incluida en los drivers oficiales que la compañía de MongoDB desarrolla.
Estos drivers exponen funciones y métodos para la manipulación de
archivos y contenido a los desarrolladores. En un sistema con múltiple
servidores, los archivos pueden ser distribuidos y replicados entre los
mismos y de una forma transparente, de esta forma se crea un sistema
eficiente que maneja fallos y balanceo de carga.
 Agregación
 MongoDB proporciona un framework de agregación que permite realizar
operaciones similares a las que se obtienen con el comando SQL "GROUP BY".
El framework de agregación está construido como un pipeline en el que los
datos van pasando a través de diferentes etapas en los cuales estos datos son
modificados, agregados, filtrados y formateados hasta obtener el resultado
deseado. Todo este procesado es capaz de utilizar índices si existieran y se
produce en memoria. Asimismo, MongoDB proporciona una función
MapReduce que puede ser utilizada para el procesamiento por lotes de datos
y operaciones de agregación.
 Ejecución de JavaScript del lado del servidor
 MongoDB tiene la capacidad de realizar consultas utilizando JavaScript,
haciendo que estas sean enviadas directamente a la base de datos para ser
ejecutadas.
Desventajas
 No implementa las propiedades ACID multidocumentos
 MongoDB garantiza ACID dentro del mismo documento. El no
implementar las propiedades ACID genera que la base de datos no asegure
la durabilidad, la integridad, la consistencia y el aislamiento requeridos
obligatoriamente en las transacciones. Es posible que en futuras versiones
esto se solucione.
 Sobre la base de este punto se detallan los cuatro siguientes:
 Problemas de consistencia
 En versiones anteriores de la base de datos las lecturas estrictamente
consistentes ven versiones obsoletas de documentos, también pueden
devolver datos incorrectos de lecturas que nunca deberían haber ocurrido.
Bloqueo a nivel de documento
MongoDB bloquea la base de datos a nivel de
documento ante cada operación de escritura. Sólo se
podrán hacer operaciones de escritura concurrentes
entre distintos documentos.
Las escrituras no son durables ni verificables
MongoDB retorna cuando todavía no se ha escrito
la información en el espacio de almacenamiento
permanente, lo que puede ocasionar pérdidas de
información. En MongoDB 2.2 se cambia el valor por
defecto para escribir en al menos una réplica, pero
esto sigue sin satisfacer la durabilidad ni la
verificabilidad.
Ventajas
 A diferencia de las base de datos relacionales, las base de datos
No SQL estan basadas en key-value pairs
 Incluyen diferentes tipos de almacenes como por ejemplo el
almacen de columna, de documentos de key value store, de
graficos, de objetos de XML y otros datos de alamcen de datos.
 Tiene una implemetacion rentable ya que no require la tarifa de
licensia hy pueden ejecutarse en hardware de bajo costo
Funcionalidad
 MongoDB está escrito en C++, aunque las consultas se hacen
pasando objetos JSON como parámetro. Es algo bastante lógico,
dado que los propios documentos se almacenan en BSON. Por
ejemplo:
 db.Clientes.find({Nombre:"Pedro"}); La consulta anterior buscará
todos los clientes cuyo nombre sea Pedro.
 MongoDB viene de serie con una consola desde la que podemos
ejecutar los distintos comandos. Esta consola está construida
sobre JavaScript, por lo que las consultas se realizan utilizando
ese lenguaje. Además de las funciones de MongoDB, podemos
utilizar muchas de las funciones propias de JavaSciprt. En la
consola también podemos definir variables, funciones o utilizar
bucles
 Si queremos usar nuestro lenguaje de programación favorito, existen
drivers para un gran número de ellos. Hay drivers oficiales para C#, Java,
Node.js, PHP, Python, Ruby, C, C++, Perl o Scala. Aunque estos drivers
están soportados por MongoDB, no todos están en el mismo estado de
madurez. Por ejemplo el de C es una versión alpha. Si queremos utilizar un
lenguaje concreto, es mejor revisar los drivers disponibles para comprobar
si son adecuados para un entorno de producción.
Curiosidades
 Las etiquetas y los comentarios están en el propio documento que
representa al post, en lugar de guardarlos en colecciones separadas y
utilizar claves foráneas para referenciar a los mismos. Sin embargo, en el
atributo “liked_by” sí que guardamos una relación de claves, que
corresponden a los usuarios que han marcado el post como que les ha
gustado. Utilizar una forma u otra dependerá de las necesidades de acceso
a estos datos En este caso, por ejemplo, sabemos que no vamos a pintar
información sobre los usuarios que han marcado un post con un “me
gusta”, pero sí queremos ver cuántos lo han marcado así, o si el usuario
actual ya lo ha marcado o no, con lo que almacenar únicamente las claves
de esos usuarios y guardar su información personal detallada en otra
colección es lo más conveniente.
Any Question?

Mongo db

  • 1.
    Universidad Dominicana O&M NOMBRE: Yoan APELLIDO: Danchet Matricula: 17-MIIN-1-174 Materia: Basede Datos Tema: Motores de base de Datos (MongoDB) Profesor: Starling Germosen
  • 2.
  • 3.
    HISTORIA  MongoDB (dela palabra en inglés “humongous” que significa enorme) es un sistema de base de datos NoSQL orientado a documentos, desarrollado bajo el concepto de código abierto.  MongoDB forma parte de la nueva familia de sistemas de base de datos NoSQL. En lugar de guardar los datos en tablas como se hace en las base de datos relacionales, MongoDB guarda estructuras de datos en documentos similares a JSON con un esquema dinámico (MongoDB utiliza una especificación llamada BSON), haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.  El desarrollo de MongoDB empezó en octubre de 2007 por la compañía de software 10gen. Ahora MongoDB es una base de datos lista para su uso en producción y con muchas características (features). Esta base de datos se utiliza mucho en la industria, contando con implantaciones en empresas como MTV Network, Craiglist, BCI o Foursquare.
  • 4.
    USO  La basede datos MongoDB es adecuada para los siguientes usos:  Almacenamiento y registro de eventos  Para sistemas de manejo de documentos y contenido  Comercio Electrónico  Juegos  Problemas de alto volumen de lecturas  Aplicaciones móviles  Almacén de datos operacional de una página web  Manejo de contenido  Almacenamiento de comentarios  Votaciones  Registro de usuarios  Perfiles de usuarios  Sesiones de datos  etc.  Proyectos que utilizan metodologías de desarrollo iterativo o ágiles  Manejo de estadísticas en tiempo real  MongoDB es utilizado para uno o varios de estos casos por varias empresas.  Manipulación de datos: colecciones y documentos
  • 5.
    CARACTERISTICAS  Consultas Adhoc  MongoDB soporta la búsqueda por campos, consultas de rangos y expresiones regulares. Las consultas pueden devolver un campo específico del documento pero también puede ser una función JavaScript definida por el usuario.  Indexación  Cualquier campo en un documento de MongoDB puede ser indexado, al igual que es posible hacer índices secundarios. El concepto de índices en MongoDB es similar a los encontrados en base de datos relacionales..  Replicación  MongoDB soporta el tipo de replicación primario-secundario. Cada grupo de primario y sus secundarios se denomina replica set . El primario puede ejecutar comandos de lectura y escritura. Los secundarios replican los datos del primario y sólo se pueden usar para lectura o para copia de seguridad, pero no se pueden realizar escrituras. Los secundarios tiene la habilidad de poder elegir un nuevo primario en caso de que el primario actual deje de responder.
  • 6.
     Balanceo decarga  MongoDB se puede escalar de forma horizontal usando el concepto de “shard”. El desarrollador elige una clave de sharding, la cual determina cómo serán distribuidos los datos de una colección. Los datos son divididos en rangos (basado en la clave de sharding) y distribuidos a través de múltiples shard. Cada shard puede ser una replica set. MongoDB tiene la capacidad de ejecutarse en múltiple servidores, balanceando la carga y/o replicando los datos para poder mantener el sistema funcionando en caso que exista un fallo de hardware. La configuración automática es fácil de implementar bajo MongoDB y se pueden agregar nuevas servidores a MongoDB con el sistema de base de datos funcionando.
  • 7.
     Almacenamiento dearchivos  MongoDB puede ser utilizado como un sistema de archivos, tomando la ventaja de la capacidad que tiene MongoDB para el balanceo de carga y la replicación de datos utilizando múltiples servidores para el almacenamiento de archivos. Esta función se llama GridFS y es más bien una implementación en los drivers, no en el servidor, por lo que está incluida en los drivers oficiales que la compañía de MongoDB desarrolla. Estos drivers exponen funciones y métodos para la manipulación de archivos y contenido a los desarrolladores. En un sistema con múltiple servidores, los archivos pueden ser distribuidos y replicados entre los mismos y de una forma transparente, de esta forma se crea un sistema eficiente que maneja fallos y balanceo de carga.
  • 8.
     Agregación  MongoDBproporciona un framework de agregación que permite realizar operaciones similares a las que se obtienen con el comando SQL "GROUP BY". El framework de agregación está construido como un pipeline en el que los datos van pasando a través de diferentes etapas en los cuales estos datos son modificados, agregados, filtrados y formateados hasta obtener el resultado deseado. Todo este procesado es capaz de utilizar índices si existieran y se produce en memoria. Asimismo, MongoDB proporciona una función MapReduce que puede ser utilizada para el procesamiento por lotes de datos y operaciones de agregación.  Ejecución de JavaScript del lado del servidor  MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas directamente a la base de datos para ser ejecutadas.
  • 9.
    Desventajas  No implementalas propiedades ACID multidocumentos  MongoDB garantiza ACID dentro del mismo documento. El no implementar las propiedades ACID genera que la base de datos no asegure la durabilidad, la integridad, la consistencia y el aislamiento requeridos obligatoriamente en las transacciones. Es posible que en futuras versiones esto se solucione.  Sobre la base de este punto se detallan los cuatro siguientes:  Problemas de consistencia  En versiones anteriores de la base de datos las lecturas estrictamente consistentes ven versiones obsoletas de documentos, también pueden devolver datos incorrectos de lecturas que nunca deberían haber ocurrido.
  • 10.
    Bloqueo a nivelde documento MongoDB bloquea la base de datos a nivel de documento ante cada operación de escritura. Sólo se podrán hacer operaciones de escritura concurrentes entre distintos documentos. Las escrituras no son durables ni verificables MongoDB retorna cuando todavía no se ha escrito la información en el espacio de almacenamiento permanente, lo que puede ocasionar pérdidas de información. En MongoDB 2.2 se cambia el valor por defecto para escribir en al menos una réplica, pero esto sigue sin satisfacer la durabilidad ni la verificabilidad.
  • 11.
    Ventajas  A diferenciade las base de datos relacionales, las base de datos No SQL estan basadas en key-value pairs  Incluyen diferentes tipos de almacenes como por ejemplo el almacen de columna, de documentos de key value store, de graficos, de objetos de XML y otros datos de alamcen de datos.  Tiene una implemetacion rentable ya que no require la tarifa de licensia hy pueden ejecutarse en hardware de bajo costo
  • 12.
    Funcionalidad  MongoDB estáescrito en C++, aunque las consultas se hacen pasando objetos JSON como parámetro. Es algo bastante lógico, dado que los propios documentos se almacenan en BSON. Por ejemplo:  db.Clientes.find({Nombre:"Pedro"}); La consulta anterior buscará todos los clientes cuyo nombre sea Pedro.  MongoDB viene de serie con una consola desde la que podemos ejecutar los distintos comandos. Esta consola está construida sobre JavaScript, por lo que las consultas se realizan utilizando ese lenguaje. Además de las funciones de MongoDB, podemos utilizar muchas de las funciones propias de JavaSciprt. En la consola también podemos definir variables, funciones o utilizar bucles
  • 13.
     Si queremosusar nuestro lenguaje de programación favorito, existen drivers para un gran número de ellos. Hay drivers oficiales para C#, Java, Node.js, PHP, Python, Ruby, C, C++, Perl o Scala. Aunque estos drivers están soportados por MongoDB, no todos están en el mismo estado de madurez. Por ejemplo el de C es una versión alpha. Si queremos utilizar un lenguaje concreto, es mejor revisar los drivers disponibles para comprobar si son adecuados para un entorno de producción.
  • 14.
    Curiosidades  Las etiquetasy los comentarios están en el propio documento que representa al post, en lugar de guardarlos en colecciones separadas y utilizar claves foráneas para referenciar a los mismos. Sin embargo, en el atributo “liked_by” sí que guardamos una relación de claves, que corresponden a los usuarios que han marcado el post como que les ha gustado. Utilizar una forma u otra dependerá de las necesidades de acceso a estos datos En este caso, por ejemplo, sabemos que no vamos a pintar información sobre los usuarios que han marcado un post con un “me gusta”, pero sí queremos ver cuántos lo han marcado así, o si el usuario actual ya lo ha marcado o no, con lo que almacenar únicamente las claves de esos usuarios y guardar su información personal detallada en otra colección es lo más conveniente.
  • 15.