{
  "format": "sf-skill-matrix",
  "version": 1,
  "name": "Матрица навыков DBA",
  "description": "Публичный пример ролевой матрицы для DBA, отвечающих за производительность, надежность и управляемость баз данных.",
  "levels": [
    {
      "name": "Джуниор",
      "description": "Ведет типовые административные задачи, безопасно работает по runbook и понимает базовые принципы эксплуатации баз данных."
    },
    {
      "name": "Мидл",
      "description": "Самостоятельно ведет изменения среднего размера, оптимизирует workload и повышает надежность production-баз."
    },
    {
      "name": "Сеньор",
      "description": "Формирует стандарты эксплуатации и performance-практики, ведет критичные инциденты и улучшает data platform системно."
    },
    {
      "name": "TechLead",
      "description": "Ведет техническое направление data/platform-команды, удерживает качество решений и помогает инженерам двигаться к предсказуемой эксплуатации данных."
    },
    {
      "name": "Principal",
      "description": "Определяет стратегию data platform, связывает архитектуру хранения, надежность и governance с масштабом и целями компании."
    }
  ],
  "groups": [
    {
      "name": "Data platform",
      "rows": [
        {
          "name": "Моделирование данных и эволюция схемы",
          "cells": [
            {
              "level": 1,
              "level_name": "Джуниор",
              "tasks": [
                {
                  "name": "Читает и поддерживает существующие схемы",
                  "info": "Понимает таблицы, типы данных, PK/FK, уникальные ограничения и базовые правила нормализации."
                },
                {
                  "name": "Аккуратно применяет schema changes",
                  "info": "Создает миграции с учетом порядка выполнения, обратимости и риска блокировок."
                }
              ]
            },
            {
              "level": 2,
              "level_name": "Мидл",
              "tasks": [
                {
                  "name": "Ревьюит изменения схемы для production",
                  "info": "Оценивает lock impact, объём переписывания данных, совместимость с приложением и порядок rollout."
                },
                {
                  "name": "Планирует безопасную эволюцию данных",
                  "info": "Использует expand-migrate-contract подход там, где прямое изменение схемы опасно для production."
                },
                {
                  "name": "Поддерживает качество модели данных",
                  "info": "Выявляет избыточность, слабые ограничения целостности и места, где схема мешает надежной работе системы."
                }
              ]
            },
            {
              "level": 3,
              "level_name": "Сеньор",
              "tasks": [
                {
                  "name": "Формирует стандарты data modeling",
                  "info": "Определяет соглашения по ключам, audit-полям, soft delete, partitioning и жизненному циклу сущностей."
                },
                {
                  "name": "Проектирует миграции для больших объемов данных",
                  "info": "Планирует backfill, dual-write, online index operations и контролируемый переход без длительных блокировок."
                },
                {
                  "name": "Согласует схему с workload и бизнес-сценариями",
                  "info": "Принимает решения по модели данных, исходя не только из нормализации, но и из реального профиля чтения и записи."
                }
              ]
            },
            {
              "level": 4,
              "level_name": "TechLead",
              "tasks": [
                {
                  "name": "Определяет правила эволюции схемы для команды",
                  "info": "Задает обязательные шаблоны rollout, критерии безопасной миграции и требования к проверкам до production."
                },
                {
                  "name": "Разрешает спорные решения по модели данных",
                  "info": "Принимает архитектурные решения по денормализации, истории изменений, multi-tenant структурам и границам ownership."
                },
                {
                  "name": "Удерживает согласованность данных между командами",
                  "info": "Не допускает хаотичного роста схемы и конфликтующих практик в смежных сервисах и источниках данных."
                }
              ]
            },
            {
              "level": 5,
              "level_name": "Principal",
              "tasks": [
                {
                  "name": "Определяет стратегию data architecture",
                  "info": "Выбирает подходы к transactional storage, analytical контуров, жизненному циклу данных и границам между системами."
                },
                {
                  "name": "Формирует платформенные стандарты data modeling",
                  "info": "Создает принципы, применимые для разных продуктовых доменов, а не только для одной конкретной базы."
                },
                {
                  "name": "Принимает решения по эволюции data platform",
                  "info": "Определяет, когда нужны partitioning, sharding, event-driven synchronization или выделение отдельных storage patterns."
                },
                {
                  "name": "Соединяет модель данных с бизнес-риском",
                  "info": "Учитывает регуляторику, критичность потерь, требования к истории и цену ошибок в структуре хранения."
                }
              ]
            }
          ]
        },
        {
          "name": "SQL, индексы и performance tuning",
          "cells": [
            {
              "level": 1,
              "level_name": "Джуниор",
              "tasks": [
                {
                  "name": "Пишет и читает корректные SQL-запросы",
                  "info": "Использует JOIN, WHERE, GROUP BY, ORDER BY и параметризацию без очевидных ошибок и антипаттернов."
                },
                {
                  "name": "Читает базовые планы выполнения",
                  "info": "Замечает full scan, лишние сортировки и отсутствие нужных индексов в простых сценариях."
                }
              ]
            },
            {
              "level": 2,
              "level_name": "Мидл",
              "tasks": [
                {
                  "name": "Оптимизирует медленные запросы",
                  "info": "Использует EXPLAIN ANALYZE, статистику, indexing strategy и переписывание запросов под реальный workload."
                },
                {
                  "name": "Понимает компромиссы индексов",
                  "info": "Балансирует скорость чтения, write amplification, размер индекса и сопровождение статистики."
                },
                {
                  "name": "Диагностирует performance regressions",
                  "info": "Сопоставляет планы, параметры, версии данных и изменения workload, а не лечит проблему вслепую."
                }
              ]
            },
            {
              "level": 3,
              "level_name": "Сеньор",
              "tasks": [
                {
                  "name": "Ведет performance strategy для production workload",
                  "info": "Определяет приоритеты тюнинга по реальному impact: latency, throughput, contention и стоимость ресурсов."
                },
                {
                  "name": "Проектирует индексную и storage-стратегию",
                  "info": "Выбирает составные индексы, partitioning, fillfactor, vacuum/analyze подходы и политику работы со статистикой."
                },
                {
                  "name": "Разбирает сложные случаи contention и деградации",
                  "info": "Ищет причины в locking, bloat, autovacuum behavior, replication lag и неочевидных паттернах приложения."
                }
              ]
            },
            {
              "level": 4,
              "level_name": "TechLead",
              "tasks": [
                {
                  "name": "Определяет стандарты performance-review",
                  "info": "Вводит обязательные правила для SQL review, критерии принятия индексов и ожидания к производительности критичных запросов."
                },
                {
                  "name": "Управляет capacity и производительностью как частью roadmap",
                  "info": "Планирует тюнинг, upgrade storage/compute и re-architecture до того, как система упрется в потолок."
                },
                {
                  "name": "Разрешает конфликт между удобством разработки и производительностью",
                  "info": "Принимает решения там, где ORM-подход, аналитические требования и нагрузка требуют осознанного компромисса."
                }
              ]
            },
            {
              "level": 5,
              "level_name": "Principal",
              "tasks": [
                {
                  "name": "Определяет стратегию performance engineering для data layer",
                  "info": "Выбирает, где компании выгоднее инвестировать в оптимизацию, архитектурные изменения или другой storage-подход."
                },
                {
                  "name": "Формирует стандарты workload placement",
                  "info": "Разделяет transactional, analytical и background-нагрузки так, чтобы они не разрушали друг друга."
                },
                {
                  "name": "Принимает долгосрочные решения по масштабированию данных",
                  "info": "Оценивает partitioning, read scaling, sharding и альтернативные СУБД исходя из фактического профиля нагрузки."
                },
                {
                  "name": "Связывает performance data layer с целями продукта",
                  "info": "Переводит технические ограничения БД в понятные бизнесу решения по SLA, стоимости и roadmap."
                }
              ]
            }
          ]
        },
        {
          "name": "Эксплуатация и maintenance",
          "cells": [
            {
              "level": 1,
              "level_name": "Джуниор",
              "tasks": [
                {
                  "name": "Выполняет стандартные административные операции",
                  "info": "Работает с пользователями, правами, базовыми health checks и routine maintenance без ручной импровизации."
                },
                {
                  "name": "Следует operational runbooks",
                  "info": "Корректно эскалирует рисковые ситуации и не применяет необратимые изменения без проверки."
                }
              ]
            },
            {
              "level": 2,
              "level_name": "Мидл",
              "tasks": [
                {
                  "name": "Самостоятельно ведет maintenance windows",
                  "info": "Планирует последовательность действий, оценивает impact на приложение и проводит изменения в согласованное окно."
                },
                {
                  "name": "Разбирает production incidents на уровне СУБД",
                  "info": "Диагностирует блокировки, saturation ресурсов, runaway queries и проблемное поведение фоновых процессов."
                },
                {
                  "name": "Автоматизирует регулярные операции",
                  "info": "Убирает ручную рутину через проверяемые скрипты и jobs, а не через неповторяемые ad-hoc команды."
                }
              ]
            },
            {
              "level": 3,
              "level_name": "Сеньор",
              "tasks": [
                {
                  "name": "Определяет стандарты эксплуатации баз данных",
                  "info": "Задает правила maintenance, patching, наблюдаемости, change windows и критерии готовности к production."
                },
                {
                  "name": "Ведет критичные operational changes",
                  "info": "Координирует major upgrades, storage changes и high-risk операции так, чтобы минимизировать риск простоя."
                },
                {
                  "name": "Снижает operational toil системно",
                  "info": "Строит процессы и automation, которые уменьшают ручной труд и повышают воспроизводимость эксплуатации."
                }
              ]
            },
            {
              "level": 4,
              "level_name": "TechLead",
              "tasks": [
                {
                  "name": "Управляет дорожной картой эксплуатационной зрелости",
                  "info": "Определяет, какие operational проблемы нужно решать платформенно, а какие на уровне конкретных сервисов."
                },
                {
                  "name": "Выравнивает процессы эксплуатации между командами",
                  "info": "Добивается того, чтобы разные команды одинаково понимали change management, escalation и production discipline."
                },
                {
                  "name": "Принимает решения по рисковым операциям",
                  "info": "Устанавливает условия, при которых допустимы risky maintenance, emergency changes и временные обходные решения."
                }
              ]
            },
            {
              "level": 5,
              "level_name": "Principal",
              "tasks": [
                {
                  "name": "Формирует operating model для data platform",
                  "info": "Определяет, как сочетаются DBA-команда, продуктовая разработка, SRE и владельцы данных в эксплуатации платформы."
                },
                {
                  "name": "Определяет стратегию upgrade и lifecycle management",
                  "info": "Планирует переходы между версиями, поддержку legacy-контуров и снижение долгосрочного операционного риска."
                },
                {
                  "name": "Создает систему platform excellence для баз данных",
                  "info": "Делает эксплуатационную дисциплину масштабируемой для нескольких продуктов и команд, а не зависящей от героизма отдельных людей."
                },
                {
                  "name": "Влияет на организационные решения через data platform expertise",
                  "info": "Помогает бизнесу и инженерному руководству принимать зрелые решения о надежности, стоимости и приоритетах данных."
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "Надежность и governance",
      "rows": [
        {
          "name": "Backup, recovery и disaster readiness",
          "cells": [
            {
              "level": 1,
              "level_name": "Джуниор",
              "tasks": [
                {
                  "name": "Следит за успешностью backup jobs",
                  "info": "Проверяет статусы задач, понимает базовую цепочку резервного копирования и знает, когда эскалировать риск."
                },
                {
                  "name": "Понимает основы restore-процедур",
                  "info": "Знает разницу между backup наличием и реальной возможностью восстановления данных."
                }
              ]
            },
            {
              "level": 2,
              "level_name": "Мидл",
              "tasks": [
                {
                  "name": "Проводит проверку восстановления",
                  "info": "Выполняет restore tests, валидирует консистентность данных и документирует фактическое время восстановления."
                },
                {
                  "name": "Связывает backup-политику с RPO/RTO",
                  "info": "Понимает, как частота снапшотов, WAL/binlog и retention влияют на бизнес-ожидания восстановления."
                },
                {
                  "name": "Диагностирует сбои цепочки резервного копирования",
                  "info": "Находит проблемы в storage, сетевой доставке, правах доступа и целостности backup-артефактов."
                }
              ]
            },
            {
              "level": 3,
              "level_name": "Сеньор",
              "tasks": [
                {
                  "name": "Проектирует надежную backup/recovery topology",
                  "info": "Выбирает стратегию полного и инкрементального бэкапа, проверку восстановлений и географическую устойчивость."
                },
                {
                  "name": "Ведет DR-подготовку для критичных баз",
                  "info": "Проводит регулярные учения, согласует реальные recovery-сценарии и устраняет ложное чувство защищенности."
                },
                {
                  "name": "Определяет критерии recovery readiness",
                  "info": "Вводит понятные метрики и контрольные проверки, которые показывают не формальную, а реальную готовность к аварии."
                }
              ]
            },
            {
              "level": 4,
              "level_name": "TechLead",
              "tasks": [
                {
                  "name": "Задает политику backup и DR для команды",
                  "info": "Определяет обязательные тесты восстановления, частоту проверок и условия приемлемого риска по разным системам."
                },
                {
                  "name": "Балансирует надежность восстановления и стоимость",
                  "info": "Принимает решения по retention, cross-region copy и уровню DR-инвестиций с учетом бизнес-критичности данных."
                },
                {
                  "name": "Координирует реакцию на серьезные data-loss угрозы",
                  "info": "Организует восстановление и коммуникацию так, чтобы минимизировать ущерб и не усугубить ситуацию неверными действиями."
                }
              ]
            },
            {
              "level": 5,
              "level_name": "Principal",
              "tasks": [
                {
                  "name": "Формирует стратегию disaster recovery для data platform",
                  "info": "Определяет уровни защищенности для разных классов данных и связывает их с риском для бизнеса."
                },
                {
                  "name": "Выбирает целевую модель resilience для критичных хранилищ",
                  "info": "Принимает решения о cross-region, active-passive, active-active и стоимости этих моделей."
                },
                {
                  "name": "Создает культуру доказуемой recovery readiness",
                  "info": "Добивается того, чтобы готовность к восстановлению подтверждалась учениями и метриками, а не декларациями."
                },
                {
                  "name": "Связывает data resilience с общекорпоративной risk strategy",
                  "info": "Интегрирует recovery-практики с безопасностью, compliance и ожиданиями руководства по критичным сервисам."
                }
              ]
            }
          ]
        },
        {
          "name": "Replication, availability и capacity planning",
          "cells": [
            {
              "level": 1,
              "level_name": "Джуниор",
              "tasks": [
                {
                  "name": "Следит за состоянием репликации",
                  "info": "Понимает базовые метрики lag, состояние реплик и признаки типовых проблем с репликацией."
                },
                {
                  "name": "Понимает основы высокой доступности",
                  "info": "Различает primary/replica роли, failover и ограничения чтения с реплик."
                }
              ]
            },
            {
              "level": 2,
              "level_name": "Мидл",
              "tasks": [
                {
                  "name": "Эксплуатирует replication под production-нагрузкой",
                  "info": "Разбирает lag, slot issues, replay delays и плановые переключения без лишнего риска для данных."
                },
                {
                  "name": "Участвует в failover и switchover процедурах",
                  "info": "Проводит переключения осознанно, понимая impact на приложение, консистентность и время восстановления."
                },
                {
                  "name": "Оценивает capacity по метрикам и трендам",
                  "info": "Следит за ростом данных, IOPS, CPU, memory, storage pressure и заранее поднимает вопрос о масштабировании."
                }
              ]
            },
            {
              "level": 3,
              "level_name": "Сеньор",
              "tasks": [
                {
                  "name": "Проектирует HA-архитектуру под требования сервиса",
                  "info": "Балансирует скорость failover, риск потери данных, сложность сопровождения и стоимость решения."
                },
                {
                  "name": "Определяет replication-стратегию",
                  "info": "Выбирает synchronous/asynchronous режимы, topology и правила использования реплик разными классами нагрузки."
                },
                {
                  "name": "Ведет capacity planning для data layer",
                  "info": "Прогнозирует рост и заранее инициирует изменения в storage, compute, topology или workload placement."
                }
              ]
            },
            {
              "level": 4,
              "level_name": "TechLead",
              "tasks": [
                {
                  "name": "Задает стандарты доступности для команд",
                  "info": "Определяет, какие базы требуют каких SLA, какой уровень failover допустим и как это проверяется."
                },
                {
                  "name": "Принимает решения по критичным topologies",
                  "info": "Решает, где оправдан managed HA, где нужен собственный failover stack, а где достаточно упрощенной схемы."
                },
                {
                  "name": "Управляет capacity-рисками на уровне roadmap",
                  "info": "Связывает рост бизнеса, нагрузку и инвестиции в data infrastructure до наступления кризиса ресурсов."
                }
              ]
            },
            {
              "level": 5,
              "level_name": "Principal",
              "tasks": [
                {
                  "name": "Формирует стратегию доступности для data platform",
                  "info": "Определяет target-архитектуры по надежности для разных типов данных и продуктов внутри компании."
                },
                {
                  "name": "Выбирает долгосрочную модель масштабирования баз данных",
                  "info": "Решает, когда компании выгоднее replication, partitioning, sharding, caching или смена storage engine."
                },
                {
                  "name": "Управляет системным риском деградации data layer",
                  "info": "Использует capacity, incident и growth-сигналы для предотвращения platform-wide проблем заранее."
                },
                {
                  "name": "Связывает availability-решения с бизнес-моделью",
                  "info": "Помогает руководству понимать цену простоев, скорость восстановления и стоимость высокой доступности."
                }
              ]
            }
          ]
        },
        {
          "name": "Security, access и data governance",
          "cells": [
            {
              "level": 1,
              "level_name": "Джуниор",
              "tasks": [
                {
                  "name": "Следует least-privilege подходу",
                  "info": "Выдает минимально достаточные права, не использует shared суперпользователей без явной причины и соблюдает правила аудита."
                },
                {
                  "name": "Аккуратно работает с чувствительными данными",
                  "info": "Понимает, что production data нельзя копировать и передавать без контроля и маскирования."
                }
              ]
            },
            {
              "level": 2,
              "level_name": "Мидл",
              "tasks": [
                {
                  "name": "Строит понятные access-процессы",
                  "info": "Настраивает роли, ротацию доступов, break-glass процедуры и журналирование критичных действий."
                },
                {
                  "name": "Снижает security-риск в эксплуатации БД",
                  "info": "Контролирует exposed endpoints, слабые пароли, неаудируемые доступы и небезопасные практики работы с данными."
                },
                {
                  "name": "Поддерживает базовый data governance",
                  "info": "Помогает команде соблюдать retention, ownership и правила обращения с персональными и чувствительными данными."
                }
              ]
            },
            {
              "level": 3,
              "level_name": "Сеньор",
              "tasks": [
                {
                  "name": "Определяет стандарты доступа и аудита для БД",
                  "info": "Формирует RBAC-модель, требования к журналированию, ротации секретов и контролю привилегированных операций."
                },
                {
                  "name": "Связывает эксплуатацию баз с data governance",
                  "info": "Учитывает классификацию данных, retention, требования к удалению и legal/compliance-ограничения."
                },
                {
                  "name": "Встраивает security-controls в стандартную работу команды",
                  "info": "Делает безопасные практики частью миграций, backup, restore и operational change management."
                }
              ]
            },
            {
              "level": 4,
              "level_name": "TechLead",
              "tasks": [
                {
                  "name": "Управляет governance-моделью data layer",
                  "info": "Согласует ownership, доступы, audit expectations и правила работы с данными между несколькими командами."
                },
                {
                  "name": "Принимает решения по security и compliance tradeoff",
                  "info": "Находит практический баланс между строгостью контроля, скоростью работы инженеров и реальной угроз-моделью."
                },
                {
                  "name": "Удерживает единые правила обращения с данными",
                  "info": "Не допускает, чтобы команды расходились в критичных вопросах доступа, retention и обработки чувствительных данных."
                }
              ]
            },
            {
              "level": 5,
              "level_name": "Principal",
              "tasks": [
                {
                  "name": "Формирует стратегию data governance компании",
                  "info": "Определяет базовые принципы ownership, доступа, классификации, retention и контроля жизненного цикла данных."
                },
                {
                  "name": "Выбирает operating model для контроля доступа к данным",
                  "info": "Решает, какие полномочия централизуются, а что остается у продуктовых команд под едиными стандартами."
                },
                {
                  "name": "Соединяет data platform с regulatory и business risk",
                  "info": "Учитывает требования безопасности, приватности и аудита при проектировании платформы и процессов эксплуатации."
                },
                {
                  "name": "Создает долгосрочную стратегию доверия к данным",
                  "info": "Строит платформу и governance-подход так, чтобы данные оставались управляемыми, надежными и пригодными для роста бизнеса."
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
