In the case of a DBMS, doesn't that add an extra layer of potential caching since DBMS typically try to keep as much of the database in memory ? And you have to add the network layer where the application has sent its commands to the SQL server and the application has no way of knowing when the data will actually be written to disk.