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