So far, we have looked at various fundamental methods of modeling data. In some cases, we need to make a few tweaks to the canonical way of interacting with data to enable performance of a few use cases. This section talks about these types of patterns.
Patterns for scaling data performance
Sharding
A singleton database, however beefy, has limitations in terms of storage space and compute resources. A single server is also not great in terms of availability. Storage systems such as Cassandra distribute data by partitioning data opaquely. However, many systems (including most RDBMS systems) don't partition data internally.
The solution is sharding. This refers to dividing the data store into a set of horizontal partitions...