Publicado el 25 de Junio del 2017
1.873 visualizaciones desde el 25 de Junio del 2017
250,4 KB
18 paginas
Creado hace 10a (23/06/2014)
MongoDB
MongoDB Proyecto
MIguel Ángel Martín Serrano
I.E.S Gonzalo Nazareno
21 Marzo, 2014
Miguel Ángel Martín Serrano
21/03/2013
MongoDB
Contenido
Descripción breve del proyecto............................................................................................................3
Definiciones.....................................................................................................................................3
Conociendo MongoDB.........................................................................................................................4
Modelado de datos...........................................................................................................................4
Tipos de datos..................................................................................................................................4
Estructura de Mongo........................................................................................................................5
Instalación y gestión básica.............................................................................................................5
Equivalencias y diferencias base de datos relacional......................................................................7
Esquema SQL en MongoDB.........................................................................................................12
Aplicación python web.......................................................................................................................13
Mantenimiento de MongoDB.............................................................................................................15
Replicación.........................................................................................................................................16
Conclusiones.......................................................................................................................................17
Miguel Ángel Martín Serrano
21/03/2013
MongoDB
Descripción breve del proyecto
Partimos de la base de que no tenemos ningún conocimiento sobre base de datos no
relacionales, excepto su existencia, y elegimos el sistema gestor de base de datos no relacional
más popular “MongoDB”, para llevar a cabo distintos objetivos.
Aquí vamos a explicar desde un punto de vista técnico en el que se tienen ya ciertos
conocimientos de base de datos relacionales.
Vamos a poner en funcionamiento un entorno, más cocnretamente una aplicación basa en
python, para usar la base de datos mongo.
Además vamos a ver cómo, una vez comprendido mongo, podemos optimizar su
funcionamiento y un mantenimiento óptimo.
Todo lo aquí descrito se va a llevar a cabo desde un sistema Linux más concretamente Debian
7 Whezzy en un entorno de pruebas nunca de producción (Aunque se va a tratar cómo si de
producción se tratara para hacerlo lo más real posible).
Definiciones
¿Que es MongoDB?
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
vez de guardar los datos en tablas como se hace en las base de datos relacionales,
MongoDB guarda estructuras de datos en documentos tipo JSON con un esquema
dinámico (MongoDB llama ese formatoBSON), haciendo que la integración de los datos
en ciertas aplicaciones sea más fácil y rápida.
¿Por que Mongo db? Ventajas y desventajas
A grosso modo, y de manera muy resumida, mongo ofrece mayor velocidad y mejor
escalabilidad que un sistema tradicional de base de datos de tipo relacional, pero no
cumple ACID: Atomicidad, Consistencia, Aislamiento y Durabilidad.
Actualmente los portales web más visitados y famosos del mundo cómo Facebook,
utilizan este tipo de base de datos por la cantidad tan grande de datos que deben de
servir en el menor tiempo posible.
Miguel Ángel Martín Serrano
21/03/2013
MongoDB
Vamos entonces a empezar con mongoDB, y comenzamos por la instalación.
Conociendo MongoDB
Modelado de datos
Una de las partes más dificiles es crear una base de datos no relacional desde cero, para ello lo
principal es tener claro los tipos de datos:
Tipos de datos
A continuación detallamos, algunos de los tipos de datos que soporta mongo:
Integer
•
• Double
• Boolean
• Date
• Timestamp
• Null
• Array
• Object
• ObjectID
Javascript
• Data Binaria
•
• String
– Números enteros.
– Números con decimales.
– Booleanos verdaderos o falsos.
– Fechas.
– Estampillas de tiempo.
– Valor nulo.
– Arreglos de otros tipos de dato.
– Otros documentos embebidos.
– Identificadores únicos creados por MongoDB al crear
documentos sin especificar valores para el campo _id.
– Punteros a archivos binarios.
– Código y funciones Javascript.
– Cadenas de caracteres.
Podemos guardar los diferentes datos, según un patrón, los dos más comúnes son:
Embeber
Este patrón se enfoca en incrustar documentos uno dentro de otro con la finalidad de
hacerlo parte del mismo registro y que la relación sea directa.
Referenciar
Este patrón busca imitar el comportamiento de las claves foráneas para relacionar
datos que deben estar en colecciones diferentes.
Miguel Ángel Martín Serrano
21/03/2013
MongoDB
Estructura de Mongo
Lo principal sería comprender cómo funciona mongo, es decir la estructura que sigue
a la hora de guardar o alojar los datos.
Mongo, puede tener varias base de datos, dentro de estas base de datos va a
guardar colecciones y las colecciones no son más que un conjunto de
documentos, los cuales guardan información a cerca de algo en concreto, con el
formato clave-valor.
Un ejemplo básico, supongamos que tenemos una base de datos llamada: EMPRESA,
dentro de esta tenemos una colección llamada TRABAJADORES, y dentro de esta
colección tenemos un documento llamado TRABAJADOR01, y dentro de estos
documentos los valores para las claves deseadas:
A continuación se detalla mejor en la imagen:
Instalación y gestión básica
Dado que estamos en un entorno Debian, MongoDB, esta en los repositorio de Debian
actualmente, así que bastaría con ejecutar:
aptget install mongodb
Miguel Ángel Martín Serrano
21/03/2013
MongoDB
Ahora ya tenemos mongo instalado en nuestra máquina. Mongo es un servicio más
cómo puede serlo MySQL o Apache, así que una de las maneras de Arrancar, parar,
reiniciar o ver el estado de el servicio es :
service mongodb [ start | stop | restart | status ]
Bueno, ahora que conocemos a mongo como servicio, vamos a usarlo, simplemente
ejecutando en la consola “mongo”, accederemos a mongo y a las bases de datos que
tengamos, si hemos utilizado mysql, el equivalente a esto sería ejecutar en la terminal
“mysql -p -u {usuario_actual}”, y cuándo ejecutamos mongo desde la línea de
comandos, da igual el usuario que estemos usando en ese momento, en el ejemplo
entramos cómo 'root', y se conecta a la base de datos por defecto, test, si no
queremos que esto suceda tendriamos que arrancar mongo con otro parametros que
veremos má adelante:
root@debian:/home/usuario# mongo
MongoDB shell version: 2.0.6
connecting to: test
>
En lo que a la gestión de usuarios se refiere, mongo por defecto no trae usuarios y
permite el acceso a todos a todas las base de datos, para cambiar esto, una de las
formas que utilizado es, editando el fichero /etc/mongodb.conf y descomentar la
línea:
auth:True
Y luego hemos creado el usuario para la base de datos empresa de la siguiente
manera, hemos accedido como root a mongo:
use empresa
db.adduser('migue','admin')
Y ya deberíamos de poder acceder a la base de datos empresa con este usuario y no
anonimamente, si hubiéramos creado el usuario con el parametro 'True' tendría solo
permisos de lectura.
Ya hemos visto cómo acceder, es hora de ver la gestión de las base de datos,
crear,borrar, listar y comandos más interesantes etc..
Miguel Ángel Martín Serrano
21/03/2013
MongoDB
> db
test
Con esta instrucción vemos la base de datos que estamos usando ahora mismo
> use pruebas
switched to db pruebas
Este comando cambia a la base de datos especificada en este caso pruebas, y si no
existe la crea.
> show dbs
local
pruebas
(empty)
Con este comando podemos ver las base de datos disponibles para el usuario
Si necesitamos ayuda, bastaría con ejecutar el comando “help” dentro de mongo o
“db.help()” para obtener ayuda a cerca de los metodos de base de datos.
Una vez que estamos dentro de una base de datos, vamos a ver cómo gestionamos la
base de datos en cuestion.
Equivalencias y diferencias base de datos relacional
A continuación mostramos algunas posibles equivalencias, lo que en una base de
datos relacional sería una relacion 1-1 en mongo se podría definir como un documento
dentro de otro así: (embeber)
Persona = {
nombre : 'Jonathan',
apellido : 'Wiesel',
genero : 'M',
documentos : {
}
pasaporte : 'D123456V7',
licencia : '345676512342',
seguro_social : 'V543523452'
}
Miguel Ángel Martín Serrano
21/03/2013
MongoDB
Lo equivalente a una relación 1-n:
Persona = {
nombre : 'Jonathan',
apellido : 'Wiesel',
genero : 'M'
}
Documentosdb.insertPersonales = {
pasaporte : 'D123456V7',
licencia : '345676512342',
seguro_social : 'V543523452'
}
Ahora supongamos otro caso una relacion 1-*, es decir una documentos puede estar
relacionado con varios:
Direccion1 = {
_id : 1,
pais : 'Venezuela',
estado : 'Distrito Capital',
ciudad : 'Caracas'
urbanizacion : 'La Florida'
Comentarios de: MongoDB Proyecto (0)
No hay comentarios