Está en la página 1de 59

We make

it happen

Introducción MongoDB:

eae.es
Para modificar título del PPT, cambiar pie de página

Índice

01. Introducción
02. Términos Básicos
03. Características Pricipales
04. ¿Por qué usar MongoDB?
05. Instalación y uso
06. Consola y MongoDB Atlas
2
1 Introducción

MongoDB

• Cada vez más información del cual hay que sacar valor y ofrecer
mejores soluciones
• La rapidez en el almacenado y en el análisis de esa información es
muy importante.
• Muchos de los datos que hoy surgen no son estructurados, por lo
que necesitamos bases de datos capaces de almacenarlos y
procesarlos de la forma más rápida posible.
• Es en este ámbito en el que surge MongoDB.

3
1 Introducción

MongoDB

• MongoDB es un sistema de bases de datos no relacionales,


multiplataforma e inspirada en el tipo de bases de datos
documental.
• Su nombre proviene del término en inglés "humongous"
(Gigantesco).
• Está liberada bajo licencia de software libre, específicamente GNU
AGPL 3.0 .
• MongoDB usa el formato BSON (JSON Compilado) para guardar la
información, dando la libertad de manejar un esquema libre.

4
1 Introducción

MongoDB

Fuente DB-Engines.com

5
1 Introducción

MongoDB
Fuente DB-Engines.com

6
1 Introducción

MongoDB

Fuente DB-Engines.com

7
1 Introducción

MongoDB

Fuente DB-Engines.com

8
1 Introducción

MongoDB

• El desarrollo de MongoDB comenzó en el año 2007 por la empresa


10gen (ahora llamada MongoDB Inc.)

• En 2009 MongoDB fue lanzado como un producto independiente y


publicado bajo la licencia de código abierto AGPL

• En marzo de 2011, se lanzó la versión 1.4 y se consideró ya como


una base de datos lista para su uso en producción.

9
1 Introducción

MongoDB

• Actualmente se encuentra en la versión 4.0.6


• Se puede descargar de https://www.mongodb.com/download-
center#community

10
1 Introducción

MongoDB

• El desarrollo de MongoDB comenzó en el año 2007 por la empresa


10gen (ahora llamada MongoDB Inc.)

• En 2009 MongoDB fue lanzado como un producto independiente y


publicado bajo la licencia de código abierto AGPL

• En marzo de 2011, se lanzó la versión 1.4 y se consideró ya como


una base de datos lista para su uso en producción.

11
Para modificar título del PPT, cambiar pie de página

2. Términos básicos

eae.es
12
2 Términos Básicos

MongoDB

• Los términos que más se van a manejar a la hora de trabajar con


mongoDB son:

• JSON-BSON
• Documento
• Colección
• Base de datos
• Drivers

13
2 Términos Básicos

JSON

• JSON (JavaScript Object Notation - Notación de Objetos de


JavaScript)

• Formato ligero de intercambio de datos.

• Leerlo y escribirlo es simple para humanos, mientras que para las


máquinas es simple interpretarlo y generarlo.

14
2 Términos Básicos

JSON

• JSON nació como una alternativa a XML

• Una de las mayores ventajas que tiene el uso de JSON es que


puede ser leído por cualquier lenguaje de programación.

• Por lo tanto, puede ser usado para el intercambio de información


entre distintas tecnologías.

15
2 Términos Básicos

JSON

