Одно, чтоб править всеми: как мы сделали хаб для сопровождения СУБД
Работа в СУБД — это множество разноплановых задач: создание новых продуктов, плановые обновления, работа с инцидентами. По мере цифровизации компании количество таких задач растёт, очередь запросов наполняется. Всё больше времени уходит не на решения, а на подготовку — сбор данных, аналитику и прочие «ветряные мельницы». Разрешить эту проблему помогают графические инструменты управления базами данных.
Меня зовут Иван Пушкарь, и вместе с командой я разрабатываю один из таких инструментов — Platform V Kintsugi. В этой статье расскажу, как появились первые платформы и оркестраторы для работы с СУБД, что сейчас есть для управления PostgreSQL и как мы решили создать собственный инструмент, который стал бы кольцом Всевластья для множества баз данных Сбера.
Графические инструменты управления базами данных: с чего всё начиналось
Инструменты управления базами данных начали развиваться в 1970-х годах. Первые системы работали через командную строку и, несмотря на эффективность, были довольно неудобными для обычных пользователей, так как требовали знания SQL.
1980-е: dBase
С развитием компьютеров и ПО системы управления базами данных шагнули в сторону визуализации. Одним из первых графических инструментов управления базами данных стала программа dBase III, выпущенная в 1984 году. Она позволяла создавать и редактировать базы данных с помощью графического интерфейса без знаний SQL.
Хотя возможности dBase были ограничены, а программа не подходила для работы с большими базами данных, простота и доступность сделала этот инструмент очень популярным. Графический интерфейс позволял пользователям легко создавать и редактировать таблицы, а также выполнять различные операции с данными: сортировать, фильтровать и т. д.
Со временем dBase развивался: появлялись новые функции, например, отчёты и поддержка многопользовательской работы. Самыми популярным версиями стали dBase III и dBase IV. Но из-за того, что разработчик долго не портировал их на Microsoft Windows, у программы появились сильные конкуренты, такие как FoxBase (FoxPro). DBase вскоре прекратила развитие, компания была выкуплена Borland и дальше затерялась в череде поглощений.
1990-е: FoxPro (FoxBase)
Ещё один графический инструмент для управления базами данных, созданный Fox Software в 1984 году. В 1992 компанию выкупила Microsoft, которая сменила название на FoxPro. Программа стала одним из первых инструментов, предлагавших визуальный подход к созданию и изменению баз данных.
Функциональность FoxBase один в один повторяла dBase II, но, по утверждениям разработчика, работала быстрее. После слияния с Microsoft продукт начал активно развиваться и в итоге превратился в мощный инструмент, который мог работать с большими и сложными базами данных. FoxBase обладала продвинутой функциональностью: поддерживала многопоточность, позволяла работать с разными типами данных и создавать сложные отчёты. К недостаткам можно было отнести сложности с эксплуатацией и высокую стоимость.
Несмотря на свои недостатки, FoxPro остаётся важной вехой в истории графических инструментов для управления базами данных. Его влияние можно увидеть, например, в Microsoft Access, который использует многие из идей и технологий FoxPro. К тому же этот инструмент некоторое время закрывал нишу СУБД для Macintosh, так как MS Aсcess не поставлялся для этой ОС.
После нулевых: Microsoft Access и другие
Настоящий прорыв в области графических инструментов управления базами данных произошёл в 1992 году с выпуском Microsoft Access — первой программы, которая позволяла создавать базы данных через графический интерфейс, без написания кода. MS Access также предоставляла набор инструментов для анализа данных и стала очень популярной.
В 2000-х годах графические инструменты для СУБД стали ещё более мощными и удобными. У них появилась специализация: теперь продукты создавались под конкретные сценарии использования. Добавились новые инструменты: для создания форм, генерации отчётов, работы с данными в режиме реального времени, сопровождения и много другого (больше деталей с разбивкой по категориям можно найти здесь).
Сегодня на рынке существует множество графических инструментов для различных СУБД, таких как MS SQL Server, Oracle Database, MySQL и т. д. Каждый из них имеет свои преимущества и недостатки, поэтому выбор инструмента зависит от конкретных потребностей пользователя и типа СУБД, которую он использует. К примеру, для Oracle существуют несколько признанных инструментов. Среди них Oracle Enterprise Manager Cloud Control (EMCC) — решение для управления облачными сервисами и ресурсами, разработанное компанией Oracle. Оно предоставляет инструменты для автоматизации, мониторинга, безопасности и оптимизации облачных сред, а также позволяет управлять ими в масштабе всего предприятия. С помощью Oracle EMCC можно контролировать развертывание, обновление и масштабирование приложений, а также отслеживать их производительность и анализировать метрики. В условиях сложной инфраструктуры и большого количества нагруженных баз инструмент практически не имеет конкурентов. Доходит до того, что инженеры, не заставшие «консольную», эпоху, выполняют через него все действия, практически не переходя в консоль БД. Конечно, Oracle предоставляет также и IDE для написания кода, например, pl/sql developer, который де-факто является стандартом для разработчиков на территории СНГ. Отдельно стоит упомянуть прекрасный инструмент Toad for Oracle, который, однако, по традиции более распространён в западных компаниях.
За рамками статьи остаётся огромное количество менее специфичного ПО для работы, диагностики и мониторинга СУБД: Grafana, Zabbix, Prometheus, различное ПО для работы с логами, которое хоть и не специализируется на конкретных СУБД (а зачастую и вообще на СУБД), но отлично выполняет свои функции. А я хочу сделать акцент на графических инструментах для наиболее распространённой в РФ СУБД PostgreSQL и, в частности, для целевой СУБД Сбера Platform V Pangolin.
Обзор современных графических инструментов для работы с СУБД PostgreSQL
За время развития PostgreSQL появилось огромное количество инструментов для управления этой СУБД как от самого сообщества, так и от различных вендоров ПО. Перечисление всех продуктов заняло бы не одну статью, потому здесь приведу список наиболее популярных и интересных решений в РФ.
pgAdmin 4
Бесплатный и открытый инструмент для управления базами данных PostgreSQL. Позволяет создавать таблицы, индексы, запросы и другие элементы базы данных, а также визуализировать данные и генерировать отчёты. Появился в 1998 году и с тех пор стал одним из самых популярных инструментов для управления базами данных PostgreSQL. PgAdmin имеет простой и интуитивно понятный интерфейс, который делает его лёгким в использовании даже для новичков. Может быть развёрнут в контейнере или на компьютере пользователя как серверное приложение.
Существует коммерческая версия pgAdmin, развиваемая компанией EnterpriseDB — Postgres Enterprise Manager. Решение с разными интересными доработками, среди которых:
Расширенная диагностика.
Помощник по работе с логами.
Профилирование запросов.
Возможность управления конфигурацией и др.
dBeaver
Бесплатная программа с открытым исходным кодом для управления базами данных. Мощный инструмент, поддерживающий множество различных баз данных, включая MySQL, PostgreSQL, SQLite и другие. DBeaver активно развивается, регулярно выходят релизы с обновлениями и доработками.
Существует коммерческая версия инструмента под названием dBeaver Pro с расширенным списком поддерживаемых СУБД, повышенной безопасностью и разными интересными функциями вроде диагностики производительности, ИИ-помощника по созданию SQL-кода и др.
Относительно недавно компания-разработчик dBeaver начала развивать CloudBeaver — онлайн-платформу для разработчиков и администраторов баз данных, которая позволяет работать с несколькими СУБД в одном интерфейсе. В CloudBeaver можно управлять различными базами данных — MySQL, PostgreSQL, SQLite и другими — с любого устройства и из любой точки мира, выполнять SQL-запросы, создавать и редактировать таблицы, просматривать структуру баз данных и многое другое. Платформа также предлагает облачное хранилище и обеспечивает высокую степень безопасности и надёжности.
Tantor Labs
Платформа, предоставляющая единую панель для управления всеми установками СУБД Tantor или PostgreSQL. Разработчик заявляет, что «благодаря глубокой интеграции со стеком продуктов Tantor обеспечивает поддержку управления, мониторинга и автоматизации для баз данных, основанных на PostgreSQL».
Платформа является клиент-серверным приложением для обслуживания СУБД. Основные возможности:
многофункциональная консоль управления;
автоматическая адаптивная настройка кластера PostgreSQL;
обзор системы;
предупреждения и мониторинг;
автоматические проверки работоспособности;
аудит схемы;
выполнение задач обслуживания через графический интерфейс;
профилирование запросов;
администрирование нескольких серверов в одном месте;
лёгкая установка в периметре клиента.
Подробнее: https://tantorlabs.ru/products/platform
PPEM
Интегрированная административная панель управления СУБД Postgres Pro Enterprise. Основные возможности:
единая консоль с простым интерфейсом мониторинга и управления;
возможность выполнять основные административные действия из окна браузера;
централизация доступа ко всем экземплярам и базам данных;
навигация через единое меню с учётом иерархии объектов;
ролевая модель управления доступом пользователей PPEM;
вызов привычной утилиты psql прямо из консоли, что сочетает простоту графического интерфейса и гибкость командной строки.
Подробнее: https://postgrespro.ru/products/PPEM
ArenaData Cluster Manager
Универсальный оркестратор гибридного ландшафта. Установка, настройка и обновление кластеров в ADCM производятся по нажатию кнопки в графическом интерфейсе или по запросу в API. При этом все настройки ОС, сервисов, сети и монтирование дисков происходят автоматически. В результате пользователи получают стек мониторинга, готовый к интеграции с корпоративными системами. ADCM поставляется в виде контейнеров и является инфраструктурным сервисом для обслуживания парка СУБД.
Основные функции ADCM:
Автоматическое развёртывание сервисов и приложений в кластере.
Мониторинг состояния кластера и сервисов.
Управление доступом и правами пользователей.
Интеграция с другими продуктами Arenadata и сторонними решениями.
Гибкая настройка политик и правил работы с кластером.
Поддержка различных технологий и стандартов (например, Kubernetes, OpenShift, Apache Hadoop, Apache Spark и др.
Platform V Kintsugi — наше решение для централизованного управления инфраструктурой СУБД
Platform V Kintsugi — это инструмент для решения широкого круга задач эксплуатации и сопровождения реляционных СУБД и сопутствующей инфраструктуры. Цель продукта — полностью автоматизировать работу с реляционными базами данных компании. Изначально Kintsugi создавался для управления Platform V Pangolin, целевой СУБД Сбера. Сегодня это единый центр управления и взаимодействия с ландшафтом реляционных данных компании, точка, куда стекается вся информация о СУБД и инфраструктуре. Из этой точки можно решить любую задачу, стоящую перед DBA, независимо от того, промышленный это экземпляр или текущие серверы разработки.
Ключевые возможности продукта:
централизованное единое окно;
мониторинг и аналитика активности БД;
доступ к данным через SQL‑интерфейс;
аудирование всех событий в продукте сторонними средствами;
лёгкое горизонтальное масштабирование (от 1 до более чем 30 000 экземпляров, от 1 до более чем 1000 одновременных пользователей различного уровня доступа, без остановки сервиса или замедления работы — и аналогично в обратную сторону).
Для кого и почему мы разрабатываем Platform V Kintsugi
Изначально все работы в инфраструктуре и по СУБД можно разделить на два больших блока: run и change.
Сhange — задачи по созданию новых продуктов и улучшению деятельности уже готовых. Run —текущая операционная деятельность, которая для СУБД в основном делится на два направления:
Текущие плановые работы по улучшению, оптимизации работы СУБД, плановые обновления или переходы на новую версию БД, помощь командам разработки.
Разнообразные срочные задачи, от выпуска горячей функциональности до работы над инцидентами.
Какой бы профессиональной и мощной ни была команда сопровождения, входящих запросов всегда больше, чем людей, и очередь запросов пополняется быстрее, чем выдаётся решение. А специалистов, одинаково хорошо знающих прикладной код и код БД, как обычно, не хватает.
Вот типичный пример обслуживания СУБД во время очередного инцидента:
Пользователи обнаружили деградацию сервиса (в этот момент мысленно запускаем таймер).
Через полчаса‑час проблема добралась до команды, отвечающей за сервис (прошёл час с момента инцидента).
Предположим, что команда подобралась опытная и уже через полчаса находит проблему на уровне СУБД (уже полтора часа).
Сотрудники создают обращение к DBA. Невероятно круто, если в команде есть свои DBA, и они уже принесли первичный анализ, но так бывает не всегда. Понадеемся, что дело происходит не в час пик, и уже через 15 минут задача в работе (прошёл час и сорок пять минут).
Около получаса специалист пытается понять, что произошло, особенно, если он видит эту БД впервые (два часа пятнадцать минут с начала инцидента).
Теперь этап аналитики, и очень круто, если проблема вызвана обновлением или хорошо видна во view самой СУБД и решается отстрелом токсичных сессий. А если «сломалось само», то на поиск проблемы может уйти несколько часов (и тогда с начала инцидента до устранения прошло каких‑то четыре часа).
В сухом остатке на решение проблем с сервисами, которые вызваны СУБД, могут уходить целые дни. А ведь ещё не стоит забывать про передачу задач между сотрудниками отдела с разной экспертизой и опытом. Результат — вместо решения проблемы половина рабочего дня тратится на поиски и аналитику.
Нам нужно было максимально сократить этот этап: чтобы при обращении пользователя к продукту вся аналитика для БД и первичные рекомендации были готовы, тонкие места подсвечены, а сопровождение и команды разработки видели одну картинку и как можно быстрее принимали решение.
Основные функции Kintsugi
Общий дашборд по экземплярам (в планах развить в центральный хаб управления подключенными базами данных).
Общая панель конкретной СУБД, где пользователь может быстро получить текущее состояние БД.
Различные панели мониторинга.
Информация о производительности БД, аналог всем известного Oracle ASH с с гибкой возможностью фильтрации и поиска.
Интерфейс для выполнения запросов к базе данных с интерфейсом интроспекции, выполнения explain, а также базовые возможности по форматированию и комментированию кода.
Ранее ни один из существующих инструментов для управления PostgreSQL и нашей СУБД не позволял сделать так, чтобы процесс сопровождения не прерывался ни на минуту, а вся работа происходила в режиме одного окна.
Platform V Kintsugi может интегрироваться со множеством сервисов крупного заказчика: различные авторизационные модели, аудит и сервисы безопасности и хранения учётных записей, сервисы журналирования и мониторинга. Наша практика показывает, что после внедрения инструмент становится центральным хабом сопровождения БД и упрощает сопровождение, диагностику и обслуживание баз данных.