Sharding vs. Partitioning: Key Differences