I have never dipped my hands in MySQL Cluster and want to know how it can benefit me. When is it best to use it, and does it have performance benefits?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
MySQL Cluster is designed around 3 core principles:
These are discussed in more detail in the following paper (note, registration required): http://mysql.com/why-mysql/white-papers/mysql_wp_scaling_web_databases.php
Adaptive Query Localization is a feature of the current MySQL Cluster 7.2 development release and rapidly improves performance of JOIN operations by pushing them down to the data nodes, thereby significantly reducing network traffic - to address the point Rolando makes above. You can read more about it here: http://dev.mysql.com/tech-resources/articles/mysql-cluster-labs-dev-milestone-release.html
MySQL Cluster is licensed under the GPL and can be downloaded from dev.mysql.com, with on-line help via the forums: forums.mysql.com/list.php?25
When I wanted to get information about MySQL Cluster, MySQL (before Sun bought it) would send out a brief questionnaire, which I wish I still had. One of the questions asked if your tables had integer keys only.
Although MySQL Cluster is ACID-complaint, it does not provide a suitable storage engine for data with compound keys. In some respects, you have to plan its usage like that of a MongoDB or Cassandra in terms of data layout and sharding.
You also have to consider the most annoying part of MySQL Cluster: Network Communication. NDB Cluster tends to be chatty among servers. Even Gig-E can be brought to its knees if doing range queries or full table scans. You must be disciplined enough to use primary keys and unique keys, especially if your application thrives on such keys.
Unless you adhere to these simple observations, MySQL Cluster will do way more harm than good.