I like your view. I almost drank the EE kool-aid but I decide instead to do the reverse: I write against a "normal" PG database and then trigger the changes to a log (into PG too) Then I read from the log elsewhere. Probably will copy the log to something else (like kafka) just for speed.
I dislike to lose ACID. Mainly because my apps are all about financial/business stuff.
My ideal DB right know will be alike:
Incoming data ->
- Write WAL (disk)
- Convert to Logical JSON-like structure (memory). For Consisten API
- Pre-Triggers (BLOCK) <- Validations
- Persist on Table(s) (only the data necesary to perform validations later?. Cache?)
- Persist on READ-LOG (all the data!)
- Post-Triggers (NON-BLOCK!) Read by:
Log Listener(s) ->
- Build caches, (secondary?) indexes, etc (NON-BLOCK)
I dislike to lose ACID. Mainly because my apps are all about financial/business stuff.
My ideal DB right know will be alike: