En nuestra empresa, tenemos una base de datos MongoDB que contiene una gran cantidad de datos no estructurados, en los que necesitamos ejecutar algoritmos de reducción de mapas para generar informes y otros análisis. Tenemos dos enfoques para seleccionar para implementar los análisis requeridos:
Un enfoque es extraer los datos de MongoDB a un clúster Hadoop y hacer el análisis completamente en la plataforma Hadoop. Sin embargo, esto requiere una inversión considerable para preparar la plataforma (software y hardware) y educar al equipo para trabajar con Hadoop y escribir tareas de reducción de mapas para ella.
Otro enfoque es simplemente poner nuestro esfuerzo en diseñar los algoritmos de reducción de mapas y ejecutar los algoritmos en las funcionalidades de reducción de mapas de MongoDB. De esta manera, podemos crear un prototipo inicial del sistema final que puede generar los informes. Sé que las funcionalidades de reducción de mapas de MongoDB son mucho más lentas en comparación con Hadoop, pero actualmente los datos no son tan grandes que lo convierten en un cuello de botella, al menos no durante los próximos seis meses.
La pregunta es, utilizando el segundo enfoque y escribiendo los algoritmos para MongoDB, ¿pueden ser luego trasladados a Hadoop con poca modificación y rediseño de algoritmos? MongoDB solo admite JavaScript, pero las diferencias de lenguaje de programación son fáciles de manejar. Sin embargo, ¿hay alguna diferencia fundamental en el modelo de reducción de mapas de MongoDB y Hadoop que pueda obligarnos a rediseñar algoritmos sustancialmente para portarlos a Hadoop?