Few questions regarding usage approach, performance and design


I’m wondering about using an Event Store to track “life cycle” of sent data Packages. I want to create stream for each Package (with stream maxAge = 1 day) and put Events for stream when Package is Received/Accepted/Sent/Delivered (see image below). Each event has some data, which weight ~ 5kB. There will be ~ 150 000 Packages every day (so the same number of Streams).

Auto Generated Inline Image 1.png

Auto Generated Inline Image 2.png

I’d like to use Projections (with “categroy type” stream) to track undelivered Packages + “event type” subscriptions when message is received.

And now I have some questions:

  1. Is it a good idea to use Event Store in this case?
  2. Is it a good design to create separate stream per Package?
  3. Is it a good idea to store 5kB additional “data” in each Event? (it will be the same in each event)
  4. Does the Event Store can handle such load without any issues?
  5. Do you advice some custom Event Store configuration, setup, anything to handle such load?


Does every event carry the full payload or just the first (seems silly all would carry same information)

Auto Generated Inline Image 2.png

Auto Generated Inline Image 1.png

Hi Greg. First of all, thank you for your time and response.

Well, in my “Proof of concept”, every event carry payload, but it’s not a problem for me to store it only in the first event “Message Recieved”.

W dniu poniedziałek, 30 stycznia 2017 22:18:03 UTC+1 użytkownik Greg Young napisał:

It would seem to make more sense to do it that way. From looking at 150k streams/day with roughly 5 events thats ± 1m events. You should on a reasonable node say 8 cores 16 gb ram be able to process that level of load in about a minute.