RSS Telegram YouTube Apple Яндекс Spotify Google Amazon Почта

46. Экстремальный бекап, новый GoLand, UUIDv7

07.04.2024

Скачать

К списку выпусков

Ссылки выпуска:

pg_probackup

Если у вас размер БД менее 100Гб, то достаточно простой конфигурации: MASTER => REPLICA => BACKUP. Если размер БД более 100Гб, то стоит знать про разные подходы к резервному копированию.

pg_basebackup работает по принципу копирования файлов: коприуется весь кластер целиком. На момент завершения копирования, файлы могут быть изменены. Для того чтобы вернуться к консистентному состоянию, необходимо "проиграть" WAL-файлы.

pg_probackup инкрементальное копирование, т.к. копируются только измененные данные. Для максимально эффективного инкрементального бекапа, можно собрать PostgreSQL со специальным трекером изменений страничек (page tracking). При этом, во время бекапа, pg_probackup будет использовать данные этого трекера, чтобы понимать, какие страницы были изменены. Благодаря этому отдельному трекеру, для PostgreSQL бекап - не транзакция, как в случае с pg_dump и резервное копирование выполняется через копирование файлов. Напомню, что pg_dump (pg_dumpall) выполняет выборку данные в рамках одной большой транзакции с уровнем изоляции REPEATABLE READ.

Бэкапы хорошо проверять. Иногда это можно сделать с пользой для вашего клиента: например, ежедневно восстанавливать дневной бэкап на выделенный сервер для аналитиков. Как правило у аналитиков тяжелые запросы и они могут негативно сказаться на производительности основного сервера. Т.е. мы и бэкап проверили (как правило атоматический цикл) и снизили нагрузку. Подобные дневные бэкапы также могут использовать тестировщики для проверки новых фич на объеме данных.

UUID v7

С момента создания UUID стали активно использовать в качестве первичного ключа во многих БД, особенно в распределенных системах. Но UUID v4 (random) не всегда удобен, т.к. не удобно сортировать и партиционировать. Выделяют еще такие сомнительные недостатки, что в UUIDv1 хранится MAC-адрес и временная метка, что может нести риски безопасности. Медленные UUIDv3 и UUIDv5, т.к. используют хэширование.

Преимущества UUID v7: уникальные, монотонные (первые 48 бит - это Unix timestamp), т.е. удобные для сортировки и партиционирования.

GoLand 2024.1

Важные обновления:

Команда GoLand адаптировала DFA (data flow analysis), используемый в CLion, для поиска ошибок в коде. DFA покажет ошибки, связанные с неверными условиями (condition is always false) даже для случаев когда все сильно запутано и перед условием есть еще куча условий и циклов. Также теперь можно увидеть потенциальные nil pointer dereference.

JetBrains активно продвигает свой AI Assistant и я планирую его использовать и сравнить с Github Copilot, который использую сейчас. О своем опыте расскажу об этом в следующих выпусках подкаста.