MemSQL’s distributed architecture is designed to be straightforward, simple, and fast. The architecture is designed around a few key principles:
|Performance first||MemSQL is designed to enable high throughput on concurrent workloads, and is a highly scalable distributed system. The cluster can be scaled out at any time to provide increased storage capacity and processing power. MemSQL can process billions of rows per second on clusters of commodity hardware.|
|Separate the cluster into two tiers (aggregators and leaves) and push as much work as possible to the leaves.||This enables you to scale cluster capacity and query performance online by adding additional leaves to a cluster. MemSQL cluster operations are dynamic - you will never have to restart any aggregators or leaves while managing the cluster.|
|No single point of failure.||By running the cluster with redundancy, you ensure that every partition of data is backed up to a hot standby. In the event of any leaf failure, MemSQL will automatically fail over replica partitions. The aggregator tier is also resilient to failure.|
|Powerful but simple cluster management.||The distributed system exposes REBALANCE PARTITIONS, which lets you scale up and down the cluster, restore data in the event of failure, and recreate the cluster from scratch in the event of a complete system failure.|
|No implicit data movement.||In the event of a failure, MemSQL promotes just enough replica partitions to put the cluster back online. MemSQL will never rebalance or move data around implicitly.|
The other Distributed Architecture topics explain the high level concepts behind how MemSQL accomplishes these goals.