Używam PostGIS od kilku lat i dopiero niedawno zacząłem badać, w jaki sposób mogę wykorzystać MongoDB do radzenia sobie z niektórymi przypadkami użycia. Miałem do czynienia z danymi punktowymi, które miały rzadkie pola - jak dane OSM ze zmienną liczbą znaczników na rekord, a ponieważ MongoDB nie ma schematu, dobrze do tego pasuje. Załadowałem próbkę tych danych do instancji każdego DB i oto, co znalazłem.
Wydaje mi się, że w przypadku prostego przechowywania i pobierania danych punktowych Mongo działa dobrze. Zapytania geoprzestrzenne z obwiednią wydają się działać dobrze i uważam, że ogólna wydajność jest bardzo dobra. Jest także bardzo łatwy w konfiguracji i rozpoczęciu pracy, chociaż odkryłem, że narzędzie mongoimport nie pozwala mi zdefiniować złożonego pola współrzędnych 2D w pliku TSV lub CSV. Ponieważ napisanie skryptu generującego JSON jest dość łatwe, nie stanowiło to większego problemu. Jego główną wadą jest obecnie to, że prawie nic innego w sferze geoprzestrzennej nie może natywnie odczytać z niego danych. Wygląda na to, że istnieje eksperymentalna wtyczka źródła danych Mapnik na https://github.com/springmeyer/mapnik-mongo , ale to wszystko, co mogłem znaleźć.
Z drugiej strony PostGIS zajmuje trochę więcej czasu (przynajmniej dla mnie), ale jak wspomniano powyżej, zapewnia znacznie więcej funkcji od razu po wyjęciu z pudełka. Oprócz zapewnienia znacznie bardziej wyrafinowanych możliwości analizy przestrzennej, jest on również natywnie obsługiwany przez mnóstwo innych aplikacji i bibliotek; Mapserver, Mapnik, QGis, GDAL itp. Itd. Dla mnie PostGIS jest bardziej prawdziwym systemem GIS, niż prostym systemem przechowywania i wyszukiwania.
Jeśli chodzi o wydajność, stwierdziłem, że mogę bardzo szybko pobierać dane z obu systemów. Wydawało się jednak, że PostGIS bardziej skorzystał na obecności indeksów. MongoDB był nieco szybszy w zwróceniu mi całego zestawu danych naraz (2 miliony rekordów) i nieco wolniejszy w zwróceniu zapytania, które wykorzystało indeks - za pierwszym razem. Nie jestem do końca pewien mechanizmu, który wykorzystuje do buforowania, ale widzę, że jeśli powtórzę zapytanie w MongoDB, wyniki pojawią się znacznie szybciej za drugim razem. Widzę coś podobnego w PostGIS, ale nie w tym samym stopniu. Zauważyłem również, że użycie pamięci na moim komputerze wydaje się być znacznie wyższe przy uruchomionym MongoDB niż w PostGIS.
Zatem doszedłem do wniosku, że nie pozbędę się PostGIS jako mojego domyślnego systemu przechowywania i analizy geoprzestrzennej, ale w przypadku niektórych rodzajów projektów (mianowicie map internetowych wyświetlających kafelki obrazów i / lub dane punktowe) mogę rozważyć użycie MongoDB jako mój magazyn danych.
zrozumiałem