A YugabyteDB cluster can be scaled horizontally (to increase the aggregate vCPUs, memory and disk in the database cluster) by dynamically adding nodes to a running cluster, or by increasing the number of pods in the
yb-tserver StatefulSet in the case of Kubernetes deployments.
A YugabyteDB cluster is scaled out so that it can handle:
- More transactions per second
- Higher number of concurrent client connections
- Larger datasets
NoteA YugabyteDB cluster can be dynamically scaled out by adding nodes (or increasing the number of pods in the case of Kubernetes). It can also be scaled in dynamically by draining all the data from existing cluster nodes (or pods), and subsequently removing them from the cluster.
How scalability works
Every table in YugabyteDB is transparently sharded using the primary key of the table, each of these shards are called tablets. Each tablet consists of a set of rows in a table. In YugabyteDB, tables are automatically split into tablets. This is done at time of creating the table if possible. Tablets can also be split dynamically.
The table below summarizes the support for scalability and sharding across YSQL and YCQL APIs.
|Scale transactions per sec||Yes||Yes||Scale out the cluster to handle a higher number of concurrent transactions per second.|
|Data distribution support||Hash sharding,
|Hash sharding||Sharding is used to distributed data across nodes of clusters.
Tables can be pre-split at creation time, and dynamically split at runtime.
The various features are explained in these sections: