In distributed databases, scaling throughput and performance are critical design topics that require careful consideration. Sharding can make scaling elastic or not, depending on how it is implemented. A database system should be designed to support elastic scaling of both query and ingest workloads, with the ability to scale throughput up and down easily based on traffic or other needs. Elastic scaling allows for flexibility in handling varying workloads, but may have limitations in terms of performance scaling. The key to achieving true elasticity is to split data into smaller shards, allowing for more flexible scaling. However, this approach also introduces additional complexity and overhead. Successful sharding requires careful consideration of the trade-offs between throughput, performance, and scalability, as well as the specific use case requirements.