Dans notre entreprise, nous avons une base de données MongoDB contenant un grand nombre de données non structurées, sur lesquelles nous devons exécuter des algorithmes de réduction de carte pour générer des rapports et d'autres analyses. Nous avons le choix entre deux approches pour la mise en œuvre des analyses requises:
Une approche consiste à extraire les données de MongoDB vers un cluster Hadoop et à effectuer l'analyse entièrement dans la plateforme Hadoop. Cependant, cela nécessite des investissements considérables dans la préparation de la plate-forme (logiciels et matériel) et la formation de l'équipe à travailler avec Hadoop et à lui écrire des tâches de réduction de carte.
Une autre approche consiste à simplement concentrer nos efforts sur la conception des algorithmes de réduction de carte et à exécuter les algorithmes sur les fonctionnalités de réduction de carte de MongoDB. De cette façon, nous pouvons créer un prototype initial de système final qui peut générer les rapports. Je sais que les fonctionnalités de réduction de carte de MongoDB sont beaucoup plus lentes par rapport à Hadoop, mais actuellement les données ne sont pas si grandes que cela en fait encore un goulot d'étranglement, du moins pas pour les six prochains mois.
La question est, en utilisant la deuxième approche et en écrivant les algorithmes pour MongoDB, peut-on les porter plus tard sur Hadoop avec peu de modifications et de refonte d'algorithmes? MongoDB prend simplement en charge JavaScript, mais les différences de langage de programmation sont faciles à gérer. Cependant, y a-t-il des différences fondamentales dans le modèle de réduction de carte de MongoDB et Hadoop qui pourraient nous obliger à repenser considérablement les algorithmes pour le portage vers Hadoop?