Ответ 1
Есть хорошее сравнение InnoDB и MySQL Cluster (ndb), недавно отправленных в документы... стоит взглянуть: http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-compared.html
Архитектура кластера состоит из пула серверов MySQL, к которым обращаются приложения (приложения); эти серверы MySQL фактически не хранят данные кластера, данные разбиваются по пулу узлов данных ниже. Каждый MySQL-сервер имеет доступ к данным во всех узлах данных. Если один сервер MySQL меняет часть данных, он мгновенно отображается всем другим серверам MySQL.
Очевидно, что эта архитектура чрезвычайно упрощает масштабирование базы данных. В отличие от осколков, приложение не нуждается в том, чтобы знать, где хранятся данные - он может просто загружать баланс на всех доступных серверах MySQL. В отличие от масштабирования с помощью репликации MySQL Cluster позволяет масштабировать записи так же хорошо, как и читать. Новые узлы данных или серверы MySQL могут быть добавлены в существующий кластер без потери обслуживания для приложения.
Архитектура MySQL Cluster shared-nothing означает, что она может обеспечить чрезвычайно высокую доступность (99,999% +). Каждый раз, когда вы меняете данные, он синхронно реплицируется во вторую информацию node; если одна из данных node терпит неудачу, запросы чтения и записи приложений автоматически обрабатываются данными резервного копирования node.
Из-за распределенной природы MySQL Cluster некоторые операции могут быть медленнее (например, JOINs, которые имеют тысячи промежуточных результатов, хотя есть доступное прототипное решение, которое обращается к этому), но другие могут быть очень быстрыми и могут очень хорошо масштабироваться (например, чтение и запись первичного ключа). У вас есть возможность хранить таблицы (или даже столбцы) в памяти или на диске, и, выбрав опцию памяти (с изменениями, поставленными на диск в backgoround), транзакции могут быть очень быстрыми.
MySQL Cluster может быть более сложным для настройки, чем один сервер MySQL, но он может помешать вам реализовать очертание или разделение чтения/записи в вашем приложении. Качели и карусели.
Чтобы получить максимальную производительность и масштабируемость из MySQL Cluster, вам может понадобиться настроить ваше приложение (см. технический документ настройки производительности кластера: http://www.mysql.com/why-mysql/white-papers/mysql_wp_cluster_perfomance.php). Если у вас есть приложение, это обычно не очень важно, но если вы используете другое приложение, которое невозможно изменить, это может быть проблемой.
Последнее замечание состоит в том, что он не обязательно должен быть всем или ничем - вы можете сохранить некоторые из своих таблиц в кластере, а некоторые - с помощью других механизмов хранения, это опция для каждой таблицы. Также вы можете реплицировать между Cluster и другими системами хранения (например, использовать Cluster для вашей базы данных во время выполнения, а затем реплицировать в InnoDB для создания сложных отчетов).