MongoDB El Principio
MongoDB El Principio
MongoDB El Principio
Agradecimientos....................................................................................................................3
Acerca del autor.....................................................................................................................4
Lo que debes saber...............................................................................................................5
Captulo 1: Introduccin a NoSQL.........................................................................................6
1.1. Qu es NoSQL?.......................................................................................................6
1.2. Qu NO es NoSQL?.................................................................................................7
1.3. Tipos de bases de datos NoSQL................................................................................7
1.3.1. Bases de datos orientadas a documentos..........................................................8
1.3.2. Bases de datos orientadas a clave/valor............................................................9
1.3.3. Bases de datos orientadas a grafos....................................................................9
1.4. Sistema de gestin de bases de datos (SGBD).......................................................10
1.5. Lista de SGBD NoSQL.............................................................................................10
1.6. Por qu usar NoSQL?............................................................................................12
Captulo 2: Conociendo MongoDB......................................................................................14
2.1. MongoDB..................................................................................................................14
2.2. Trminos bsicos entorno a MongoDB....................................................................14
2.2.1. JSON - JavaScript Object Notation...................................................................14
2.2.2. Documento........................................................................................................15
2.2.3. Coleccin...........................................................................................................15
2.3. Instalando MongoDB................................................................................................15
2.3.1. Instalacin en Linux desde la fuente.................................................................15
2.3.2. Instalacin en Linux desde los repositorios......................................................16
2.3.2.1. Instalacin en Fedora Linux, Red Hat Linux Enterprise y otras
distribuciones..........................................................................................................16
2.3.3. Instalacin en Mac OS X..............................................................................17
2.4. La consola interactiva de MongoDB.........................................................................18
2.4.1. Ayuda en la consola interactiva.........................................................................19
2.5. Conectando a una base de datos.............................................................................19
2.5.1. Seleccionando la base de datos.......................................................................19
2.6. Nuestro primer documento.......................................................................................20
3. CRUD en MongoDB.........................................................................................................21
3.1. Qu es CRUD?.......................................................................................................21
3.2. Create.......................................................................................................................22
3.2.1. insert()...............................................................................................................22
3.2.2. .save()................................................................................................................23
3.3. Read.........................................................................................................................23
3.3.1. find()...................................................................................................................24
3.3.2. findOne()............................................................................................................25
3.4. Update......................................................................................................................26
3.4.1. update().............................................................................................................26
3.5. Delete........................................................................................................................26
3.5.1. remove()............................................................................................................27
3.5.2. drop().................................................................................................................27
Lo que queda pendiente......................................................................................................29
Aportes.................................................................................................................................29
detodoprogramacion.com
Agradecimientos
A mis padres, mi hermano y mi novia por todo lo que me han podido brindar en mi
desarrollo profesional y personal.
detodoprogramacion.com
detodoprogramacion.com
detodoprogramacion.com
NoSQL o "No solamente SQL" (Not Only SQL) es un trmino acuado por
Carlo Strozzi en 1998 y nuevamente retomado por Eric Evans en 2009 y se refiere
a un conjunto de bases de datos que se diferencian en gran parte de las bases de
datos convencionales, en caractersticas tanto de uso como de implementacin;
estos tipos de bases de datos no usan SQL o al menos no como lenguaje
predeterminado para realizar las consultas. Las bases de datos NoSQL, no
soportan totalmente ACID, esto lo explica el teorema del profesor Eric Brewer,
Teorema CAP (2000), donde menciona:
Es imposible para un sistema distribuido garantizar simultneamente las
siguientes tres caractersticas:
Consistency (Consistencia): todos los nodos ven la misma data al mismo tiempo.
En primera instancia es una desventaja, pero gracias a esto permite que los
motores de bases de datos no relacionales escalen fcilmente de manera
horizontal. Para subsanar el problema de ACID, nuevamente el profesor Brewer
ide BASE (Basically Available, Soft-state, Eventually consistent) que lo conforman
los siguientes puntos:
detodoprogramacion.com
Estado "Soft": El estado del sistema puede cambiar con el tiempo, a veces
sin cualquier entrada.
bases de datos no relacionales, por lo general cada motor tiene su propio lenguaje
de consultas. Cabe destacar que la informacin no se almacena con un esquema
fijo (pero si usando almacenamiento estructurado), aun que si existe un esquema
que el DBA o el desarrollador propone con anterioridad de manera virtual, es decir,
no se crea en el motor antes de utilizar la base de datos sino al almacenar el
primer valor.
1.2. Qu NO es NoSQL?
detodoprogramacion.com
{
_id : 1 ,
nombre : "MongoDB" ,
u r l : " h t t p : / /www. mongodb . o r g " ,
t i p o : " Documental "
}
Ejemplo de un documento en Formato JSON.
detodoprogramacion.com
Este tipo de bases de datos es muy similar a las bases de datos documental
en el concepto de guardar la informacin con el modelo clave:valor, la diferencia
radica en que un documento se almacena en una clave; esta definicin puede
parecer algo abstracta. Esto se explica mejor con un ejemplo. El siguiente ejemplo
utiliza el documento de la seccin anterior:
mongodb => {
_id : 1 ,
nombre : "MongoDB" ,
u r l : " h t t p : / /www. mongodb . o r g " ,
t i p o : " Documental "
}
detodoprogramacion.com
detodoprogramacion.com
MongoDB
Lanzamiento: 2008
Licencia: GNU AGPL v3.0
CouchDB
Lanzamiento: 2005
Licencia: Apache License 2.0
Raven DB
Lanzamiento: 2010
Licencia: GNU AGPL v3.0
detodoprogramacion.com
Licencia: BSD
detodoprogramacion.com
detodoprogramacion.com
JSON
es
formato
compacto
de
representacion
de
objetos.
Las
detodoprogramacion.com
2.2.2. Documento
2.2.3. Coleccin
detodoprogramacion.com
descomprimirlos y usarlos.
mongodb: Contiene todos los paquetes cliente, como es el caso del cliente
mongo, la herramienta para respaldos en binarios de bases de datos
mongodump,
mongorestore
para
recuperar
respaldos
en
binario,
detodoprogramacion.com
componentes
mongodb
mongodb-server
se
pueden
instalar
Instalacin Manual
Puede descargar la ltima versin disponible de MongoDB para Mac OS X
detodoprogramacion.com
curl -O http://downloads.mongodb.org/mongodb-osx-x86_64XXX.tgz
Siendo XXX, la versin disponible. Ahora, se descomprime el archivo usando
la herramienta tar.
brew update
brew install mongodb
detodoprogramacion.com
almacenar
un
documento
creando
una
coleccin
de
documentos.
Antes de seleccionar una base de datos, uno tiene la opcin de ver el listado
de bases de datos que existen en el sistema, con el comando show dbs; la salida
de este comando nos muestra el nombre y el tamao de la base de datos, es
importante mencionar que MongoDB al crear el primer documento reserva espacio
en disco, como mnimo 200 mb.
Luego de saber la lista de bases de datos existente, se debe seleccionar una
(no es obligatorio que est en la lista), para seleccionar la base de datos se hace
detodoprogramacion.com
uso del comando use basededatos, y ya podemos trabajar con la base de datos
existente u operar para crear una nueva.
Lleg la hora de crear una base de datos y una coleccin, y eso se har
almacenando un documento usando el objeto db, previa ejecucin del comando
use. Un documento puede tener en teora un mximo de hasta 16MB de
informacin.
Aprovechando el ejemplo del primer captulo, para por fin almacenarlo en
MongoDB y consultarlo. Una de las cosas que hay que tener en cuenta usando la
consola interactiva, es usar variables para crear o modificar documentos, de esta
manera podemos evitar accidentes con una mala manipulacin directa de la base
de datos.
Para almacenar un documento debemos ejecutar el mtodo .insert() del
objeto db, especificando el nombre de la coleccin (la coleccin se crea de manera
dinmica como la base de datos). Ejemplo:
> documento = {
_id : 1 ,
nombre : "MongoDB" ,
url: " http://www.mongodb.org",
tipo: "Documental"
}
> db.nueva_coleccion.insert(documento)
De esta manera tenemos nuestra primera coleccin y nuestro primer
documento, para confirmar esto, podemos ejecutar tanto el comando show
detodoprogramacion.com
> db.nueva_coleccion.find( )
{
"_id" : 1 ,
"nombre" : "MongoDB" ,
"url": "http://www. mongodb.org" ,
"tipo" : "Documental"
}
3. CRUD en MongoDB
3.1. Qu es CRUD?
detodoprogramacion.com
tratamiento de la informacin.
MongoDB provee un grupo de mtodos en JavaScript para realizar CRUD en
nuestras bases de datos a travs de la consola y los drivers de los distintos
lenguajes de programacin.
3.2. Create
3.2.1. insert()
detodoprogramacion.com
3.3. Read
detodoprogramacion.com
3.3.1. find()
detodoprogramacion.com
3.3.2. findOne()
detodoprogramacion.com
3.4. Update
3.4.1. update()
db.collection.update (
<consulta - criterios>,
<documento_modificado >,
{upsert: true | false, multi : true | false }
)
La opcin upsert, permite agregar un documento si no existe, siempre y
cuando esta opcin est activada.
3.5. Delete
detodoprogramacion.com
3.5.1. remove()
del
3.5.2. drop()
detodoprogramacion.com
detodoprogramacion.com
Escalamiento horizontal.
Aportes
Si deseas realizar algn aporte al libro, puedes enviar un correo a
[email protected], indicando sugerencias, errores y lo que te gustara
que se agregara en el tomo o en futuros tomos; todas tus opiniones sern
bienvenidas.
detodoprogramacion.com
detodoprogramacion.com