Разделы

ПО Свободное ПО Цифровизация Инфраструктура Техника

«Яндекс» опубликовал исходный код СУБД, на которой работают «Такси», «Маркет» и еще 500 проектов

Яндекс опубликовал исходный код распределенной системы управления базами данных Yandex Database (YDB). Эксперты, опрошенные CNews считают, что решение найдет спрос в сервисах, основанных на технологиях Big Data и при работе с базами данных SQL и NoSQL.

YDB способна обрабатывать миллионы запросов в секунду

«Яндекс» опубликовал исходный код распределенной системы управления базами данных Yandex Database (YDB). Эта технология позволяет создавать отказоустойчивые сервисы, которые могут выдерживать большую операционную нагрузку. Код предоставляется по открытой лицензии Apache 2.0. Развернуть YDB можно как на собственных, так и на сторонних серверах.

YDB – это отказоустойчивая распределенная система управления базами данных (СУБД) с поддержкой бессерверных вычислений от команды «Яндекса» (аналог RDS Aurora от Amazon).

В пресс-службе компании пояснили, что YDB способна обрабатывать миллионы запросов в секунду и сохраняет работоспособность в случае выхода из строя сервера или даже целого дата-центра. Это обеспечивает стабильность созданных на ее основе продуктов.

«Яндекс» использует YDB больше пяти лет — проекты там размещают команды «Алисы», «Такси», «Маркета», «Метрики» и других сервисов (в настоящее время на YDB работают почти 500 проектов).

Яндекс опубликовал исходный код распределенной СУБД Yandex Database

По словам гендиректора Yandex Cloud Алексея Башкеева, публикуя код YDB, компания «следует принципам открытости» и делится наработками, на которые потратила почти десять лет.

В открытом доступе от «Яндекса» также находится библиотека машинного обучения CatBoost, которая используется в «Поиске» и других сервисах компании. В 2016 г. был опубликован исходный код ClickHouse — аналитической системы управления базами данных.

Почему YDB лучше аналогов

Рынок СУБД развивается давно, на нем представлено много известных и зрелых продуктов. «Яндекс» пояснил, какие преимущества может дать YDB в сравнении с другими базами.

Традиционные (нераспределенные) реляционные СУБД

Один из вариантов масштабирования в реляционных базах — ручное шардирование. То есть при разворачивании нужно настроить несколько экземпляров базы и решить, к какому экземпляру обращаться в приложении. Если нужен одновременный доступ к данным из нескольких экземпляров баз данных, придется самостоятельно заниматься организацией распределенных транзакций. YDB масштабируется на чтение и запись «из коробки», для этого нужно добавить больше оборудования в кластер. «На практике мы работаем с базами размером в сотни терабайт под нагрузкой в миллионы RPS», - указывают авторы статьи.

NoSQL-базы

NoSQL-базы очень хорошо масштабируются, отметили в «Яндексе». Однако, функциональность таких баз ограничена по сравнению с реляционными БД. Например, транзакционное обновление нескольких таблиц с высокой скоростью при помощи SQL-запросов — реальная проблема для NoSQL.

Опенсорсные базы Distributed SQL

В компании считают, что некоторые из таких систем имеют очень похожие возможности по сравнению с YDB. У YDB отмечены следующие плюсы: «Яндекс» как пользователь дает YDB возможность на практике доказывать все свои свойства — поверх СУБД работает множество сервисов с высокими нагрузками и большими объемами данных. Кроме того, поверх YDB как платформы была реализована система хранения и обработки данных: хранилище временных рядов, на базе которого построены мониторинги в Яндексе; персистентные очереди, на которых построена шина передачи данных Logbroker; Network Block Store — виртуальные диски для Yandex Cloud. Также YDB может стать экосистемой управления данными, поскольку она дает возможность использовать механизм федеративных запросов и механизм потоковых запросов на базе YQL.

Проприетарные базы Distributed SQL

Код большинства систем ведущих мировых облачных провайдеров закрыт, отмечено в статье. Некоторые из этих систем также завязаны на специализированное оборудование. Это лишает клиентов возможности локального развертывания системы и разворачивания в различных облаках. YDB, в свою очередь, работает на стандартном железе, ее можно развернуть везде с помощью оператора Kubernetes или вручную.

«Открытие проекта создает интереснейшую для всех win-win-ситуацию. У сообщества, с одной стороны, появляется возможность пользоваться уникальными наработками, в которые Яндекс инвестировал сотни человеко-лет, познакомиться с кодом, свободно запускать и разрабатывать у себя решения на базе YDB. Технологии, позволяющие Яндексу развиваться быстрее, оперативно реагировать на рост нагрузок и масштабироваться, теперь доступны каждому, - говорят представители «Яндекса». - С другой стороны, сильно увеличится вариативность пользователей, мы сможем получить обратную связь от мирового сообщества и сделать базу еще лучше. Важно сломать барьер для пользователей, которые заинтересованы в технологии, но останавливаются, опасаясь закрытости и/или невозможности использовать ее на своем оборудовании или в своих облаках».

Экспертные мнения

В пресс-службе «Яндекса» рассказали CNews, что YDB можно использовать для любого продукта или сервиса, работа которого требует хранения и обработки больших объемов данных.

Ведущий инженер CorpSoft24 Михаил Сергеев сказал CNews, что данный продукт в облаке можно использовать в сервисах с плохо прогнозируемой нагрузкой, которым необходимо в автоматическом режиме повышать количество необходимых ресурсов для обработки запросов, например интернет-магазин в среднем делает 100 запросов в секунду, но когда проходит какая-то акция («Черная пятница», распродажа, рекламный всплеск) и запросов становиться намного больше. YDB, по словам эксперта, сможет увеличить количество шардов и обработать все эти запросы, в то время, как обычная статическая база данных перестала бы обслуживать их из-за высокой нагрузки.

«Также использование шардирования в архитектуре базы данных YDB позволяет неограниченно горизонтально масштабировать базы данных и использовать ее в проектах, где требуется хранить и обрабатывать гигантские объемы данных (миллионы RPS, петабайты данных). В 2016 г. Яндекс также открыл исходный код своей аналитической СУБД ClickHouse, которая не имеет аналогов и используется многими крупными компаниями во всем мире», - заключил эксперт.

Менеджер по продуктам компании Linxdatacenter Станислав Братчиков сказал CNews, что «Яндекс» разработал данное решение на собственном языке для общения с распределенными базами данных, что позволит унифицировать обращения к облачным базам. По его мнению, это найдет спрос в сервисах, основанных на технологиях Big Data и при работе с базами данных SQL и NoSQL.

«Раньше разработчики писали сложные сценарии для соединения различных БД между собой и обработки данных в них. Решение «Яндекса» позволяет им общаться между собой автоматически, бесшовно. Это положительно повлияет на скорость обработки запросов», - отметил эксперт.

Он также рассказал, что данная технология применима в B2C-решениях, где разработчики создают различные пользовательские приложения – типа сервисов такси, заказа билетов, соцсетей, в мобильной разработке. Также – в IoT, где тоже есть запрос на упрощение обращений и повышения скорости обработки запросов при работе с большим объемом данных от устройств. В целом, как считает Братчиков, такое решение упростит жизнь разработчикам в нашей стране. «Посмотрим, какой отклик оно найдет в профессиональном сообществе», - заключил эксперт.

Екатерина Солнцева