carmen icon indicating copy to clipboard operation
carmen copied to clipboard

Carmen

Carmen is a streaming database for location events. As an object moves through zones (geofences) events are emitted for that object. The object state is maintained in a process so it is very performant for the case where frequent messages are received for each object.

It is highly configurable. Out of the box it assumes that messages are ordered and partitioned by id before reaching Carmen (the messages for an object will go to the same node) but by configuring a process registry such as Swarm it can handle mixed messages (messages for any object can arrive at any node).

The demo can be ran via mix carmen.demo 5000 where 5000 is the number of moving objects.

Installation

If available in Hex, the package can be installed by adding carmen to your list of dependencies in mix.exs:

def deps do
  [
    {:carmen, "~> 0.1.0"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/carmen.