via.
The general idea behind this is that when making a database, you can split the storage of data from the query builder/engine. This makes sense because the query engine engine is CPU bound, while the storage system is IO bound. You do take on a network hop, which can affect performance, but there are techniques for reducing the impact here (caching, batching, etc).
A nice attribute of this is your query engine can fail over to a new query engine without having to copy files over. You do have to have redundancy on the storage layer.