For a new product we came along with a pattern, where all the data tables are stored in one schema (lets call it
storage), while the clients connect to another one (here called
api schema defines a set of views and stored functions in order to retrieve and modify the data.
The thought about this is that the client does not see the real table structure, but only an abstraction of it, so that the
storage schema can be changed without breaking any client.
Is this a good approach to achieve a stable client interface, or are there some hidden problems with such a practice.