MongoDB (Parte I) — Definición, un poco de su arquitectura y base de datos de colecciones con documentos
Temario
- Introducción
- ¿Qué es mongoDB?
- Un poco de arquitectura de mongoDB
- Base de datos de colecciones con documentos
i. Introducción
En esta story vamos a comprender y aprender lo esencial de mongoDB[ref], pero sin ninguna dependencia, básicamente solo vamos a ocupar nuestra terminal para trabajar.
Antes de darle de lleno al código, primero veamos un poco de teoría…
ii. — ¿Qué es mongoDB?
MongoDB es una base de datos de documentos diseñada para facilitar el desarrollo y la escalabilidad horizontal, con un modelo de consultas e indexación avanzado.
Su nombre proviene de “humongous”[ref] que podría traducirse como “enorme”, mongoDB es una base de datos NOSQL[ref], escrita en C++
y utiliza MQL
(Mongo Query Language) para las consultas.
Actualmente existen dos modelos:
- Cloud[ref] — Implementar la base de datos en la nube.
- Server[ref] — Descargar e instalar en nuestro propio servidor (empresarial y comunitario)
MongoDB es muy fácil de aprender y de usar, sin importar la escala del proyecto, proporciona de manera oficial drivers para más de 10 lenguajes (incluyendo JavaScript) y otros más que son desarrollados por la comunidad.
:: Ventajas de usar mongoDB:
- Almacena los datos en documentos similares a JSON, por lo que la estructura y los datos pueden cambiar sin problema.
- El modelo de documento se asigna a los objetos en el código de la aplicación, con el fin de facilitar el trabajo de los datos.
- Alta disponibilidad en replicación y respaldos.
- MongoDB es de uso gratuito.
iii. Un poco de arquitectura de mongoDB
MongoDB tiene tres principios o diseños básicos:
- El modelo de datos de documentos está pensada para trabajar de la mejor manera los datos.
- Tiene un diseño de sistemas distribuidos, donde nos va a permitir colocar los datos de forma inteligente.
- Puede correr en cualquier ambiente, permitiendo eliminar el bloqueo de los proveedores.
:: Plataforma de datos de MongoDB
— En la capa de datos
El servidor mongoDB es una base de datos OLTP[ref] diseñada para servir cargas de trabajo de análisis operacionales en tiempo real, por lo que es ideal:
- Cuando se esté pensando en una base de datos relacional
- Una base de datos NoSQL
- Búsqueda de datos enriquecida
- Analizar datos offline.
OLTP (Online Transaction Processing — Procesamiento de transacciones en línea), facilita y administra las aplicaciones transaccionales para entrada de datos, recuperación y procesamiento de transacciones. Los paquetes de software de OLTP se basan en la arquitectura cliente-servidor, ya que suelen ser utilizados por empresas con una red informática distribuida.
— En el desarrollo de aplicaciones
Nos va a ayudar a desarrollar aplicaciones fullstack de manera rápida y sencilla, con la ventaja de sincronizar los datos de manera automática entre cliente y la capa de datos. En la parte mobile permite configurar las aplicaciones para que siga funcionando aun sin conexión a internet.
— En la parte de base de datos del lado del cliente
Tiene soporte para consultas complejas, subprocesos seguros, y una arquitectura reactiva para crear interfaces de usuario receptivas y fluidas; con soporte multiplataforma, dando la ventaja a los desarrolladores de simplificar el código, creando experiencias potentes y atractivas.
Si quieres ver mas a detalle su arquitectura[ref].
iv. Base de datos de colecciones con documentos
Espera, espera, … ¿wtf?, para comprender mejor el título, vamos a separarlo en tres partes:
- Base de datos.
- Colecciones.
- Documentos o también llamado objetos.
:: Base de datos
Mencionamos que mongoDB es una base de datos NOSQL, esto quiere decir que es aquella que no usa el esquema tabular de filas y columnas, ya sabes las clásicas:
Las bases de datos no relacionales usan un modelo de almacenamiento que está optimizado para los requisitos específicos del tipo de dato que se almacena, por lo que NO manejan un modelo de datos relacionales.
:: Colecciones
Es aquella que administra un conjunto de campos/valores. Normalmente almacenan los datos en forma de documentos JSON.
Si queremos compararlo con una base de datos relacional, las colecciones vendrían siendo las tablas.
::Documentos
MongoDB se define como “Base de datos de documentos”, que es básicamente un documento que tiene una estructura de datos por pares de campos y valores (field: value), donde cada valor del campo puede ser cualquier “cosa”, un número, arreglo, cadena de texto e inclusive otro documento.
Como ya hemos mencionado, los documentos de mongoDB son muy similares a los objetos JSON.
La ventaja de usarlo de esta forma:
- Los objetos (documentos) son compatibles en muchos lenguajes de programación.
- Los objetos (documentos) y arreglos integrados reducen la necesidad de costosas uniones.
- El esquema dinámico permite polimorfismo fluido.
Mayormente un documento contiene todos los datos de una entidad (detalles de un cliente, pedidos, usuarios, etc).
:: Resumiendo
- Base de datos — No relacional, es aquella que NO usa el esquema tabular de filas y columnas.
- Colecciones — Digamos que son las tablas de la base de datos.
- Documento (Objeto) — Es el contenido que tiene el documento que tiene una estructura de datos por pares de campos y valores (field: value).
Teniendo en cuenta los conceptos de arriba, ha llegado el momento de instalar mongoDB…
En la siguiente entrega vamos a ver MongoDB (Parte II) — Instalando mongoBD y comandos básicos
La entrega pasada vimos React — Creando una app de Pokémon Trading Card Game con hooks (useState, useEffect y custom Hooks), estilos con react-jss, consumir servicios con Axios y el ruteo con React Router.
Bibliografía y links que te puede interesar…
Iconos e imágenes…