For most businesses, one customer is only interested in their own data. So that's where you can scale out - put each customer on their own virtual instance.
For most businesses, one customer is only interested in their own data. So that's where you can scale out - put each customer on their own virtual instance.
If there is a relation, like who is friend with who, and not much else, you can lift out that into it's on service and scale it individually.
This way you get all the benefits of the relational model (you can use foreign keys, transactions consisting of multiple tables, etc.) and the performance benefits of additional machines that are not just read-replicas.
Centralized shared tables can be in a separate database which can also hold the mapping between customer-ids and database instances.
Only drawback is that management is more difficult -- backup, migrations, etc. Specifically, you need to handle the case where some customers have migrated their database and others had not yet.
[1] https://techcrunch.com/2022/06/08/figmas-dylan-field-will-di...