MyRocks, движок хранения к СУБД MySQL от Facebook
Facebook запустил проект MyRocks, который включает новый движок хранения для системы управления базами данных MySQL 5.6. Он основан на RocksDB и оптимизирован для использования с Flash-накопителями. Основными задачами MyRocks являются улучшение эффективности хранения данных на Flash-носителях и уменьшение объема базы данных.
В InnoDB основными факторами, способствующими большому потреблению дискового пространства, являются фрагментация, низкая степень сжатия и фиксированный размер страниц для хранения данных (8 КБ). Даже если данные занимают 5 КБ, блок размером 8 КБ все равно будет расходоваться. В отличие от этого, MyRocks использует плавающий размер страниц и предлагает более эффективный метод сжатия. Кроме того, MyRocks требует меньше операций последовательного чтения и записи благодаря модели хранения данных на основе логов (Log Structured Merge Trees), которая допускает только добавление данных, а очистка выполняется сборщиком мусора.
Внедрение нового хранилища на основных серверах Facebook для хранения аналогичного объема данных позволило сократить размер базы данных на 50% по сравнению с сжатым хранилищем InnoDB и в 3,5 раза по сравнению с InnoDB без сжатия. Также использование MyRocks привело к ускорению процесса репликации за счет снижения количества операций чтения при обновлении ключей. Операции загрузки данных в базу тоже стали быстрее благодаря пакетной обработке.
Однако MyRocks имеет некоторые ограничения, такие как отсутствие поддержки внешних ключей, онлайн DDL, автоматического определения взаимных блокировок, партиционирования, а также полнотекстовых и пространственных индексов. В будущем предполагается устранить эти недостатки.
Репозиторий: https://github.com/facebook/mysql-5.6