Near real time object tracking

Hello,

We are doing some R&D related to tracking objects. For example, let’s say we need to track vehicle traffic and show each vehicle’s path plotted on a map. At the same time, the coordinates will have to be saved to the DB as well. We were thinking to utilize Aerospike for this.

Each object will have a transmitter (say GPS coordinates) which will emit it’s position to a server. Server should broadcast this data to entities who are interested in this object. At the same time save the coordinates so we can recall object’s path and plot where it has been.

This is similar to a chat room application where an incoming message gets broadcasted to everyone within the chat room. Redis has a pub/sub model and I am wondering whether a similar thing can be achieved efficiently with Aerospike as well.

I would like to know expert thoughts related to this story.

How big is your data set? I would consider using Redis for this use case, because it supports richer data structures aswell as pub/sub out-of-the-box.

Aerospike has early support for geospatial, please contact me brian@aerospike.com for info.

This case is usually handled without pubsub. You stick the regions into a database, you do a “point in region” query on the ingest of each new data point, get the regions, and notify if there’s a change. Possibly through a message queue. No database pubsub required - just a fast database.

Whether you want to use redis or not depends on a bunch of factors, like whether you ever intend to go beyond a single server, and whether you need higher performance.

Well, we are looking at tracking lots of objects Starting from 100s to 1000+ within couple of months. So scaling easily is a must. what I don’t understand is the use of geospatial. We just Send coordinates to Server which gets pushed for others. AS of now it seems that Aerospiike need an additional message queue or similar tech to broadcast Locations. Are there any plans to add pub, sub feature to Aerospike? Sorry for reiterating pabsub. I am just new to Aero spike

This repository might be interesting for you: https://github.com/aerospike/udf-pubsub I think you won’t get any closer to pubsub with AS than this (please correct me, if I’m wrong).

1 Like

Well, messaging to the author what I got is that this is not an approved Aerospike plugin due to architectural concerns. Then I looked at : https://www.aerospike.com/docs/udf/examples/record_udf_msg_queue.html

From what I understand receiver should keep on pinging the queue to check whether there are new messages isn’t it ?

On the other hand if I use another message queue such as RabbitMQ, the performance claimed by Aerospike will be limited based on RabbitMQ performance.

Modithak, I have trouble understanding your core question.

As I mentioned above, your problem does not require the database to interact directly with the message queue. I believe you are better off, when you change a data point, simply inserting the “change” into the message queue separately. This removes the entire headache of integrating the database with rabbitMQ.

What am I missing about your problem that causes you to continue to want to do this in-database ?

After reading few articles related to Aerospike case studies & other high availability related articles, We think we can live with something like NodeJS, SockJS where coordinate updates are push instantly, at the same time save the coordinates. For location based services I think we can utilize geospatial features in AeroSpike. Is there a pre-release version which we can play around with?

@modithak,

We will reach out to you privately about your request. Please stay tuned.