Яндекс відкрив код розподіленої СУБД YDB, що підтримує SQL

Компанія Яндекс опублікувала вихідні тексти розподіленої СУБД YDB, що реалізує підтримку діалекту SQL та ACID-транзакцій. СУБД створена з нуля і спочатку розвивається з огляду на забезпечення стійкості до відмови, автоматичного відновлення при збоях і масштабованості. Зазначається, що компанією Яндекс запущені робочі кластери YDB, що включають понад 10 тисяч вузлів, що зберігають сотні петабайт даних та обслуговують мільйони розподілених транзакцій за секунду. YDB використовується в таких проектах Яндекс, як Маркет, Хмара, Розумний Дім, Аліса, Метрика та Auto.ru. Код написаний мовами C/C++ та розповсюджується під ліцензією Apache 2.0. Для ознайомлення та швидкого запуску можна використовувати готовий Docker-контейнер.

Особливості проекту:

  • Використання реляційної моделі даних із таблицями. Для запитів та визначення схеми даних використовується мова YQL (YDB Query Language), що є діалектом SQL, адаптованим для роботи з великими розподіленими базами даних. Під час створення схеми зберігання підтримується деревоподібне угруповання таблиць, що нагадує каталоги у файловій системі. Надається API для роботи з даними у форматі JSON.
    Яндекс відкрив код розподіленої СУБД YDB, що підтримує SQL
  • Підтримка доступу до даних з використанням скан запитів, призначених для виконання аналітичних ad-hoc запитів над БД, що виконуються в режимі тільки для читання та повертають потік grpc.
  • Взаємодія з СУБД та відправлення запитів здійснюється за допомогою інтерфейсу командного рядка, вбудованого web-інтерфейсу або набору 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

Додати коментар або відгук