We don&#x27;t use database views, but kinda-sorta mimic them by separating the persistence layer from the API layer. It can be annoying to maintain (at the big G there are lots of SWEs who joke that their job is writing code to copy fields between protobufs), but the alternative is to couple your API directly to what you&#x27;re storing in the database.  That is a road that leads to pain.<p>The benefit over using views is that at your code is written in the same language, instead of having a while bunch of logic running semi-hidden in the database. If you have a bug in your view, you have to update your DB schema (or at least roll out new PL&#x2F;SQL DB code or whatever). And if you&#x27;re working with a planet-scale distributed app, it just plain won&#x27;t work.