YDB

Материал из Википедии — свободной энциклопедии
Перейти к навигацииПерейти к поиску
YDB
ТипСУБД
РазработчикЯндекс
ЛицензияApache 2.0
Сайтофициальный сайт проекта YDB

YDB — распределённаяотказоустойчиваяреляционнаясистема управления базами данных (СУБД) компанииЯндекс с открытым исходным кодом.

Содержание

Функциональность

[править |править код]

YDB — технология, позволяющая создавать крупныесервисы, которые способны выдерживать большую операционную нагрузку (до уровня миллионов запросов в секунду). В качестве языка запросов по умолчанию используется YQL[1] (YDB Query Language) —диалект SQL сострогой типизацией[2].

Входит в число СУБД, предоставляющихACID-гарантии транзакций[3].

Ближайшие аналоги среди систем баз данных, также доступных в виде открытого ПО, —YugabyteDB иCockroachDB.

YDB подразумевает самостоятельное развёртывание накластеры физическиххостов иливиртуальных машин при помощи инструментовKubernetes, либо в качестве управляемого сервиса вYandex Cloud. Для управляемой реализации выбираетсярежим бессерверных вычислений илиDedicated-режим.

Особенности реализации

[править |править код]

YDB не поддерживаетUUID в качестве самостоятельного типа данных[4].

Отсутствует встроенная функция автоинкремента значения поля при добавлении данных в таблицу[4].

Архитектура

[править |править код]

YDB работает на кластерах с архитектурой «shared nothing» и использует стандартное оборудование (commodity hardware). Система строится на основе логических компонентов — таблеток. Таблетка реализуетпротокол решения задачиконсенсуса в сети ненадежных вычислителей. По функциональности этот протокол аналогичен протоколамПаксос иRaft.

Пользовательские таблицы имеют обязательный первичный ключ, таблицы шардируются по диапазонам первичного ключа. Шардом данных управляет таблетка, размер шарда может составлять до единиц гигабайт. Такие таблетки носят название DataShard. Таблетка DataShard может автоматически делиться на несколько таблеток при превышении порога хранимых данных или порога нагрузки на шард. Так система прозрачно масштабируется с ростом пользовательской нагрузки.

Существует множество разных типов таблеток помимо DataShard: таблетки SchemeShard для хранения метаданных о пользовательских таблицах, Hive для балансировки и запуска таблеток, Coordinator и Mediator для планирования распределенных транзакций, и многие другие.

Данные таблеток хранятся в слое Distributed Storage, который представляет собой key-value хранилище со специализированным протоколом для поддержки протокола таблеток. Distributed Storage обеспечивает репликацию данных, данные таблеток хранятся в качествеBLOB[3].

YDB реализовывает распределенные транзакции между данными одной или нескольких таблиц. Механизм распределенных транзакций опирается на алгоритм Calvin[5]. Однако в отличие от Calvin, YDB поддерживает выполнение интерактивных транзакций и транзакций, не являющихся детерминистическими. Для этого используются оптимистическиеблокировки.

При разработке кода YDB применяетсямодель акторов. Акторы — это однопоточныеконечные автоматы, которые обмениваются между собой сообщениями и находятся на различных серверах кластера. Для обмена сообщениями по сети используется библиотека interconnect, разработанная в рамках проекта.Поверх YDB разработаны различные сервисы. Например, виртуальные блочные устройства и персистентные очереди.

Взаимодействие пользователя с YDB происходит по протоколуgRPC[3]. Для YDB существует ряд клиентскихSDK, которые реализовывают механизмы обнаружения нод (discovery), клиентской балансировки и т. п.

История

[править |править код]

В 2010 году внутри Яндекса началась разработка собственнойNoSQL СУБД KiWi[1]. Она начала использоваться в 2011 году. Однако KiWi обеспечивала «согласованность в конечном счёте» и обладала другими недостатками модели NoSQL[3].

В 2012 году началась внутренняя разработка проекта KiKiMR, и только для нужд Яндекса. За пределами компании проект назвали YDB[1]. В 2016 году СУБД стала использоваться в сервисах Яндекса.

В 2018 году состоялся запускоблачной платформыYandex Cloud, хранение данных в которой было основано на YDB[6]. В то же время компания объявила[7], что в будущем сделает YDB доступной в Yandex Cloud в качестве управляемого сервиса. Позднее такой доступ действительно начал предоставляться наряду с другими управляемыми сервисами — для PostgreSQL, MongoDB и других. Эта облачная версия получила название Yandex Database (позднее — Managed service for YDB).

В апреле 2022 года СУБД YDB была опубликована наGitHub как свободное программное обеспечение под лицензиейApache 2.0[1].

Примечания

[править |править код]
  1. 1234Яндекс выложил в опенсорс YDB  (рус.). Хабр. Дата обращения: 12 июня 2022. Архивировано 27 мая 2022 года.
  2. Как писать меньше кода для MR, или Зачем миру ещё один язык запросов? История Yandex Query Language  (рус.). Хабр. Дата обращения: 14 июня 2022. Архивировано 2 июля 2022 года.
  3. 1234Бессерверная альтернатива традиционным базам данных  (рус.). osp.ru. Дата обращения: 23 июня 2022. Архивировано 24 мая 2022 года.
  4. 12Nikolay Matrosov. Автоинкремент в Yandex Database (англ.). Medium (14 февраля 2022). Дата обращения: 24 апреля 2022.
  5. Calvin: Fast Distributed Transactions for Partitioned Database Systems (англ.). Йельский университет. Дата обращения: 19 июня 2022. Архивировано 22 мая 2022 года.
  6. 001. Яндекс Облако: обзор платформы – Ян Лещинский  (рус.). Youtube. Дата обращения: 12 июня 2022. Архивировано 12 июня 2022 года.
  7. about:cloud, ноябрь 2018 | Запись трансляции  (рус.). Youtube. Дата обращения: 12 июня 2022. Архивировано 12 июня 2022 года.
Перейти к шаблону «СУБД»
Клиент-серверные
Движки
Файл-серверные
Перейти к шаблону «Яндекс»
Люди
Основатели
Инвесторы
Менеджеры
и сотрудники
Поисковые службы
Персональные службы
Электронная коммерция
и фудтех
Вебмастерам и компаниям
Финтех
Программы
Технологии
Устройства
Умный дом
Автотранспорт
Роботы-курьеры
Образование
СервисыЯндекс 360
Индустрия компьютерных игр
Закрытые
или проданные проекты
Прочее
Источник —https://ru.wikipedia.org/w/index.php?title=YDB&oldid=132709769
Категории:
Скрытые категории: