Why Use the MySQL Cluster Database
If you need to provide a distributed database that serves several (millions) users, and has a high volume data load, the MySQL Cluster database is the database to use. MySQL Cluster database is the same open source MySQL database with the additional feature of being a distributed database, which brings several additional benefits. A MySQL Cluster consists of multiple data nodes, or simply nodes, with each node on a separate computer.
MySQL Cluster makes use of memory optimized tables to provide low latency, real-time response with millisecond response times to serve millions of requests per second. The nodes have data locality awareness, using which client requests are routed to the nearest node.
Shared Nothing Architecture
The different nodes do not share any resources (CPU, RAM, Disk), which eliminates node contention. Node contention could occur if multiple nodes try to update the same data. The nodes may be installed on commodity hardware, which makes MySQL Cluster suitable for a distributed, cloud based database.
MySQL Cluster is a highly available database, which implies that it is available most of the time with not much downtime. High availability is provided by virtue of it being a distributed, shared nothing architecture, with synchronous replication across nodes. Data updates are propagated to all nodes in a node group without any replication lag, for consistent reads and writes. If a node fails, it is detected quickly, and data request is failed over to another node in the cluster that has a replica of the same data within sub-seconds, and client does not experience any interruption in service.
MySQL Cluster provides on-demand, linear, horizontal scalability. As data load (read and write operations) increases, additional nodes may be added with a corresponding linear increase in the throughput. High scalability is made possible by several features including memory optimized tables, disk based tables, automatic data sharding, and load balancing. MySQL Cluster automatically shards or partitions tables across nodes in the cluster. Sharding is transparent to a user and a user may connect to any node in the cluster, and the request is routed to the correct node.
MySQL Cluster is an agile database. Nodes may be added/removed to a cluster while the cluster is online, or running, without incurring any downtime. Similarly, other database maintenance operations including repartitioning, backups, patching, and upgrades may be made while the database is running. For developer agility, the cluster provides multiple SQL, NoSQL interfaces, and APIs. To allow dynamic, schema-less data storage, MySQL Cluster does not require a schema to be defined.
All these features make MySQL Cluster suitable for a distributed, high data load, multiuser environment.