Документация YDB разрабатывается на GitHub рядом с основной кодовой базой YDB и автоматически публикуется на сайт посредством CI/CD. Быть в курсе что в ней появляется можно с помощью функции «Watch» на GitHub или периодически просматривая вывод команды git log
, но эти способы сложно назвать удобными. В этом дайджесте мы рассмотрим основные недавно опубликованные изменения в документации YDB.
Режим совместимости с PostgreSQL
Одной из ключевых находящихся сейчас в разработке новых возможностей YDB является режим совместимости c PostgreSQL. Для упрощения миграции работающих с PostgreSQL приложений добавляется поддержка как сетевого протокола PostgreSQL, так и его диалекта SQL. В документации YDB можно узнать как поучаствовать в раннем тестировании этой функциональности, как она работает, и что именно доступно на данный момент.
Поддержка UNION в SELECT запросах
В SQL стандарте специфицирован синтаксис UNION [ALL]
. Разница между этими двумя вариациями в том, что UNION ALL
конкатенирует результат нескольких подзапросов, а UNION
ещё дополнительно дедуплицирует строки результата. Так как поведение UNION
можно эмулировать с помощью комбинации UNION ALL
и SELECT DISTINCT
, приоритет этой возможности исторически не был высок, но теперь она реализована, что приблизило YQL на шаг ближе к SQL стандарту. С примерами можно ознакомиться в документации.
Пояснения про партиционирование топиков для Change Data Capture
Change Data Capture является механизмом, позволяющим пользователям подписаться на поток изменений таблицы. Он реализован поверх YDB топиков (персистентных очередей), поддерживающих партиционирование. Как эти возможности взаимодействуют друг с другом теперь объяснено.
CVE-2023–45825
По принятой в индустрии практике YDB своевременно публикует информацию об обнаруженных проблемах безопасности в security changelog. Недавний CVE связан не с самим сервером YDB, а с одной из клиентских библиотек, YDB Go SDK. До исправления можно было случайно залогировать аутентификационные данные при определённом стечении обстоятельств. Подробнее можно прочитать на cve.mitre.org.
Превью изменений документации
Чтобы привнести свой вклад в документацию YDB достаточно открыть pull request на GitHub. Если речь о небольшой правке или улучшении, например исправлении опечатки, можно просто нажать на «карандашик» в правом-верхнем углу самой страницы документации:
Эта ссылка приведёт на режим редактирования соответствующей страницы в веб-интерфейсе GitHub. Там попросят залогиниться или зарегистрироваться, а также пройти через несколько шагов для открытия pull request с предлагаемыми правками. Недавно мы добавили автоматический процесс, который строит превью документации YDB для предпросмотра изменений из pull request в виде, максимально приближенным к тому, как они будут выглядеть на основном сайте после merge. Ссылка на просмотр превью версии автоматически добавляется в комментарии к pull request. Если в процессе сборки документации обнаружились какие-либо проблемы, то об этом также будет сообщено в комментариях. Запуск построения превью в некоторых случаях может требовать подтверждения команды проекта.
Как выглядит такой комментарий со ссылкой на превью:
Напоследок
Если у вас есть любые предложения по улучшению документации YDB или процессах вокруг неё, дайте нам, пожалуйста, знать в комментариях ниже, в Telegram или Discord.
PaulIsh
Судя по документации YDB топики практически тоже самое что кафка топики? Есть ли какие-то значимые различия?
SloNN
Мы очень стараемся, чтобы снаружи для приложений оно именно так и выглядело - полная совместимость.
Отличий на самом деле два вида: внутренние (стоимость, скорость, георезервирование), которые существуют, независимо от протокола, и отличия проявляющиеся при использовании YDB sdk или просто экосистемы YDB.
С точки зрения внутренних отличий мы гораздо компактнее храним данные: у нас используется erasure-кодирование против репликации Kafka/Pulsar. В итоге разница в объемах хранения 1:2 в пользу YDB. Кроме этого, мы умеем в настоящее георезервирование на N датацетров, а не просто в дублирование в соседнем кластере. То есть мы полноценно живет в геораспределенных инсталляциях, включая кроссдц exactly once обработку данных.
С точки зрения экосистемы мы двигаемся в сторону транзакционной передачи данных между топиками и таблицами. Сейчас мы умеем транзакционно читать из таблиц и писать в очередь, теперь учимся делать наоборот. Цель - exactly onсe при обработке данных между топиками и таблицами.
Кроме этого, сейчас мы делаем split-merge партиций, этого нет в Kafka, но это позволяет динамически изменять число партиций (выполнять scaling) с сохранением всех гарантий exacly once.
PaulIsh
Спасибо. Судя по тому как вы ответили, то можно просто заменить кафку на YDB и не переписывать клиентские приложения в части протоколов обмена. При этом мы получим новые эксплуатационные возможности и снизим требования к серверам в части объемов хранения. Если так, то это просто замечательная информация.