Federation scales a database by breaking it up according to function. For example, you might create a products database that is completely separate from a user databases. Breaking up a monolothic database in this way results in less IO to each database and less replication lag. Additionally smaller databases can then fit more data in memory, improving cache hits. You can also serialize writes sincew there is not a single writer for all IO.

The disadvantage to federation is that your application must now select the proper DB to read/write to, joins are difficult, more complexity to manage.


Links to this note