Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to choose between MongoDB and PostgreSQL for GIS? [closed]

Tags:

I'm trying to find some information on this topic but most articles I'm finding are 3+ years old. I am also fairly new to this side of things and not sure who to ask.

For my particular use case, I'm not a database expert at all but I've used MongoDB a few times before. I have only used PostgreSQL once for a small project (no GIS stuff involved). For what its worth, I have a small amount of data right now that I've stored into dynamoDB. There's a geo library for it, but it is only available in Java and I don't know Java very well.

My use case is fairly simple - besides user profile data, I want to be able to query markers added by users. Markers within X miles of a authenticated user's current latLng, etc. Markers have other data besides latLng associated with them, such as the user who added it, title, description, etc.

My goal is to be able to return results to the client side with markers within X miles in their current location from nearest to farthest using a web API. For this, between Mongo and PostgreSQL, what would be better to start with?

like image 629
a person Avatar asked Jan 29 '17 05:01

a person


People also ask

How do I choose between MongoDB and PostgreSQL?

If you are looking for a distributed database for modern transactional and analytical applications that are working with rapidly changing, multi-structured data, then MongoDB is the way to go. If a SQL database fits your needs, then Postgres is a great choice.

Is Postgres better than MongoDB?

Postgre is preferred in scenarios where you need a high level of security, and you anticipate scale in terms of transactions or queries. MongoDB is used for unstructured data storage. NoSQL databases are relatively new and are not preferred for highly secure applications.

Is MongoDB good for spatial data?

MongoDB is a NoSQL database that is rapidly gaining popularity. All data is stored in JSON which works awesome on Node. js. MongoDB is capable of geospatial queries when set up properly.

Does Postgres support geospatial data?

PostgreSQL has several extensions so spatial and geometry data can be treated as first-class objects within your PostgreSQL database. PostgreSQL has several extensions so spatial and geometry data can be treated as first-class objects within your PostgreSQL database.


1 Answers

PostgreSQL can give you full (geo)spatial functionalities via PostGis, although you may not need that much in your application.

If you need just to quickly find users within a certain radius of a (lat, lng) point, you can use the earthdistance module, together with GIST indexes.

Check How can I speed-up my query on geo-location processes for detailed explanations.

Check also Searching in a Radius using Postgres.


In MongoDB, you would use geoNear functionality and 2dsphere Indexes


Querys in PostgreSQL are very fast and very flexible, and they scale very well. You need a little bit more of work to set it up than you would with MongoDB.

Anyhow, the basic functionality is available in both, and you should decide considering all other factors:

  • Is your data well structured, and with few variations within this structure? (more on SQL side)
  • Do you need ACID (atomicity, consistency, isolation, durability) guarantees? (more on SQL side)
  • Do you need huge horizontal scaling? (more on MongoDB side)
  • Do you need to query several tables at once (and join)? (SQL side)
  • Do you feel more comfortable with JavaScript and JSON than in any other languages? (MongoDB +)
  • (etc., etc.)

Check also Postgres Outperforms MongoDB and Ushers in New Developer Reality and System Properties Comparison MongoDB vs. PostgreSQL, among many others.

like image 132
joanolo Avatar answered Dec 08 '22 09:12

joanolo