Base de Datos NoSQL
¿Qué es MongoDb?
 MongoDB es una bases de datos NoSQL
cuya particularidad es que intenta unir las
ventajas de los almacenes clave-valor y
de las bases de datos relacionales clásicas
(RBDMS).
 Esta desarrollada en C++
Terminología básica
 En MongoDB, cada registro o conjunto de datos
se denomina documento, que se pueden agrupar
en colecciones, las cuales 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 se mantendrá
una estructura interna eficiente para el acceso a
la información por los contenidos de estos
atributos.
¿Cómo funciona?
 Para almacenar los documentos, se utiliza una
serialización binaria de JSON, llamada BSON, que
es una lista ordenada de elementos simples.
 El núcleo de la base de datos es capaz de
interpretar su contenido, de modo que lo que a
simple vista parece un contenido binario,
realmente es un documento que contiene varios
elementos.
 Estos datos están limitados a un tamaño máximo
de 4 MB
 Para tamaños superiores se requiere del uso de
GridFS.
 En el área funcional, MongoDB permite la
realización de operaciones de modificación
de documentos enviando solamente el
diferencial de datos, esto es, la
modificación del mismo se realiza dentro
del servidor, no en la parte cliente.
 Las escrituras a disco no son simultáneas
a la realización de la operación, sino que
difieren unos 2 segundos, en los que se
puede modificar varias veces el registro
antes de ser persistido.
¿Cómo funciona?
 En el caso de incrementar el tamaño del
documento y de que los nuevos datos no
se puedan almacenar junto los antiguos,
se mueve el documento entero hasta un
área vacía del archivo de datos (evitando
la fragmentación del mismo).
¿Cómo funciona?
¿Qué lo diferencia de otros?
 Un aspecto relevante de MongoDB es que
soporta consultas dinámicas ,pudiendo
formular sobre cualquier valor de los
documentos y no solamente en los
indexados.
 También dispone de MapReduce, por lo
que las diferencias más visibles entre
ambas bases de datos son la interfaz
entre estas y el desarrollador.
Ejemplo de un documento en
MongoDb
{
“_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”]
}
Consulta De Datos
 MongoDB permite utilizar funciones Map y
Reduce que estan escritas en Javascript para
seleccionar los atributos que nos interesan de
los datos, y agregarlos de la manera
deseada, respectivamente.
 Esto es algo habitual en muchos sistemas
NoSQL, y en algunos casos es incluso la
única forma posible de consultar datos. Claro
está que muchas veces necesitamos algo
bastante más sencillo que esto
 MongoDB se pueden utilizar consultas al
valor de un atributo específico.
 Por ejemplo, podemos capturar el post
que tiene un determinado título:
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.
Consulta De Datos
 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‟})
Consulta De Datos
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. 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.
Bd no sql

Bd no sql

  • 1.
  • 2.
    ¿Qué es MongoDb? MongoDB es una bases de datos NoSQL cuya particularidad es que intenta unir las ventajas de los almacenes clave-valor y de las bases de datos relacionales clásicas (RBDMS).  Esta desarrollada en C++
  • 3.
    Terminología básica  EnMongoDB, cada registro o conjunto de datos se denomina documento, que se pueden agrupar en colecciones, las cuales 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 se mantendrá una estructura interna eficiente para el acceso a la información por los contenidos de estos atributos.
  • 4.
    ¿Cómo funciona?  Paraalmacenar los documentos, se utiliza una serialización binaria de JSON, llamada BSON, que es una lista ordenada de elementos simples.  El núcleo de la base de datos es capaz de interpretar su contenido, de modo que lo que a simple vista parece un contenido binario, realmente es un documento que contiene varios elementos.  Estos datos están limitados a un tamaño máximo de 4 MB  Para tamaños superiores se requiere del uso de GridFS.
  • 5.
     En elárea funcional, MongoDB permite la realización de operaciones de modificación de documentos enviando solamente el diferencial de datos, esto es, la modificación del mismo se realiza dentro del servidor, no en la parte cliente.  Las escrituras a disco no son simultáneas a la realización de la operación, sino que difieren unos 2 segundos, en los que se puede modificar varias veces el registro antes de ser persistido. ¿Cómo funciona?
  • 6.
     En elcaso de incrementar el tamaño del documento y de que los nuevos datos no se puedan almacenar junto los antiguos, se mueve el documento entero hasta un área vacía del archivo de datos (evitando la fragmentación del mismo). ¿Cómo funciona?
  • 7.
    ¿Qué lo diferenciade otros?  Un aspecto relevante de MongoDB es que soporta consultas dinámicas ,pudiendo formular sobre cualquier valor de los documentos y no solamente en los indexados.  También dispone de MapReduce, por lo que las diferencias más visibles entre ambas bases de datos son la interfaz entre estas y el desarrollador.
  • 8.
    Ejemplo de undocumento en MongoDb
  • 9.
    { “_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”] }
  • 10.
    Consulta De Datos MongoDB permite utilizar funciones Map y Reduce que estan escritas en Javascript para seleccionar los atributos que nos interesan de los datos, y agregarlos de la manera deseada, respectivamente.  Esto es algo habitual en muchos sistemas NoSQL, y en algunos casos es incluso la única forma posible de consultar datos. Claro está que muchas veces necesitamos algo bastante más sencillo que esto  MongoDB se pueden utilizar consultas al valor de un atributo específico.
  • 11.
     Por ejemplo,podemos capturar el post que tiene un determinado título: 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. Consulta De Datos
  • 12.
     Se utilizaun 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‟}) Consulta De Datos
  • 13.
    El HASH  Utilizadocomo 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. 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.