25.2.6.1 Различия между хранилищами NDB и InnoDB
Хранилище NDB реализовано с использованием распределённой архитектуры shared-nothing, что приводит к поведению, отличающемуся от InnoDB в нескольких аспектах. Для тех, кто не работал с NDB, из-за его распределённой природы могут возникнуть неожиданные проблемы в отношении транзакций, внешних ключей, лимитов таблиц и других характеристик. Это показано в следующей таблице:
Таблица 25.1 Различия между хранилищами InnoDB и NDB
| Функция |
InnoDB (MySQL 8.4) |
NDB 8.4 |
|---|---|---|
| Версия MySQL Server | 8.4 | 8.4 |
InnoDB Версия |
InnoDB 8.4.4 |
InnoDB 8.4.4 |
| Версия NDB Cluster | N/A |
NDB 8.4.5/8.4.5 |
| Ограничения хранилища | 64TB | 128TB |
| Внешние ключи | Да | Да |
| Транзакции | Все стандартные типы | READ COMMITTED |
| MVCC | Да | Нет |
| Сжатие данных | Да | Нет (файлы контрольных точек и резервных копий NDB можно сжимать) |
| Поддержка больших строк (> 14К) | Поддерживается для VARBINARY, VARCHAR, BLOB и TEXT столбцов | Поддерживается только для BLOB и TEXT столбцов (использование этих типов для хранения очень больших объёмов данных может снизить производительность NDB) |
| Поддержка репликации | Асинхронная и полусинхронная репликация с использованием MySQL Replication; MySQL Групповая репликация | Автоматическая синхронная репликация внутри NDB Cluster; асинхронная репликация между NDB Clusters с использованием MySQL Replication (полусинхронная репликация не поддерживается) |
| Масштабирование для операций чтения | Да (MySQL Replication) | Да (автоматическое разбиение в NDB Cluster; репликация NDB Cluster) |
| Масштабирование для операций записи | Требует разбиения на уровне приложения (фрагментация) | Да (автоматическое разбиение в NDB Cluster прозрачно для приложений) |
| Высокая доступность (HA) | Встроенная, из InnoDB кластера | Да (разработан для 99,999% времени безотказной работы) |
| Восстановление от сбоя узла и отказ | Из MySQL групповой репликации | Автоматическое (ключевой элемент архитектуры NDB) |
| Время восстановления от сбоя узла | 30 секунд или больше | Обычно < 1 секунды |
| Производительность в реальном времени | Нет | Да |
| Таблицы в оперативной памяти | Нет | Да (некоторые данные могут быть опционально сохранены на диске; хранение данных в оперативной памяти и на диске устойчиво) |
| Доступ к хранилищу через NoSQL | Да | Да (несколько API, включая Memcached, Node.js/JavaScript, Java, JPA, C++, и HTTP/REST) |
| Одновременные и параллельные записи | Да | До 48 пишущих потоков, оптимизировано для одновременных записей |
| Обнаружение и разрешение конфликтов (несколько источников) | Да (MySQL групповая репликация) | Да |
| Хеш-индексы | Нет | Да |
| Онлайн добавление узлов | Чтение/запись реплики с использованием MySQL групповой репликации | Да (все типы узлов) |
| Онлайн апгрейды | Да (с использованием репликации) | Да |
| Онлайн изменения схемы | Да, как часть MySQL 8.4 | Да |
© 2025 Oracle
Licensed under the GPLv2 License.