Det finns en bra jämförelse mellan InnoDB och MySQL Cluster (ndb) som nyligen publicerats i dokumenten...värt att ta en titt:http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-compared.html
Klusterarkitekturen består av en pool av MySQL-servrar som nås av applikationen/applikationerna; Dessa MySQL-servrar lagrar faktiskt inte klusterdata, data är uppdelade över poolen av datanoder nedan. Varje MySQL-server har tillgång till data i alla datanoder. Om en MySQL-server ändrar en bit data är den omedelbart synlig för alla andra MySQL-servrar.
Uppenbarligen gör denna arkitektur det extremt enkelt att skala ut databasen. Till skillnad från skärning behöver applikationen inte veta var data lagras - den kan bara ladda balans över alla tillgängliga MySQL-servrar. Till skillnad från utskalning med MySQL-replikering låter Cluster dig skala skrivningar lika bra som läsningar. Nya datanoder eller MySQL-servrar kan läggas till i ett befintligt kluster utan att tjänsten går förlorad för applikationen.
MySQL Clusters shared-nothing-arkitektur gör att den kan leverera extremt hög tillgänglighet (99,999%+). Varje gång du ändrar data replikeras den synkront till en andra datanod; om en datanod misslyckas hanteras appens läs- och skrivbegäranden automatiskt av backupdatanoden.
På grund av den distribuerade naturen hos MySQL Cluster kan vissa operationer vara långsammare (till exempel JOINs som har tusentals interimsresultat - även om det finns en prototyplösning tillgänglig som åtgärdar detta) men andra kan vara mycket snabba och kan skalas extremt bra (t.ex. primär nyckel läser och skriver). Du har möjlighet att lagra tabeller (eller till och med kolumner) i minnet eller på disken och genom att välja minnesalternativet (med ändringar som kontrolleras på disken i bakgrunden) kan transaktioner vara mycket snabbt.
MySQL Cluster kan vara mer komplext att konfigurera än en enda MySQL-server men det kan förhindra att du behöver implementera sharding eller läs/skrivdelning i din applikation. Gungor och rondeller.
För att få ut den bästa prestandan och skalbarheten av MySQL Cluster kan du behöva justera din applikation (se White paper om klusterprestandajustering:http://www.mysql.com/why-mysql/white-papers/mysql_wp_cluster_perfomance.php ). Om du äger applikationen är detta normalt inte en stor sak, men om du använder någon annans applikation som du inte kan ändra kan det vara ett problem.
En sista anmärkning är att det inte behöver vara allt eller ingenting - du kan välja att lagra några av dina tabeller i Cluster och några med andra lagringsmotorer, detta är ett alternativ för varje tabell. Du kan också replikera mellan Cluster och andra lagringsmotorer (använd till exempel Cluster för din runtime-databas och replikera sedan till InnoDB för att generera komplexa rapporter).