Summary
For this post, I'll be discussing Redis Enterprise and Apache Pinot set up in Docker.
- 3-node Redis environment
- 4-node Pinot environment
- 1M synthetic JSON records representing a user's geographic location
- Equivalent geospatial search queries for both environments
Architecture
Data Generation
Synthetic records are created with a Python function that utilizes the Faker library. They are saved to a file called locations.json. A snippet of the data generator is below.
Redis Deployment
Docker
Three Redis nodes are created.
Cluster Build, DB creation, Index Build, Data Load
Nodes are joined into a Redis cluster. A single-shard database is then created, along with an index. Finally, the database is populated from a JSON file with Riot.
Redis Insight
Pinot Deployment
Docker
A 4-node Pinot cluster is created in docker-compose. Pinot Controller definition is below.
Schema/Table Build, Data Load
Pinot Console
Queries
The query below finds the count of users within a polygon defined as the boundaries of the State of Colorado.