EOSIO keeps the state in RAM. All the data for the contracts and transactions are held in RAM.
All block producers (BP) process the transactions and keep an updated state of the database in RAM.
This is why the RAM is one of the most valuable resources in the EOSIO blockchain and has it's own mechanism for reserving and pricing it.
You should seek ways to free old data that is not needed to optimize usage of RAM.
The white paper differentiates between:
- log storage which will be in disk
- state storage which will be in RAM
I think this is very different from traditional databases or even NOSQL systems where keeping data in disk is considered the safe way to protect from volatility.
One notable different solution is REDIS which is an in memory DB which gets an "unfair" performance advantage by using RAM instead of disk. REDIS solves the volatility risk of losing all data with a power surge by using a master and slave where once data arrives to the listening slave, it is written to disk. If you want a fast and reliable REDIS server, you can wait for the signal from the slave that the data was saved to disk.
EOSIO has a conceptually similar solution. The BPs are listening on transaction messages and you have redundancy. If one of them fails, the rest will pick up from the correct point and process the messages.