Компания Facebook представила систему управления базами данных WebScaleSQL, основанную на MySQL, популярной реляционной СУБД с открытым исходным кодом, которую развивает Oracle. Вместе с Facebook над этим проектом работали инженеры из Google, LinkedIn и Twitter.
У всех этих компаний есть общая черта: им приходится обслуживать сайты с беспрецедентно высокой посещаемостью. К примеру, социальная сеть Facebook насчитывает 1,23 миллиарда активных пользователей, и этот показатель продолжает расти. Два года назад, когда у неё было лишь 800 миллионов пользователей — около 65 процентов сегодняшнего уровня, — серверы MySQL, используемые Facebook, исполняли 60 миллионов запросов в секунду.
Обычная версия MySQL не лучшим образом справляется с такой нагрузкой, однако у неё есть другое достоинство — открытые исходники. Они позволяют исправлять недостатки системы самостоятельно, и специалисты Facebook несколько лет пользовались этой возможностью. То же самое происходило в других крупных интернет-компаниях, столкнувшихся с похожей проблемой. Теперь они решили объединить усилия и опубликовать свои наработки.
«Наша цель при запуске WebScaleSQL — обеспечить более тесное сотрудничество между членами сообщества MySQL, ориентированными на высокую нагрузку, чтобы они могли сосредоточиться на тех аспектах, которые наиболее важны именно для них», — объясняет инженер Facebook Стефан Грин в блоге компании.
Многие из нововведений, отличающих первую версию WebScaleSQL, связаны не столько с функциональностью, сколько с упрощением совместной работы над новым проектом. В частности, она включает в себя фреймворк, позволяющий автоматически тестировать и публиковать результаты каждого предложенного изменения, набор средств нагрузочного тестирования и новые тесты.
Всё это упростит разработку в будущем, но главное всё же другое. WebScaleSQL отличают от MySQL многочисленные изменения, призванные увеличить производительность СУБД. Кроме того, добавлена новая функциональность, упрощающая масштабирование системы.
Ещё более интересные изменения ожидаются в ближайшем будущем. В их число входит асинхронный клиент MySQL. Он исключает блокирование СУБД при подключении, отправке запроса или получении результатов. Асинхронный клиент уже несколько месяцев используют в Facebook. Когда его рассмотрят другие участники проекта, он будет включён в код WebScaleSQL.
Создатели WebScaleSQL особо подчёркивают, что не считают свою разработку форком. Иными словами, они не намерены развивать её независимо от MySQL. У них другие планы: после каждого релиза MySQL все содержащиеся в нём изменения и нововведения будут интегрироваться в WebScaleSQL.