DEV Community

Adrian Gonzalez
Adrian Gonzalez

Posted on

Optimización de almacenamiento en MongoDB y reducción de costos con AWS

En algunos casos, la gestión del almacenamiento en MongoDB puede representar un desafío, ya que su capacidad está estrechamente vinculada al rendimiento de la base de datos. Esto significa que, cuando se alcanza el límite de almacenamiento, la única opción es escalar a una instancia más grande, lo que no solo incrementa el espacio disponible, sino también la capacidad de cómputo, generando costos adicionales innecesarios.

Para optimizar el almacenamiento sin afectar el rendimiento ni aumentar los gastos operativos, se puede implementar una solución basada en los servicios de Amazon Web Services (AWS). El primer paso consiste en realizar un respaldo completo de los datos y almacenarlo en un bucket de Amazon S3, con la opción de archivarlos posteriormente en Amazon S3 Glacier Deep Archive para almacenamiento a largo plazo. Esto permite reducir el tamaño de la base de datos en MongoDB eliminando registros antiguos que no requieren acceso inmediato.

Como solucion principal y para evitar que este problema se repita en el futuro, se estableció un mecanismo de sincronización automática mediante Mongo Atlas y trigger, que detecta eventos (de creación o modificación) en la base de datos y envía automáticamente los registros a un bucket en S3. De esta forma, cuando los datos en MongoDB superen un determinado período de retención, podrán ser eliminados sin perder acceso a la información, ya que seguirán disponibles en S3 y podrán consultarse fácilmente mediante Amazon Athena.

Image description

Sin embargo, esta estrategia implica un reto adicional: los datos almacenados en MongoDB suelen tener estructuras complejas y variables, lo que dificulta su procesamiento y consulta. Para solucionar esto, se utilizó AWS Glue Jobs ETL, una tecnología de transformación de datos que permite aplanar la información, eliminando campos innecesarios y organizándola en un formato más estructurado para su análisis.

Con los datos mejor organizados, se implementó AWS Glue Crawler para analizar el bucket de S3 y generar un esquema estructurado, lo que permite realizar consultas eficientes mediante Amazon Athena.

Image description

Finalmente, para reducir aún más los costos se puede almacenar los registros en un almacenamiento Amazon S3 Glacier Deep Archive. Sin embargo el problema de ello es que Athena no puede consultar los datos en esta clase de almacenamiento

Top comments (0)