Este proyecto evalúa el rendimiento de MongoDB para realizar operaciones comunes en bases de datos NoSQL, como la inserción masiva de datos, consultas, actualizaciones y eliminaciones bajo condiciones controladas.
- Descargar MongoDB Community Server desde la página oficial: MongoDB Downloads. Seleccionar la versión y el sistema operativo adecuados.
- Ejecutar el instalador descargado (
.msi) y seguir las instrucciones. - Se recomienda una instalación "Complete".
- Importante: Durante la instalación, se ofrece la opción de instalar MongoDB Compass. Es una herramienta GUI útil para administrar MongoDB, se recomienda instalarla.
- Añadir el directorio
binde MongoDB al PATH del sistema. La ruta típica esC:\Program Files\MongoDB\Server\<versión>\bin. Esto permite ejecutarmongodymongodesde cualquier terminal.
- Abrir una nueva terminal (para que los cambios en el PATH surtan efecto).
- Ejecutar
mongod. Esto iniciará el servidor de MongoDB en el puerto 27017 por defecto. Deberías ver mensajes en la terminal indicando que el servidor se está iniciando. No cierres esta terminal mientras trabajas con MongoDB. - Nueva Terminal (Cliente MongoDB): Abrir otra terminal y ejecutar
mongo. Esto abrirá la shell interactiva de MongoDB, conectándose al servidor que se está ejecutando. Si se conecta correctamente, verás el prompt>. Prueba ejecutar algunos comandos básicos comoshow dbspara listar las bases de datos. - Para detener el servidor MongoDB, regresa a la terminal donde ejecutaste
mongody presionaCtrl+C.
- Asegúrate de tener Python instalado. Se recomienda Python 3.7 o superior.
- Crear un entorno virtual:
python -m venv .venv # En Windows python3 -m venv .venv # En macOS/Linux
- Activar el entorno virtual:
.venv\Scripts\activate # En Windows source .venv/bin/activate # En macOS/Linux
- Instalar la biblioteca
pymongo:pip install pymongo
-
Crear un archivo Python (ej.
main.py). -
Añadir el siguiente código para conectar a MongoDB:
from pymongo import MongoClient try: client = MongoClient('mongodb://localhost:27017/') # Conexión local db = client['LAB2_DB'] # Selecciona o crea la base de datos collection = db['datos_prueba'] # Selecciona o crea la colección print("Conexión a MongoDB exitosa") # Ejemplo de inserción para verificar la conexión collection.insert_one({"test":"test"}) print("Inserción de prueba exitosa") # NO es necesario borrar la base de datos aquí. Se borrará al final de las pruebas. # client.drop_database("LAB2_DB") except Exception as e: print(f"Error al conectar a MongoDB: {e}") finally: client.close() # Cierra la conexión print("Conexión cerrada")
Ejecutar el script main.py. Si se imprime "Conexión a MongoDB exitosa" y "Inserción de prueba exitosa" en la consola, el entorno está configurado correctamente.
Si tienes problemas para conectar a MongoDB, sigue estos pasos:
-
Asegúrate de que
mongodse esté ejecutando: Abre una terminal y ejecutamongod. Debes ver mensajes indicando que el servidor se está iniciando. Si no se está ejecutando, la conexión fallará. -
Conexión explícita con
mongo: Si la conexión conmongo(solomongoen la terminal) falla, intenta especificar el host y el puerto:mongo --host localhost --port 27017
Ejecutar mongod con --dbpath: Este es el paso crucial para iniciar el servidor y especificar la ruta de los datos. Si no se especifica --dbpath, MongoDB intentará usar una ruta por defecto que podría no existir, generando errores.
.\mongod.exe --dbpath="C:\data\db"-
Verificar la ruta de MongoDB: Asegúrate de que la ruta al directorio
binde MongoDB esté correctamente añadida al PATH del sistema. -
MongoDB Compass:
- Abre MongoDB Compass.
- En el campo de conexión, asegúrate de que esté configurado como
mongodb://localhost:27017. - Si la conexión falla, revisa los logs de MongoDB (la terminal donde se ejecuta
mongod) para buscar mensajes de error. - Si sigues teniendo problemas, intenta la conexión desde la terminal con
mongo --host localhost --port 27017primero, y luego intenta conectar desde Compass. Esto a veces ayuda a "desbloquear" la conexión.
Evaluar el rendimiento de MongoDB en operaciones CRUD (Create, Read, Update, Delete) bajo condiciones controladas, midiendo el tiempo de ejecución de cada operación.
- Create (Inserción Masiva): Insertar un número significativo de documentos (ej. 100,000 o más para obtener resultados más representativos) en la colección.
- Read (Consulta):
- Consultas por
_id(clave primaria). - Consultas por campos indexados (ej.
email,name). - Consultas con filtros (ej.
agemayor que un valor).
- Consultas por
- Update (Actualización Masiva): Actualizar un subconjunto de documentos que cumplan con un criterio específico (ej. actualizar el campo
premium_memberpara usuarios mayores de 30). - Delete (Eliminación Masiva): Eliminar documentos que cumplan con una condición (ej. eliminar usuarios con
agemenor que 25).
Utilizar el módulo time de Python para medir el tiempo de ejecución de cada operación:
import time
start_time = time.time()
# Código de la operación a medir
end_time = time.time()
elapsed_time = end_time - start_time
print(f"Tiempo de ejecución: {elapsed_time} segundos")