The MySQL Cluster NDB
storage engine is implemented using a distributed, shared-nothing architecture, which causes it to behave differently from InnoDB
in a number of ways. For those unaccustomed to working with NDB
, unexpected behaviors can arise due to its distributed nature with regard to transactions, foreign keys, joins, and other characteristics. These are shown in the following table:
Feature | MySQL Cluster | |
---|---|---|
MySQL Server Version | | MySQL Cluster NDB 6.3, 7.0, 7.1: 5.1 MySQL Cluster NDB 7.2: 5.5 |
| | NDB 6.3, 7.0: NDB 7.1: NDB 7.2: |
Storage Limits | 64TB | 3TB (Practical upper limit based on 48 data nodes with 64GB RAM each; can be increased with disk-based data and BLOBs) |
Foreign Keys | Yes | No (Ignored, as with |
Transactions | All standard types | |
MVCC Non-Blocking Reads | Yes | No |
Data Compression | Yes | No (MySQL Cluster checkpoint and backup files can be compressed) |
Large Row Support (> 14K) | Supported for (Using these types to store very large amounts of data can lower MySQL Cluster performance) | |
Replication Support | Asynchronous and semi-synchronous replication using MySQL Replication | Automatic synchronous replication within a MySQL Cluster. Asynchronous replication between MySQL Clusters, using MySQL Replication |
Scaleout for Read Operations | Yes (MySQL Replication) | Yes (Automatic partitioning in MySQL Cluster; MySQL Replication) |
Scaleout for Write Operations | Requires application-level partitioning (sharding) | Yes (Automatic partitioning in MySQL Cluster is transparent to applications) |
High Availability (HA) | Requires additional software | Yes (Designed for 99.999% uptime) |
Node Failure Recovery and Failover | Requires additional software | Automatic (Key element in MySQL Cluster architecture) |
Time for Node Failure Recovery | 30 seconds or longer | Typically < 1 second |
Real-Time Performance | No | Yes (Low latency) |
In-Memory Tables | No | Yes (Some data can optionally be stored on disk; both in-memory and disk data storage are durable) |
NoSQL Access to Storage Engine | Native memcached interface in development (see the MySQL Dev Zone article NoSQL to MySQL with Memcached) | Yes Multiple APIs, including C++, HTTP/REST, Java and JPA (MySQL Cluster NDB 7.1 and later); Memcached (MySQL Cluster NDB 7.2) and later) |
Concurrent and Parallel Writes | Not supported | Up to 48 writers, optimized for concurrent writes |
Conflict Detection and Resolution (Multiple Replication Masters) | No | Yes |
Hash Indexes | No | Yes |
Online Addition of Nodes | Read-only replicas using MySQL Replication | Yes (all node types) |
Online Upgrades | No | Yes |
Online Schema Modifications | No | Yes |
Real-Time Performance | No | Yes |