J'utilise PostGIS depuis quelques années et ce n'est que récemment que j'ai commencé à étudier comment utiliser MongoDB pour traiter certains cas d'utilisation. Je m'occupais de données ponctuelles contenant des champs épars - telles que les données OSM avec un nombre variable d'étiquettes par enregistrement, et comme MongoDB n'a pas de schéma, il s'y prête bien. J'ai chargé un échantillon de ces données dans une instance de chaque base de données et voici ce que j'ai trouvé.
Il me semble que pour le stockage et la récupération simples de données de points, Mongo fonctionne parfaitement. Les requêtes géospatiales du cadre de sélection semblent bien fonctionner et je trouve que les performances globales sont très bonnes. Il est également très facile à installer et à démarrer, bien que j’ai constaté que l’outil mongoimport ne me permettait pas de définir un champ de coordonnées 2D composé dans un fichier TSV ou CSV. Comme il est assez facile d'écrire un script générant du JSON, cela n'a pas posé de gros problèmes. Son principal inconvénient à l'heure actuelle est que presque rien dans le domaine géospatial ne peut en lire les données de manière native. Il semble y avoir un plugin de source de données Mapnik expérimental à l' adresse https://github.com/springmeyer/mapnik-mongo , mais c'est tout ce que j'ai pu trouver.
PostGIS, d’autre part, prend un peu plus de temps à mettre en place (du moins pour moi), mais comme on l’a mentionné plus haut, il offre beaucoup plus de fonctionnalités immédiatement. En plus de fournir une capacité d'analyse spatiale beaucoup plus sophistiquée, elle est également supportée de manière native par une tonne d'autres applications et bibliothèques; Mapserver, Mapnik, QGis, GDAL, etc. Pour moi, PostGIS est beaucoup plus un véritable système SIG que un simple système de stockage et de récupération.
En ce qui concerne les performances, j’ai trouvé que je pouvais récupérer très rapidement les données des deux systèmes. Cependant, il semblait que PostGIS bénéficiait davantage de la présence d’index. MongoDB a été légèrement plus rapide en me renvoyant le jeu de données complet (2 millions d’enregistrements) à la fois et légèrement plus lentement en renvoyant une requête utilisant un index. Je ne suis pas tout à fait sûr du mécanisme qu'il utilise pour la mise en cache, mais je peux voir que si je répète une requête dans MongoDB, les résultats sont beaucoup plus rapides la seconde fois. Je vois quelque chose de similaire dans PostGIS, mais pas au même degré. J'ai également noté que l'utilisation de la mémoire sur ma machine semble être beaucoup plus élevée sous MongoDB que sous PostGIS.
Donc, ma conclusion est que je ne vais pas me débarrasser de PostGIS comme système d'analyse et de stockage géospatial par défaut, mais pour certains types de projets (notamment les cartes Web qui affichent des mosaïques d'images et / ou des données de points), je pourrais envisager d'utiliser MongoDB. comme mon magasin de données.
Roger