Источник: Хабр "Одно, чтоб править всеми: как мы сделали хаб для сопровождения СУБД"
Работа в СУБД — это множество разноплановых задач: создание новых продуктов, плановые обновления, работа с инцидентами. По мере цифровизации компании количество таких задач растёт, очередь запросов наполняется. Всё больше времени уходит не на решения, а на подготовку — сбор данных, аналитику и прочие «ветряные мельницы». Разрешить эту проблему помогают графические инструменты управления базами данных.
Меня зовут Иван Пушкарь, и вместе с командой я разрабатываю один из таких инструментов — 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 может интегрироваться со множеством сервисов крупного заказчика: различные авторизационные модели, аудит и сервисы безопасности и хранения учётных записей, сервисы журналирования и мониторинга. Наша практика показывает, что после внедрения инструмент становится центральным хабом сопровождения БД и упрощает сопровождение, диагностику и обслуживание баз данных.