endEvent arriving before a startEvent.startEvent(event_id, timestamp): Record the start of an event.endEvent(event_id, timestamp): Record the end of an event.getOngoingEvents(timestamp): Return the count of events ongoing as of the specified timestamp. This can only be queried for timestamps older than 24 hours.getOngoingEvents is for historical data older than 24 hours), the system should still provide reasonable query response times.event_id: 16 bytes (UUID)event_type: 4 bytes (integer or short string)description: Assume average 128 bytes (could vary)start_time, end_time, and arrival_time: Assume 8 bytes each (typically stored as 64-bit timestamps)Define what APIs are expected from the system...
Store event in Nosql DB, like Cassandra.
Event table has {
event_id
description
event_type
timestamp
status
start_time
end_time
}
Explain how the request flows from end to end in your high level design. Also you could draw a sequence diagram using the diagramming tool to enhance your explanation...
Dig deeper into 2-3 components and explain in detail how they work. For example, how well does each component scale? Any relevant algorithm or data structure you like to use for a component? Also you could draw a diagram using the diagramming tool to enhance your design...
Explain any trade offs you have made and why you made certain tech choices...
Try to discuss as many failure scenarios/bottlenecks as possible.
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?