Наскоро новината съобщи това Yandex пусна изходния код на своята СУБД, «YDB», който реализира поддръжка за SQL диалект и ACID транзакции.
СУБД е построен от основите и първоначално е разработен с оглед осигуряване на отказоустойчивост, автоматично преминаване при отказ и мащабируемост. Трябва да се отбележи, че Yandex стартира работещи YDB клъстери, включително повече от 10 хиляди възли, които съхраняват стотици петабайта данни и обслужват милиони разпределени транзакции в секунда.
Основни новости на YDB
От характеристиките, които се открояват от YDB е използване на релационния модел на данни с YQL таблици (YDB Query Language) се използва за запитване и дефиниране на схемата на данните, която е диалект на SQL, адаптиран за работа с големи разпределени бази данни. При създаване на схема за съхранение се поддържа дървовидно групиране на таблици, което наподобява директориите във файлова система. Предоставен е API за работа с данни във формат JSON.
The способност за създаване на устойчиви на грешки конфигурации които продължават да функционират, когато дискове, възли, стелажи и дори отделни центрове за данни се повредят. YDB поддържа синхронно разгръщане и репликация в три зони за наличност, като същевременно поддържа състоянието на клъстера в случай на повреда на една от зоните.
Поддръжка за достъп до данни използващи заявки за сканиране, предназначени да изпълняват ad-hoc аналитични заявки към базата данни, изпълнявани в режим само за четене и връщащи grpc поток.
Освен това също се откроява съхраняване на данни директно на блокови устройства с помощта на компонента PDisk native и 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, можете да видите изходния код, както и повече подробности за него В следващия линк.