I use postgres schemes for a multi-tenant site based on some work by Ryan Bigg and the โFlatโ jewelry.
https://leanpub.com/multi-tenancy-rails
https://github.com/influitive/apartment
I find that for each client there are separate schemes, an elegant solution that provides a higher degree of data segregation. Personally, I believe that performance improves because Postgres can simply return all the results from a table without filtering on "owner_id".
I also think that it simplifies migration and allows you to configure individual client data without global changes. For example, you can add columns to specific client schemas and use function flags to enable custom functions.
My main argument regarding performance will be that backing up is a batch process, while client table coverage will be on every access. Based on this, I would jeopardize the effectiveness of backups, slowing down the work with clients.
source share