Опубликован 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 пока имеет ряд ограничений, таких как отсутствие поддержки внешних ключей, online DDL, автоматического определения взаимных блокировок, партицирования, полнотекстовых и пространственных индексов. Со временем имеющиеся недостатки планируется устранить.