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

Недавно стало известно, что Яндекс опубликовал исходный код своей СУБД «ЮДБ», в котором реализована поддержка диалекта SQL и транзакций ACID.

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



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

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



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

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



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

Из другие преимущества которые выделяются:

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


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




2022-04-19T15:45:21
приложений