tidwall / tile38

Real-time Geospatial and Geofencing
https://tile38.com
MIT License
9.15k stars 570 forks source link

Geofence Benchmark / Tests #250

Open sign0 opened 6 years ago

sign0 commented 6 years ago

Hi,

I would like to know what the limit is for geofences : have you already done a benchmark or tested the limits ?

For example: 1000, 10000, 100000, 100000, with an "in/out" every 1 sec.

I take all the informations, Thanks

tidwall commented 6 years ago

I've done benchmarking but I haven't published any formal results.

Geofencing performance can vary greatly due to the complexity and number of geofences and object updates per second. A database that has only a few rectangle geofences and lots of basic GPS lat/lon points can handle a lot more notifications than a database with lots of complex polygon shaped geofences. Also, the different types of notification delivery protocols can make a difference, http2, grpc, kafka, etc.

I wish I had more information.

naveenchlsn commented 4 years ago

Thanks @tidwall,

We are evaluating tile 38 for geo fencing within our organization. Can you please answer my questions below.

Geofencing performance can vary greatly due to the complexity and number of geofences and object updates per second.

  1. How can we scale the tile 38 to handle large numbers of updates?
  2. What is the sharding strategy of the geofences storage?
  3. How is computation sharded? Can we increase the number of nodes and expect the throughput increase?

A database that has only a few rectangle geofences and lots of basic GPS lat/lon points can handle a lot more notifications than a database with lots of complex polygon-shaped geofences.

  1. How can we evaluate a shape as complex or simple?

lots of basic GPS lat/lon points

  1. What do you mean by basic? What else can we have in the updates?
tidwall commented 4 years ago

Hi @naveenchlsn,

Tile38 is a single instance database that supports replication. There is one leader instance, but there can be many followers. The leader is the only instance that can accept updates. The followers are read-only. Tile38 can handle 10s to +100s of thousands of point updates per second.

How can we scale the tile 38 to handle large numbers of updates?

Use a fast machine. Also, try to have your clients take advantage of pipelining.

What is the sharding strategy of the geofences storage?

There is no automatic sharding built into Tile38. Sharding is an architectural design decision left up to you.

How is computation sharded? Can we increase the number of nodes and expect the throughput increase?

You can create any number of Tile38 nodes, each managing a different set of points and geofences, but it's entirely up to you how those nodes are managed.

How can we evaluate a shape as complex or simple?

I consider a single point as simple. A shape that has many points, like a political boundary is complex.

What do you mean by basic? What else can we have in the updates?

I mean that the point is just a lat/lon, like: SET fleet truck1 POINT 33 -112.
It's possible to also use stuff like FIELDS, GeoJSON, TTLs, etc. Each of which makes the server to do a little more computation. See the SET command for more details.