MongoDB es un sistema de gestión de bases de datos NoSQL (No Relacional) de código abierto, diseñado para superar las limitaciones de las bases de datos relacionales tradicionales. Su nombre proviene de la palabra "humongous", que en inglés significa "enorme", lo que refleja su capacidad para manejar grandes volúmenes de datos de manera eficiente.
Características Principales de MongoDB
No Relacional: A diferencia de las bases de datos relacionales (como MySQL o PostgreSQL), MongoDB almacena datos en documentos JSON (BSON en su implementación interna), lo que proporciona una gran flexibilidad en el manejo de datos sin esquemas estrictos.
Escalabilidad Horizontal: MongoDB es ideal para aplicaciones que requieren escalabilidad. Puedes distribuir los datos en múltiples servidores (sharding) para manejar grandes cantidades de tráfico o datos.
Flexibilidad: Permite almacenar datos de forma dinámica, lo que significa que diferentes documentos en una colección pueden tener estructuras variadas. Esto lo hace ideal para aplicaciones que necesitan evolucionar sin modificaciones complejas en el esquema.
Casos de Uso Comunes
- Aplicaciones Web: MongoDB es muy popular en el desarrollo de aplicaciones web debido a su capacidad para manejar datos no estructurados y su facilidad de integración con stacks tecnológicos modernos como MERN (MongoDB, Express, React, Node.js).
- Big Data: Es adecuado para sistemas de análisis de datos masivos, ya que puede manejar grandes volúmenes de información distribuidos.
- Aplicaciones Móviles: Su flexibilidad y capacidad para sincronizar datos en tiempo real lo hacen excelente para apps móviles y aplicaciones en la nube que requieren escalabilidad y alta disponibilidad.
Mongodb vs Mysql
1. Tipo de Base de Datos
- MongoDB: Es una base de datos NoSQL (No Relacional), diseñada para almacenar y gestionar datos no estructurados o semi-estructurados.
- MySQL: Es una base de datos relacional que organiza los datos en tablas con un esquema fijo, utilizando el lenguaje SQL para gestionar y consultar la información.
2. Modelo de Datos
- MongoDB: Almacena los datos en formato de documentos JSON/BSON, lo que permite flexibilidad. Los documentos en una misma colección pueden tener diferentes estructuras.
- Documento : Es la unidad básica de almacenamiento de datos. Es similar a una fila en una base de datos relacional.
- Colección : Es un grupo lógico de documentos que comparten una estructura similar o están relacionados temática mente, similar a una tabla en una base de datos relacional.
- MySQL: Usa un modelo basado en tablas con filas y columnas, y exige un esquema definido. Todos los registros de una tabla deben seguir la misma estructura.
3. Consultas
- MongoDB: Utiliza su propio lenguaje de consultas basado en JSON, facilitando las operaciones en documentos anidados y arrays.
- MySQL: Se basa en SQL (Structured Query Language), un estándar bien conocido para bases de datos relacionales, con un poderoso sistema de consulta, especialmente para relaciones complejas.
4. Escalabilidad
- MongoDB: Ofrece escalabilidad horizontal mediante sharding (distribución de datos entre varios servidores). Es ideal para aplicaciones que manejan grandes volúmenes de datos.
- MySQL: Es escalable principalmente de manera vertical (mejorando el hardware del servidor). También soporta particionado, pero la escalabilidad horizontal es más compleja de implementar.
5. Transacciones
- MongoDB: A partir de la versión 4.0, MongoDB admite transacciones ACID, aunque no es tan robusto en este aspecto como MySQL.
- MySQL: Tiene un completo soporte para transacciones ACID, lo que lo hace ideal para aplicaciones que requieren integridad y consistencia de datos, como sistemas financieros.
6. Velocidad y Rendimiento
- MongoDB: Es más rápido en escenarios que requieren manejar grandes volúmenes de datos no estructurados, y cuando la flexibilidad es clave. Es muy eficiente para operaciones de lectura y escritura en datos semi-estructurados.
- MySQL: Es más eficiente para realizar consultas complejas sobre datos bien estructurados y en aplicaciones que requieren muchas operaciones con relaciones entre tablas (JOIN).
7. Relaciones de Datos
- MongoDB: No maneja relaciones de datos de manera estricta. Aunque puedes relacionar documentos, no soporta JOIN nativamente. Las relaciones se manejan embebiendo documentos o referenciándolos.
- MySQL: Está optimizado para manejar relaciones complejas entre tablas, permitiendo realizar operaciones JOIN de manera nativa y eficiente.
8. Integridad de Datos
- MongoDB: No garantiza la integridad referencial, ya que no hay claves foráneas ni relaciones estrictas entre documentos.
- MySQL: Garantiza la integridad referencial mediante claves foráneas y las reglas ACID, asegurando que los datos entre tablas relacionadas se mantengan consistentes.
9. Casos de Uso
- MongoDB: Es ideal para aplicaciones web modernas, sistemas que manejan grandes volúmenes de datos (big data), análisis en tiempo real y aplicaciones móviles que requieren flexibilidad en los datos.
- MySQL: Es ideal para aplicaciones donde la integridad de los datos es crítica, como en sistemas financieros, ERP, CRM, y otras aplicaciones que requieren relaciones complejas y consistencia de datos.
10. Almacenamiento
- MongoDB: Almacena datos en documentos BSON (JSON binario), que permiten estructuras más dinámicas y flexibles, como arrays y objetos anidados.
- MySQL: Los datos se almacenan en tablas rígidas con un esquema fijo, lo que puede hacer que sea menos flexible, pero más eficiente para consultas estructuradas.
Tabla "clientes" en MySQL:
id | nombre | direccion | telefono |
---|---|---|---|
1 | Juan Pérez | Calle 123, Ciudad A | +1 123-456-7890 |
2 | María López | Av. Principal, Ciudad B | +1 987-654-3210 |
3 | Pedro Gómez | Carrera 45, Ciudad C | +1 555-123-4567 |
- Desplázate hacia abajo hasta la sección "Community Server" y haz clic en el botón "Descargar".
- Selecciona la versión de Windows que corresponda a tu sistema operativo (por ejemplo, Windows Server 2019, Windows 10, etc.).
- Descarga el archivo .msi correspondiente a tu arquitectura (32 bits o 64 bits). La versión de 64 bits es más común y recomendada.
- Ejecuta el archivo .msi que acabas de descargar.
- En la pantalla de "Seleccione los elementos que desea instalar", asegúrate de seleccionar "Install MongoDB Compass" para obtener una interfaz gráfica opcional para administrar la base de datos (MongoDB Compass).
- Asegúrate de que la carpeta "bin" dentro de la carpeta de instalación de MongoDB esté agregada a la variable de entorno PATH de tu sistema. Esto permitirá que puedas acceder a los comandos de MongoDB desde cualquier ubicación en la línea de comandos.
- sudo apt update
- sudo apt install mongodb
- sudo systemctl enable mongod
- sudo systemctl start mongod
- sudo systemctl status mongod
MongoDBdb.clientes.find({ nombre: 'Juan Pérez' });MySqlSELECT * FROM clientes WHERE nombre = 'Juan Pérez';
MySqlSELECT * FROM clientes WHERE nombre LIKE 'Juan%';MongoDBdb.clientes.find({ nombre: { $regex: "Juan" } });
db.clientes.createIndex({ nombre: "text" });
db.clientes.find({ $text: { $search: "Juan" } });
Conclusión
MongoDB es una solución poderosa para escenarios donde la escalabilidad, la flexibilidad y el rendimiento son fundamentales. Debido a estas características, ha ganado popularidad en una amplia variedad de industrias y casos de uso, desde startups hasta grandes corporaciones..
Listo estos ya en la próxima entrada vamos aprender un poco de git y a la practica desde Visual Studio con lo que se lleva hasta ahora.
Comentarios
Publicar un comentario