NDB Cluster

From Wikipedia, the free encyclopedia
Jump to: navigation, search

NDB Cluster is the distributed database system underlying MySQL Cluster. It can be used independently of a MySQL Server with users accessing the Cluster via the NDB API (C++). "NDB" stands for Network Database.

From the MySQL Server perspective the NDB Cluster is a Storage engine for storing tables of rows.

From the NDB Cluster perspective, a MySQL Server instance is an API process connected to the Cluster. NDB Cluster can concurrently support access from other types of API processes including Memcached, JavaScript/Node.JS, Java, JPA and HTTP/REST. All API processes can operate on the same tables and data stored in the NDB Cluster.

For a full description of NDB Cluster capabilities, use-cases and resources, see the entry for MySQL Cluster

Standalone Ndb Cluster[edit]

Ndb Cluster has the following capabilities independent of any attached MySQL Server :

  • Persistent, distributed storage of tables with unique or ordered indexes
    • Redo logging, checkpointing, system recovery
  • Auto-sharding of tables across data nodes
    • Hashing some or all of the primary key
  • Primary key, unique key, table scan and ordered index scan
    • Parallel scan execution with 'pushed-down' filters
  • Row locks, transactional updates
  • Synchronous data replication within the cluster, automatic failover + recovery
    • Automatic connection failover for 'API' processes
  • Standard SQL datatypes including Blobs etc.
  • Storage of data on disk
  • Asynchronous data change triggers mechanism
  • DDL operations (although independent DDL will not currently be recognised by any attached MySQL servers)
  • Online index add, online table alter
  • Online add node, table reorganisation
  • Online backup
  • Online upgrade

MySQL Cluster (Ndb Cluster + MySQL Server(s))[edit]

MySQL Cluster currently uses the MySQL Server to provide the following capabilities on top of Ndb Cluster:

  • SQL parsing / optimising / execution capability
    • Connectors to applications via JDBC, ODBC ...
  • Cross-table join mechanism
  • User authentication and authorisation
  • Asynchronous data replication to other systems


Ndb Cluster is often configured as a MySQL Cluster (An Ndb Cluster with attached MySQL Server processes) with one or more non-MySQL Server API processes attached.

All API processes including the MySQL Server use the NDBAPI[1] C++ client library to connect to the NDB Cluster and perform operations.

It is currently recommended that at least one MySQL Server is connected to an Ndb Cluster to perform DDL operations.


Refer to the MySQL Cluster entry


  1. ^ [1] The MySQL Cluster API Developer Guide