Relational data vs sequential data

Lets assume we want to model knowledge, that would be a perfect case for a graph database.

But lets further assume we want to record, how users interact with certain knowledge on that graph, essentially sequential or timestamped data that keeps track of these interactions.
How would we do this best, would we use a hybrid approach for that, using a relational db for that data, and later if we want to do analytics on those two data pools share this data back together to get some form of meta data from these interactions?


There are ways to do this within Neo4j, but I can't advise you in regards to whether your use case warrants an external store that is better at sequential records. If those interactions are very frequent, or happen on a schedule, you might be better served with an external system.

But within Neo4j, there are a couple approaches. You can use a linked list of nodes to track events that happen in regards to your objects. Each event points to the object it regards, as well as the last event in history (or none). You can traverse the linked list backward, or you can make it bi-directional if you want.

Another approach is to use a time tree. Time trees divide time into a taxonomy of timelines, from least to most granular. You can index events that occur within windows of seconds, hours, or months. GraphAware offers a great implementation.