The following improvements to MySQL Cluster have been made in MySQL Cluster NDB 7.1.
These features are in early development phase. Timing, availability, and implementation details are not guaranteed, and are subject to change at any time without notice.
Java connectors for MySQL Cluster.
The MySQL Cluster distribution now includes 2 new Java
user APIs, ClusterJ and ClusterJPA. ClusterJ is an
object-relational interface in a manner similar to that of
Java persistence frameworks such as Hibernate. Cluster JPA
is a reimplementation of OpenJPA. ClusterJ uses a backend
library (NdbJTie) that provides access to the
NDB
storage engine without
using a MySQL Server connection or JDBC. ClusterJPA also
uses NdbJTie when it improves performance, but can also
process complex queries using JDBC and a MySQL Server
connection, where it can take advantage of the MySQL query
optimizer.
ClusterJ and Cluster JPA can also be made to work with recent MySQL Cluster NDB 7.0 releases although the necessary library and JAR files are included only in MySQL Cluster NDB 7.1.1 and later.
MySQL Cluster information database (ndbinfo
).
The ndbinfo
information database makes
it possible to obtain real-time characteristics of a MySQL
Cluster by issuing queries from the
mysql client or other MySQL client
applications. ndbinfo
provides metadata
specific to MySQL Cluster similarly to how the
INFORMATION_SCHEMA
database provides
metadata for the standard MySQL Server. This eliminates
much of the need to read log files, issue
REPORT
or DUMP
commands in the ndb_mgm client, or
parse the output of ndb_config in order
to get configuration and status information from a running
MySQL Cluster.
For more information, see
Section 5.8, “The ndbinfo
MySQL Cluster Information Database”.
Native support for default column values.
Starting with MySQL Cluster NDB 7.1.0, default values for
table columns are stored in the NDB kernel rather than by
the MySQL server as was done previously. This means that
inserts on tables having column value defaults can be
smaller and faster than before, because less data must be
sent from SQL nodes to NDBCLUSTER
.
Tables created using previous MySQL Cluster releases can
still be used in MySQL Cluster 7.1.0 and later; however,
they do not support native default values until they are
upgraded. You can upgrade a table with non-native default
values to support native default values using an offline
ALTER TABLE
statement.
Further enhancements based on this work that we hope to implement in future MySQL Cluster releases include the following:
Decrease NDB
space
requirements, since there is no longer any need to
store the default value for every row
Implement REPLACE
more
efficiently, because there is no need any longer to
read the current row before replacing it
Provide idempotency in replication for tables having non-nullable columns
--nowait-nodes
option for management
servers.
It is now possible to configure a cluster with two
management servers, but to start the cluster using only
one of them by starting the management node daemon with
the --nowait-nodes
option. The other management server can then be started at
a later time to join the running MySQL Cluster.
Improved lock handling for primary key lookups on
BLOB
tables.
A MySQL Cluster table stores all but the first 256 bytes
of any BLOB
or
TEXT
column values in a
separate BLOB
table; when
executing queries against such tables, a shared lock is
obtained. Prior to MySQL Cluster NDB 7.1.1, when the query
used a primary key lookup and took place within a
transaction, the lock was held for the duration of the
transaction, even after no more data was being read from
the NDB
table. Now in such
cases, the lock is released when all
BLOB
data associated with
the table has been read. (Bug#49190)
A shared lock is also taken for unique key lookups; it is still the case that this lock is held for the duration of the transaction.
Heartbeat thread policy and priority.
Beginning with MySQL Cluster NDB 7.1.2, a new
configuration parameter
HeartbeatThreadPriority
makes it
possible to set the policy and the priority for the
heartbeat thread on management and API nodes.
Improved access to partitioning information.
The ndb_desc utility now provides
additional information about the partitioning of data
stored in MySQL Cluster. Beginning with MySQL Cluster NDB
7.1.2, the --blob-info
option causes this program to include partition
information for BLOB
tables
in its output. Also beginning with MySQL Cluster NDB
7.1.2, the
--extra-node-info
option
causes ndb_desc to include information
about data distribution (that is, which table fragments
are stored on which data nodes). Each of these options
also requires the use of the
--extra-partition-info
option.
Information about partition-to-node mappings can also be
obtained using the
Table::getFragmentNodes()
method, also
added in MySQL Cluster NDB 7.1.2.
Replication attribute promotion and demotion.
Beginning with MySQL Cluster NDB 7.1.3, MySQL Cluster
Replication supports attribute promotion and demotion when
replicating between columns of different but similar types
on the master and the slave. For example, it is possible
to promote an INT
column on
the master to a BIGINT
column on the slave, and to demote a
TEXT
column to a
VARCHAR
column.
The implementation of type demotion distinguishes between
lossy and non-lossy type conversions, and their use on the
slave can be controlled by setting the
slave_type_conversions
global server system variable.
For more information, see Attribute promotion and demotion (MySQL Cluster).
Change in ndbinfo
database.
The experimental ndbinfo.pools
table
was removed from ndbinfo
in MySQL
Cluster NDB 7.1.3. Applications which used this table can
and should be rewritten to use other
ndbinfo
tables. For more information,
see Section 5.8.8, “The ndbinfo pools
Table”.