tional groups across databases. Splitting data within functional areas across multiple databases, or sharding, 1 adds
the second dimension to horizontal scaling. The diagram
in figure 1 illustrates horizontal data-scaling strategies.
As figure 1 illustrates, both approaches to horizontal
scaling can be applied at once. Users, products, and transactions can be in separate databases. Additionally, each
functional area can be split across multiple databases for
transactional capacity. As shown in the diagram, functional areas can be scaled independently of one another.
Functional partitioning is important for achieving high
degrees of scalability. Any good database architecture will
decompose the schema into tables grouped by functionality. Users, products, transactions, and communication
are examples of functional areas. Leveraging database
concepts such as foreign keys is a common approach for
maintaining consistency across these functional areas.
Relying on database constraints to ensure consistency
across functional groups creates a coupling of the schema