Яндекс опубликовал исходный код своей СУБД «ЮБД»

Недавно было объявлено, что компания Yandex выпустила исходный код своей СУБД "YDB" , которая реализует поддержку диалекта SQL и ACID-транзакций.

Система управления базами данных (СУБД) была создана с нуля и изначально разрабатывалась с целью обеспечения отказоустойчивости , автоматического восстановления после сбоев и масштабируемости. Стоит отметить, что Яндекс запустил в эксплуатацию кластеры YDB, включающие более 10 000 узлов, хранящие сотни петабайт данных и обрабатывающие миллионы распределенных транзакций в секунду.

Основные новинки YDB

Одна из ключевых особенностей YDB — использование реляционной модели данных с таблицами. Для запросов и определения схемы данных используется YQL (YDB Query Language); это диалект SQL, адаптированный для работы с большими распределенными базами данных . При создании схемы хранения поддерживается древовидная группировка таблиц, подобная каталогам в файловой системе. Предоставляется API для работы с данными в формате JSON.

Также заслуживает внимания его способность создавать отказоустойчивые конфигурации , которые продолжают функционировать при сбоях дисков, узлов, стоек и даже отдельных центров обработки данных. YDB поддерживает синхронное развертывание и репликацию в трех зонах доступности, сохраняя при этом работоспособность кластера в случае сбоя одной из зон.

Совместимость с доступом к данным посредством сканирующих запросов, предназначенных для выполнения аналитических запросов к базе данных в произвольном порядке, выполняемых в режиме только для чтения и возвращающих поток gRPC.

Кроме того, он выделяется тем, что хранит данные непосредственно на блочных устройствах, используя собственный компонент PDisk и слой VDisk. Помимо VDisk, работает DSProxy, который анализирует доступность и производительность дисков, чтобы исключить их при обнаружении проблем.

К числу других примечательных особенностей относятся:

  • Гибкая архитектура, позволяющая строить различные сервисы поверх YDB, вплоть до виртуальных блочных устройств и персистентных очередей. Подходит для разных типов рабочей нагрузки: OLTP и OLAP (аналитические запросы).
  • Поддержка многопользовательских (мультитенантных) и бессерверных конфигураций.
  • Возможность аутентификации клиентов. Пользователи могут создавать свои собственные виртуальные кластеры и базы данных на общей общей инфраструктуре, учитывая потребление ресурсов с точки зрения количества запросов и размера данных, или путем аренды/резервирования определенных вычислительных ресурсов и места для хранения.
  • Возможность настроить срок полезного использования записей для автоматического удаления устаревших данных.
  • Взаимодействие с СУБД и отправка запросов осуществляется с помощью интерфейса командной строки, встроенного веб-интерфейса или YDB SDK, который предоставляет библиотеки для C++, C# (.NET), Go, Java, Node.js, PHP и Python.
  • Автоматическое восстановление после сбоев с минимальной задержкой для приложений и автоматическое поддержание заданной избыточности при хранении данных.
  • Автоматическое создание индексов по первичному ключу и возможность определения вторичных индексов для повышения эффективности доступа к произвольным столбцам.
  • Горизонтальная масштабируемость. По мере роста нагрузки и размера хранимых данных кластер можно расширять, просто подключая новые узлы. Уровни вычислений и хранилища разделены, что позволяет отдельно масштабировать вычисления и хранилище. Сама СУБД следит за равномерным распределением данных и нагрузки с учетом доступных аппаратных ресурсов. Возможна реализация географически распределенных конфигураций, охватывающих несколько центров обработки данных в разных частях мира.
  • Поддержка модели строгой согласованности и транзакций ACID при обработке запросов, охватывающих несколько узлов и таблиц. Для повышения производительности можно выборочно отключить проверку согласованности.
  • Автоматическая репликация данных, автоматическое секционирование (разделение, сегментирование) при увеличении размера или нагрузки, а также автоматическая балансировка нагрузки и данных между узлами.

Наконец, стоит отметить, что YDB используется в проектах Яндекса, код написан на C/C++ и распространяется под лицензией Apache 2.0. Исходный код, а также более подробная информация о нём, доступны по следующей ссылке.


Добавить в качестве предпочтительного источника в Google