I am quite interested in event sourcing(tl;dr basically it is advanced logging that can re-create data or roll back to exact time, just like git log..or in simpler terms it is revision log for the whole application) and am wondering what would it take to implement into Drupal.
Basically, there are 5 data types in Drupal:
In order to implement ES I imagine that I would have to implement diffing into entity storage controller(s), config factory and key-value factory.
When write(insert, update, delete) operation would take place a diff or data dump would take place and event would be emitted and logged into storage(after the fact).
Then I would have to define such events and also implement some sort of processor that could do roll-back/roll-forward(essentially rebuild the data from events). And finally a snapshot generator.
For advanced/proper use(ie. CQRS) a read and write storage(or api layer) would be put into place.
Although I am not sure how would I be able to handle schema alteration - for example if a field or entity is un/installed.
Is my line of thinking correct or have I make a mistake in my assumptions?