My team need a DBMS like DynamoDB to store large amount of data, principally places and coordinates. I've considered to use some GIS-based DBMS (like PostGIS) with an index on the POINT, but DynamoDB seems great for our use.

What is the best method to store the coordinate and quickly retrieve all objects in a particular radius?

In PostGIS it's easy, something like this:

FROM places
WHERE ST_DWithin(coordinate, ST_GeomFromText('POINT(45.07085 7.68434)', 4326), 100.0);

How can I do something like that in a NoSQL DBMS?

  • Without a specific database in question, and only in question, this is entirely too broad to be useful. – Evan Carroll Jun 22 '18 at 3:18

The classic answer is to query the database for the set of points within the 100 mile BOX and then remove the subset of points that are outside the 100 mile CIRCLE in your application layer using your programming language of choice (not SQL).

I've done this with data in Amazon SimpleDB efficiently, and you could do the same in DynamoDB with a couple "index tables" one using lat and another using lon as hash keys...

Not the answer you're looking for? Browse other questions tagged or ask your own question.