Chapter 10. Geospatial Querying

AATD’s users were very pleased with the publishing of an order’s status in the pizza shop app. It’s allowed them to see that their order is making progress and has also given them some indication of when it’s likely to be delivered. But now that they’ve had a taste of real-time data, they want more!

The customer success team has received multiple requests for the pizza shop app to include a delivery tracker that shows where an order is once it leaves AATD’s kitchen. In addition, AATD’s operations team would like to be able to locate delivery vehicles. On multiple occasions, deliveries have been delayed due to traffic problems, and they’d like to be able to identify which vehicles are affected so that they can notify customers of a potential delay.

To add this functionality, we’ll need to update the orders service to publish locations to a new deliveryStatuses stream. That stream will then be consumed by Apache Pinot, and we’ll update the /orders/<order_id> endpoint to include the latest location. We will also go back and include the delivery latitude and longitude coordinates in the orders stream and add columns for those values to the equivalent table in Apache Pinot.

The traffic problems feature will also use the deliveryStatuses stream, but we’ll add a new /orders/delayed/<area> endpoint to identify affected vehicles. This endpoint will be consumed by a new section of the dashboard.

Figure 10-1 shows the new pieces of infrastructure.

Figure ...

Get Building Real-Time Analytics Systems now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.