Option 1: Completely separate instances
Each instance has a dedicated database and runs on different physical hardware. This setup is good for zero downtime.
Tolerant, highly available, completely redundant
Duplication of data and cost of resources to keep them
Option 2: Centralized database server
A centralized database server holds the copies of JCR repositories for each instance. But the instances run in separate virtual machines. This setup is performant but not disaster tolerant.
Save money on database licenses and maintenance
Retain separate copies of data
Database is a single point of failure (unless it is clustered)
Need to maintain more hardware or VMs
Option 3: Clustered data store
All public instances run in a cluster.
Sharing of user-generated content
Only one copy of data
If the cluster goes down you lose all public data