Deciding on a design for multitenancy
There are many reasons why we might want to split groups of tables or applications: security, resource control, convenience, and so on. Whatever the reason, we often need to separate groups of tables (I avoid saying the word "database", just to avoid various kinds of confusion).
This topic is frequently referred to as multitenancy, though it is not a fully accepted term as yet.
The purpose of this recipe is to discuss the options and lead to other, more detailed recipes.
How to do it…
If you want to run multiple physical databases on one server, then you have four main options, which are as follows:
Option 1: Run multiple sets of tables in different schemas in one database of a PostgreSQL instance (covered in the Using multiple schemas recipe)
Option 2: Run multiple databases in the same PostgreSQL instance (covered in the Giving users their own private database recipe)
Option 3: Run multiple PostgreSQL instances on the same virtual/physical system (covered...