Главная » 2013 » Май » 11 » Высокопроизводительный MySQL-движок TokuDB переведён в разряд открытых проектов
13:34
Высокопроизводительный MySQL-движок TokuDB переведён в разряд открытых проектов
Компания Tokutek открыла исходные тексты проекта TokuDB (Tokutek storage engine), в рамках которого развивается высокопроизводительный транзакционный движок хранения для MySQL и MariaDB. Вместо классических B-tree деревьев в TokuDB применяются рекурсивные индексы (Fractal Tree indexes), что в сочетании с хранением данных в сжатом виде, позволяет значительно оптимизировать операции ввода/вывода.
Движок TokuDB оптимален в системах с интенсивной записью, когда требуется накапливать полученную в результате входящих запросов информацию и периодически генерировать на её основе отчёты. В качестве основных областей применения TokuDB называются конфигурации с большим числом запросов, связанных с добавлением, удалением и изменением данных, такие как социальные сети, анализ логов, рекламные сети и т.п.
При проведении тестов, TokuDB опережает InnoDB при добавлении больших объемов данных более чем в 10 раз (InnoDB 1,555 записей в сек, TokuDB 16,437 записей в сек), но проигрывает по степени нагрузки на CPU при выборке данных. Недостаточная эффективность выборки данных компенсируется ситуациями когда требуется произвести выборку большого числа последовательно сохранённых записей. В некоторых тестах выигрыш в скорости добавления данных достигает 80 раз. Применяемые методы сжатия данных позволяют в разы уменьшить размер базы и индексов (в 6.2 раза по сравнению с InnoDB и в 5.5 раз по сравнению с MyISAM), в некоторых ситуациях степень сжатия данных может достигать 25 раз.
Из особенностей движка TokuDB также можно отметить: [ul]
[li class=l] Обеспечении требований ACID к выполнению транзакций (атомарность, согласованность, изолированность, долговечность); [/li][li class=l] Возможность изменения хранения схемы данных на лету, без перестроения хранилища; [/li][li class=l] Отсутствие эффекта фрагментации индексов после длительного времени работы базы (нет необходимости пересоздавать индексы для устранения фрагментации); [/li][li class=l] Гибкие средства ускорения выполнения запросов через использование индексов. Поддержка горячего добавления и изменения индексов; [/li][li class=l] Поддержка создания хранилищ для терабайт данных; [/li][li class=l] Поддержка создания горячих бэкапов без остановки работы; [/li][li class=l] Поддержка репликации интенсивно поступающих потоков данных на несколько slave-серверов без отставания появления данных на slave-системах; [/li][li class=l] Соответствие требованиям MVCC (Multi-Version Concurrency Control) по работе в многопользовательских системах с большим числом одновременных запросов; [/li][li class=l] Режим быстрого восстановления после сбоя; [/li][li class=l] Высокая эффективность поддержания хранилищ с десятками и сотнями миллионов записей. Отсутствуют проблемы при активном удалении записей в таких хранилищах; [/li][li class=l] Поддержка кластерных индексов, в которых непосредственно могут сохраняться любые данные из записей; [/li][li class=l] По выполняемым операциям индексы Fractal Tree indexes схожи в B-Tree и отличаются главным образом более оптимальным использованием кэшей и доступа к данным на накопителях на жестких магнитных дисках, за счёт преобразования операций случайного доступа в наборы последовательных запросов. Для SSD-накопителей использование TokuDB оправдано сокращением числа операций записи. [/li][/ul]
В настоящее время движок TokuDB уже используется проектом Mozilla для организации работы сервиса Datazilla, занимающегося сбором информации о производительности, автоматически отправляемой браузером Firefox, при включении соответствующих настроек. Разработчики MySQL и MariaDB приветствовали решение по открытию кода TokuDB, заявив, что такой шаг будет способствовать широкому внедрению TokuDB. Более того, разработчики MariaDB уже рассматривают возможность включения TokuDB в состав MariaDB и поставки данного движка в качестве штатного компонента.
Код открыт под лицензией GPLv2. Изначально движок TokuDB развивался как проприетарный продукт, но компания Tokutek решилась на изменение бизнес-модели, которая теперь подразумевает разработку TokuDB как свободного проекта с предоставлением корпоративным заказчикам коммерческой версии TokuDB Enterprise Edition, которая отличается наличием сервиса технической поддержки, расширенными инструментами для резервного копирования и возможностью адаптации продукта под нужды заказчика.