Je travaille sur une application mobile qui suit la localisation d'un utilisateur à intervalles réguliers pour lui permettre de tracer le trajet d'un voyage sur une carte. Nous aimerions ajouter une fonction facultative qui lui indiquerait quels autres utilisateurs de l'application ont effectué des trajets similaires dans la période qu'il regarde, qu'il s'agisse du trajet d'aujourd'hui ou du dernier mois de voyage. C'est ce que nous appelons le "path-matching".
Les données sont actuellement enregistrées dans des fichiers au sein des répertoires de stockage privés de l'application sur iOS et Android dans un format binaire qui peut être facilement et rapidement scanné pour lire les emplacements. Chaque fichier contient les emplacements d'une journée et pèse généralement environ 80 Ko.
Pour pouvoir mettre en œuvre la fonction de correspondance des chemins, nous devons évidemment commencer à télécharger ces journaux de localisation sur notre serveur (avec la permission des utilisateurs bien sûr), sur lequel nous exécutons PHP. Quelqu'un a suggéré MongoDB pour ses prouesses géospatiales - mais j'ai quelques questions auxquelles les gens pourraient peut-être répondre :
-
Il semble que nous pourrions modifier notre enregistrement de localisation pour utiliser BSON à la place. Le premier champ serait un appareil ou des identifiants d'utilisateur, suivi d'une liste de lieux pour un jour donné. Le fichier pourrait alors être téléchargé sur notre serveur et poussé dans le magasin MongoDB. La documentation en ligne ne semble toutefois faire référence qu'à l'importation de fichiers BSON créés par mongodump. Le format est-il suffisamment stable pour que n'importe quelle application puisse écrire des fichiers BSON lisibles directement par MongoDB ?
-
MongoDB est-il capable d'exécuter des requêtes géospatiales sur des documents contenant plusieurs lieux, ou sur des lieux formant un chemin à travers plusieurs documents ? Ou est-ce que cela vous semble être quelque chose qui nécessiterait une logique excessive en dehors de la base de données, du côté de PHP ?