records can be partitioned into shards, which
are small enough to be managed by a single server.
Shards are replicated as per requirement and split when it gets too big. Applications assist in data sharding by assigning each record a partition ID automatically