• Ficheros JSON son mas pequenos que los bien disenados de XML
• XML (98 caracteres)
<user>
<firstname>Ryan</firstname>
<lastname>Mitchell</lastname>
<username>Kludgist</username>
</user>
• JSON (73 caracteres)
{"user":{"firstname":"Ryan","lastname":"Mitchell","username":"Klu
dgist"}}

16
2 Términos Básicos

JSON
{
{"Fruteria":"Frutería Perales"},
{"Genero": [
{"Fruta": [
{"Nombre":"Manzana","Cantidad":10},
{"Nombre":"Pera","Cantidad":20},
{"Nombre":"Naranja","Cantidad":30}
] },
{"Verdura: [
{"Nombre":"Lechuga","Cantidad":80},
{"Nombre":"Tomate","Cantidad":15},
{"Nombre":"Pepino","Cantidad":50}
] }
] }
}
17
2 Términos Básicos

Tipos de datos JSON

• Números
• Cadenas
• Booleanos
• null: Representan el valor nulo.
• Array: Representa una lista ["juan","pedro","jacinto"]
• Objetos: Son colecciones no ordenadas de pares de la forma
<nombre>:<valor> separados por comas y puestas entre llaves

18
2 Términos Básicos

Tipos de datos JSON

• Extensión de JSON que se representa de manera binaria.

• BSON tiene más tipos de datos que JSON.

• Acelera el acceso a la información contenida en un documento y


Ocupa menos que un fichero JSON

• En cualquier caso, el driver es el encargado de convertir la


información en/de BSON

19
2 Términos Básicos

Tipos de datos JSON

• En cualquier caso, el driver


es el encargado de convertir la
información en/de BSON

20
2 Términos Básicos

BSON

• JSON no dispone de un tipo de datos específico para la fechas, ni


para almacenar el contenido de un fichero.

• BSON proporciona tipos de datos que no existen en JSON, como


Date para fechas, BinData para información binaria (ficheros),
ObjectId para valores únicos (generalmente usado para el campo
_id de las colecciones),…

21
2 Términos Básicos

BSON

• JSON no dispone de un tipo de datos específico para la fechas, ni


para almacenar el contenido de un fichero.

• BSON proporciona tipos de datos que no existen en JSON, como


Date para fechas, BinData para información binaria (ficheros),
ObjectId para valores únicos (generalmente usado para el campo
_id de las colecciones),…

22
2 Términos Básicos
Tipos de datos BSON - ObjectId
• Es pequeño, casi único, rápido de crear y ordenado.

• Consta 12 bytes  24 dígitos hexadecimales:


o Cuatro para guardar los segundos desde el 1 de enero de 1970,
o Tres para identificar la máquina,
o Dos para identificar el proceso,
o Tres para un contador.
2 Términos Básicos

Tipos de datos BSON - ObjectId

• Cuando se generan dos valores en el mismo segundo, en la misma


máquina y desde el mismo proceso, el primero tendrá un valor
aleatorio en el contador, y el segundo el anterior valor aleatorio
más uno.

• Se utiliza mucho como identificador de documentos, para


diferenciar unívocamente unos de otros.

• En la consola para crear uno ejecutamos el comando ObjectId().


2 Términos Básicos

• Numéricos:
o Enteros de 4 u 8 bytes, y reales de 8 bytes. Un valor numérico entero
por defecto utiliza 4 bytes, mientras que un valor numérico real por
defecto utiliza el tipo Double de 8 bytes.
o Para que un entero utilice 8 bytes hay que indicar explícitamente
NumberLong().

• String:
o utiliza UTF-8, lo que permite almacenar todo clase de
caracteres internacionales. Cualquier valor encerrado entre
comillas es por defecto un String.

• Timestamp:
o consta de 64 bits. 32 para los segundos desde el 1 de enero
de 1970 y 32 para un ordinal que distingue operaciones
dentro de un mismo segundo.
2 Términos Básicos

• Datetime
o (Date en MongoDB): consta de 64 bits, que representan los milisegundos
desde el 1 de enero de 1970.
o Los números negativos son fechas anteriores. Con esto tenemos un rango
de unos 292 millones de años antes y después de la citada fecha.
o En la consola para utilizar el día y la hora actual podemos utilizar new
Date() ó ISODate().

• BinData:
o es un array de datos binarios que puede ser utilizado para guardar el
contenido de ficheros, por ejemplo.
o Se suele utilizar con los drivers, no desde la consola de MongoDB.
2 Términos Básicos

GridFS.
• En MongoDB, un documento BSON no puede ser superior
a 16 MB

• Así que independientemente del tipo de datos que


estemos utilizando, para documentos grandes tenemos
que utilizar GridFS.

• Básicamente lo que hace es dividir los documentos en


trozos iguales (255 KBytes), y guardar cada uno de estos
trozos en un documento (CHUNK).
2 Términos Básicos
Documento
• Un documento es una Unidad básica de datos, conjunto de datos
estructurados (no con un esquema estricto), que contiene pares
clave/valor
• Un documento puede ser comparado con una fila o registro en una base
de datos relacional.

Estructura:
2 Términos Básicos

Documento
• El valor de un campo puede ser cualquiera de los tipos de datos de
BSON incluyendo otros documentos, arrays o arrays de documentos.

• Las claves no pueden contener el carácter punto (.) ni comenzar por


dólar ($)

• Case-sensitive

• No pueden existir dos claves iguales dentro de un mismo documento →


o No falla, simplemente no la incluye

• Deben ser inferiores a 16 Mb


2 Términos Básicos

Documento
• Todos los documentos tienen siempre una clave _id
• Si no se especifica, se crea automáticamente
• El _id generado automáticamente es del tipo
ObjectId de BSON
o Único e inmutable
o Automáticamente se crea un índice por _id
2 Términos Básicos

Colección
Los documentos se almacenan en colecciones
2 Términos Básicos

Base de datos
• Las colecciones se agrupan en una base de datos

• Cada base de datos tiene sus propios permisos y


ficheros en disco

• Sólo caracteres alfanuméricos → < 64 caracteres

• Nombres reservados: admin, local, config


2 Términos Básicos

Drivers
• Para que cualquier aplicación se comunique
adecuadamente con MongoDB utilizamos un driver.

• Para guardar información en MongoDB (o para recuperarla)


tenemos que utilizar la sintaxis propia de MongoDB,
MongoDB Wire Protocol (MWP) y BSON.

• MongoDB cuenta con drivers para una gran cantidad de


lenguajes de programación, aunque no para todos los
existentes.
2 Términos Básicos

Drivers
Drivers disponibles para los lenguajes de programación
más usados
Para modificar título del PPT, cambiar pie de página

3 Características Principales

eae.es
35
3 Características Principales

• MongoDB es la base de datos NoSQL líder del


mercado debido principalmente a las siguientes
características:

• Base de datos orientada al documento


• Alto rendimiento
• Alta disponibilidad
3 Características Principales

Orientada al documento
• Una base de datos documental o base de datos orientada a
documentos está constituida por un conjunto de programas que
almacenan, recuperan y gestionan datos de documentos o datos de
algún modo estructurados o semiestructurados.

• A diferencia de las bases de datos relacionales, estas bases de datos


están diseñadas alrededor de una noción abstracta de "Documento".

• Estos documentos contienen alguna información similar y otra


diferente.

• En el lado contrario una base de datos relacional todos los registros


deben tener los mismos atributos que pueden estar vacíos.
3 Características Principales

Orientada al documento
3 Características Principales
3. Características Principales
Alto rendimiento
• Indexación:
o cualquier campo en un documento de
MongoDB puede ser indexado y es posible
realizar índices secundarios, similar a las
bases de datos relacionales.

• Escalado horizontal.
o Proceso automático por el cuál combina
equipos/servidores con características
similares para que trabajen coordinadamente
y puedan repartirse el trabajo (balanceo de
carga)
3 Características Principales

Alto rendimiento

Mejor localización de Cache en memoria Actualizaciones en el


lugar
la información
3 Características Principales

Alta disponibilidad
• Asegurar la disponibilidad de la aplicación frente a distintos tipos de
fallos, recuperación de desastres, mantenimiento-actualizaciones sin
corte del servicio

• Replicación de los datos a través de distintas instancias y


computadores para asegurar que la información esté siempre
disponible y reducir los riesgos de pérdida o corrupción de la misma.

• En MongoDB, al grupo de instancias que poseerán la misma


información se les denomina replica sets o grupo de replicas.
3 Características Principales

Alta disponibilidad
• Un replica set en MongoDB está
compuesto por 2 tipos principales
de miembros:
• instancias primarias
• instancias secundarias

• Una única instancia primaria la cual


aceptará todas las operaciones de
escritura provenientes de los
sistemas cliente.
Para modificar título del PPT, cambiar pie de página

4 ¿Por qué usar MongoDB?

eae.es
43
4. ¿Por qué usar mongoDB?

• Fácil curva de aprendizaje:


• open source,
• drivers para los lenguajes más usados

• Cómodo para los desarrolladores:


• esquema dinámico,
• orientado a documentos,
• lenguaje flexible, índices, etc.

• Pensado para escalar fácilmente:


• sharding,
• replicación asíncrona, etc.
4. ¿Por qué usar mongoDB?

• Aplicaciones
• Waze. Aplicación de navegación con unos 10
millones de usuarios en su pico de máximo
uso
• Tinder
• Clash of Clans
• Empresas
• Metlife
• BOSCH
• The Weather Channel
Para modificar título del PPT, cambiar pie de página

5 Instalación y uso

eae.es
46
5. Instalación

• Lo primero que tenemos que hacer para instalar MongoDB es ir a su página


de oficial, que es mongoDB.org, y desde ahí podemos navegar a la zona de
descarga.
https://www.mongodb.com/download-center#community

• Podremos seleccionar entre las siguientes versiones ordenadas de más


recomendables a menos
• Windows 64-bit 2008 R2+: Funciona solamente para Windows Server 2008 y de Windows 7 en
adelante (siempre 64-bit). Aprovecha las últimas mejoras de la plataforma Windows.
• Windows 64-bit 2008 R2+ legacy: Funciona con Windows Server 2008 y de Windows Vista en
adelante (siempre 64-bit).
• Windows 64-bit legacy: Funciona en Windows Server 2003, Windows Server 2008 y de Windows
Vista en adelante (siempre 64-bit).
• Windows 32-bit: Si tienes un ordenador de 32-bit estás obligado a usar este. Pero solamente podrás
tener bases de datos de 2Gb como mucho.
5. Instalación

• Una vez instalado configuramos la variable path del sistema


indicando la ruta a la carpeta bin de la instalación.
• Antes de ejecutarlo se necesita especificar el directorio donde se
alojará la base de datos.
• Por defecto, MongoDB buscará el directorio /data/db y si no lo
encuentra, se producirá un error como el siguiente:

****************************************************************
******************
ERROR: dbpath (/data/db/) does not exist. Create this directory or
give existing directory in --dbpath. See
http://dochub.mongodb.org/core/startingandstoppingmongo
****************************************************************
*******************
5. Instalación

• Ya estaría el sistema listo para entrar a la base de datos y


comenzar a trabajar con ella.

• Para ello después de tener el servicio de MongoDB corriendo,


ejecutaremos el comando mongo y esto nos llevará a la
consola interna de la instancia.

• Para ir a la consola de MongoDB en sistemas Windows


después de iniciar el servicio, ejecuta el archivo
C:\mongodb\bin\mongo.exe
Para modificar título del PPT, cambiar pie de página

6. Consola y MongoDB
Compass

eae.es
50
6. Consola
• Comando mongod. Esto iniciará el servicio de MongoDB, como
esta configurada la varible path puedo ejecutarlo directamente
desde cualquier directorio.
• Si se necesita ayuda para ver las opciones que se pueden pasar para
arrancar el servicio se puede introducir mongod --help
apareciendo un listado con todas las opciones y propiedades que
tiene.
6. Consola

• Esto iniciará el servicio de MongoDB, debería aparecer “waiting for


connections on port 27017”.
• Una vez arrancado el servicio podemos comprobar que todo esta correcto accediendo
localhost:27017 y viendo el siguiente mensaje.

"It looks like you are trying to access MongoDB over HTTP on the native driver port."

• Una vez que tenemos el servicio MongoDB iniciado, podemos conectarnos a él usando el
comando:
mongo
• Cuando arrancamos la consola de esta manera y sin parámetros, la misma se conecta a una
base de datos llamada “test” en la que podemos hacer nuestras primeras pruebas
6. Consola

• Si queremos conectarnos a una base de datos que está en otra


máquina y escuchando por un puerto que no es el de por defecto

mongo maquina:puerto/bbdd

• para ver las distintas opciones de conexión el comando db nos


devuelve el nombre de la bbdd a la que estamos conectados
>mongo -h
o
>mongo --help
6. Consola

• Creando/Usando una base de datos:


Una vez estamos conectados nos puede interesar conocer que
base de datos estamos manejando mediante el comando
> db
• Para crear una nueva base de datos llamada “pruebas” tan solo
debemos escribir el siguiente comando:
>use pruebas
>switched to db pruebas

• Este comando creara la base de datos “pruebas” y nos moverá hacia


ella, una detalle en este comando es que si por ejemplo la base de
datos ya existe, tan solo nos mueve hacia ella para poder usarla, en
caso de no existir la base de datos, el sistema la crea.
6. Consola

Listando las bases de datos


• Si queremos obtener un listado de las bases de datos que están en
nuestra instancia MongoDB tan solo tecleamos:
>show dbs
• Esto nos mostrara las bases de datos que tenemos en nuestro servidor
con el tamaño que ocupan en memoria.
>show dbs
admin 0.203353 GB
local 0.313658 GB
pruebas 0.113456 GB
test 0.632481 GB
6. Consola

Listando colecciones
• Una vez estamos dentro de una base de datos puede interesar
conocer las colecciones que lo componen
>show collections

Consola y Javascript
• Desde la consola podemos realizar operaciones contra el servidor.
• Interpreta Javascript.
• Hasta la version 2.2 de mongodb se usaba el motor de javascript
Spider Monkey y a partir de 2.4 se utiliza el motor de javascript de
Google V8.
6. Consola

Carga de ficheros
• Se pueden cargar archivos javascript con declaración de variables, funciones
o colecciones.
>mongo localhost:37017/curso archivo.js --> Carga el archivo js en el
servidor indicado

>mongo localhost:37017/curso --shell archivo.js --> Abre consola nueva


>load ("archivo.js")

• Los comandos que se escriben en consola no se escriben igual en javascript


Ej show collections ---- db.getCollectionNames()
6. Consola

Importar datos
• La importación de datos en una base de datos se realiza con la sentencia
mongoimport

• Se puede consultar la ayuda de la sentencia introduciendo por consola


>mongoimport –help

• Ejemplo de uso
>mongoimport --host localhost --db curso --collection lecturer --
type json --file "c:\mongodb\data\db\datosImportar.json "
We make
it happen

FIN UNIDAD

Click para editar el tercer nivel

eae.es

También podría gustarte