Yandex пусна изходния код на своята СУБД «YDB»

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

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

Основни новости на YDB

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

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

Съвместимост с достъп до данни чрез заявки за сканиране, предназначени за извършване на ad-hoc аналитични заявки към базата данни, изпълнявани в режим само за четене и връщащи grpc поток.

Освен това, той се откроява и с това, че съхранява данни директно на блокови устройства, използвайки вградения компонент PDisk и слоя VDisk. В допълнение към VDisk, работи и DSProxy, който анализира наличността и производителността на дисковете, за да ги изключи, ако бъдат открити проблеми.

Други забележителни характеристики включват:

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

Накрая, заслужава да се отбележи, че YDB се използва в проекти на Yandex, кодът е написан на C/C++ и се разпространява под лиценза Apache 2.0. Можете да намерите изходния код, както и повече подробности за него, на следния линк.


Добавяне като предпочитан източник в Google