MySQL Server offers a number of choices in storage engines. Since
both NDBCLUSTER and
InnoDB can serve as transactional
MySQL storage engines, users of MySQL Server sometimes become
interested in MySQL Cluster. They see
NDB as a possible alternative or
upgrade to the default InnoDB storage
engine in MySQL 5.5. While NDB and
InnoDB share common characteristics,
there are differences in architecture and implementation, so that
some existing MySQL Server applications and usage scenarios can be
a good fit for MySQL Cluster, but not all of them.
In this section, we discuss and compare some characteristics of
the NDB storage engine used by MySQL
Cluster with InnoDB used in MySQL 5.1
and MySQL 5.5. The next few sections provide a technical
comparison. In many instances, decisions about when and where to
use MySQL Cluster must be made on a case-by-case basis, taking all
factors into consideration. While it is beyond the scope of this
documentation to provide specifics for every conceivable usage
scenario, we also attempt to offer some very general guidance on
the relative suitability of some common types of applications for
NDB as opposed to
InnoDB backends.
While it is possible to use InnoDB
tables with MySQL Cluster, such tables are not clustered. MySQL
Cluster NDB 7.1 releases use a mysqld based on
MySQL 5.1 which includes InnoDB 1.0; MySQL
Cluster NDB 7.2.1 and later are based on MySQL Server 5.5, which
includes support for InnoDB 1.1. It is also not
possible to use programs or libraries from a MySQL Cluster NDB 6.x
or MySQL Cluster NDB 7.x distribution with MySQL Server 5.1 or
MySQL Server 5.5, or the reverse.
While it is also true that some types of common business
applications can be run either on MySQL Cluster or on MySQL Server
(most likely using the InnoDB storage
engine), there are some important architectural and implementation
differences. Section 17.1.5.1, “Differences Between the NDB and
InnoDB Storage Engines”,
provides a summary of the these differences. Due to the
differences, some usage scenarios are clearly more suitable for
one engine or the other; see
Section 17.1.5.2, “NDB and InnoDB
Workloads”. This in turn
has an impact on the types of applications that better suited for
use with NDB or
InnoDB. See
Section 17.1.5.3, “NDB and InnoDB
Feature Usage Summary”, for a comparison
of the relative suitability of each for use in common types of
database applications.
For information about the relative characteristics of the
NDB and
MEMORY storage engines, see
When to Use MEMORY or MySQL Cluster.
See Chapter 14, Storage Engines, for additional information about MySQL storage engines.