Having never worked on a multi-tenant SaaS app, is this how multi-tenancy is typically implemented (a per-tenant-database)? Is there a certain scale at which this becomes the ideal pattern? If so, has anyone made the shift from a single-database approach to a per-tenant-database approach?
I'd say it's probably not the typical implementation. Mainly because it's a pain to implement and manage.
I guess that's why this was created though. It's definitely an intriguing tool.
I did shift in past from single database to sharded via citus. The actual migration was smooth, but 6+ months of work went into ensuring compatibility.
There's ways to nearly guarantee compatibility without actually using a sharded approach, like enforcing all tables have a uniform shard key.
Good point, this product does make this approach far more palatable.
Curious if the sharding strategy that you were shifting to was company-based, as is implemented in this case?
Yup! I lean towards a tenant ID approach. I ALWAYS use a library that enforces these tenant checks on queries. Ruby (https://github.com/citusdata/activerecord-multi-tenant) and Elixir (I wrote https://github.com/sb8244/ecto_tenancy_enforcer) are the ones I have experience with.