Yandex отвори кода на разпределената СУБД YDB, поддържаща SQL

Yandex публикува изходните текстове на разпределената YDB СУБД, която реализира поддръжка за SQL диалект и ACID транзакции. СУБД е създадена от нулата и първоначално е разработена с цел да се гарантира толерантност към грешки, автоматично възстановяване в случай на повреда и мащабируемост. Отбелязва се, че Yandex стартира работещи YDB клъстери, включително повече от 10 хиляди възли, съхраняващи стотици петабайти данни и обслужващи милиони разпределени транзакции в секунда. YDB се използва в проекти на Yandex като Market, Cloud, Smart Home, Alice, Metrika и Auto.ru. Кодът е написан на C/C++ и се разпространява под лиценз Apache 2.0. За запознаване и бързо стартиране можете да използвате готов Docker контейнер.

Характеристики на проекта:

  • Използване на релационния модел на данни с таблици. YQL (YDB Query Language) се използва за запитване и дефиниране на схемата за данни, която е диалект на SQL, адаптиран за работа с големи разпределени бази данни. При създаване на схема за съхранение се поддържа дървовидно групиране на таблици, наподобяващи директории във файлова система. Предоставен е API за работа с данни във формат JSON.
    Yandex отвори кода на разпределената СУБД YDB, поддържаща SQL
  • Поддръжка за достъп до данни с помощта на заявки за сканиране, предназначени за извършване на аналитични ad-hoc заявки към базата данни, изпълнени в режим само за четене и връщане на grpc поток.
  • Взаимодействието със СУБД и изпращането на заявки се осъществява с помощта на интерфейса на командния ред, вградения уеб интерфейс или YDB SDK, който предоставя библиотеки за C ++, C # (.NET), Go, Java, Node.js, PHP и Python.
  • Възможността за създаване на устойчиви на грешки конфигурации, които продължават да работят, когато отделни дискове, възли, стелажи и дори центрове за данни се повредят. YDB поддържа внедряване и синхронна репликация в три зони на достъпност, като същевременно поддържа изправността на клъстера в случай на повреда на една от зоните.
  • Автоматично възстановяване от повреди с минимални закъснения за приложенията и автоматично поддържане на зададения излишък при съхраняване на данни.
  • Автоматично създаване на индекси на първичния ключ и възможност за дефиниране на вторични индекси за подобряване на ефективността на достъпа до произволни колони.
  • Хоризонтална мащабируемост. С нарастването на натоварването и размера на съхранените данни, клъстерът може да бъде разширен чрез просто свързване на нови възли. Нивата на изчисление и съхранение са разделени, което позволява отделно мащабиране на изчисления и съхранение. Самата СУБД следи равномерното разпределение на данните и натоварването, отчитайки наличните хардуерни ресурси. Възможно е да се разположат географски разпределени конфигурации, покриващи няколко центъра за данни в различни части на света.
  • Поддръжка за модел на силна последователност и ACID транзакции при обработка на заявки, обхващащи множество възли и таблици. За да подобрите производителността, можете избирателно да деактивирате контрола на последователността.
  • Автоматична репликация на данни, автоматично разделяне (разделяне, шардинг), когато размерът или натоварването се увеличи, и автоматично натоварване и балансиране на данни между възлите.
  • Съхраняване на данни директно на блокови устройства с помощта на собствен PDisk компонент и VDisk слой. Върху VDisk работи DSProxy, който анализира наличността и производителността на дисковете, за да ги изключи, ако бъдат открити проблеми.
  • Гъвкава архитектура, която ви позволява да създавате върху YDB, различни услуги, до виртуални блокови устройства и постоянни опашки (persistent queue). Пригодност на приложението за различни типове натоварване, OLTP и OLAP (аналитични заявки).
  • Поддръжка за многопотребителски (multitenant) и конфигурации без сървър. Възможност за удостоверяване на клиенти. Потребителите могат да създават свои собствени виртуални клъстери и бази данни в обща споделена инфраструктура, като вземат предвид потреблението на ресурси на ниво брой заявки и размер на данните или чрез наемане/резервиране на определени изчислителни ресурси и място за съхранение.
  • Възможност за регулиране на живота на записите за автоматично изтриване на остарели данни.

Източник: opennet.ru

Добавяне на нов коментар