Рубрика:
Базы данных /
Личный опыт
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Алексей Кабарухин: «Администратор СУБД должен обладать развитым чувством ответственности, быть стрессоустойчивым и всегда встречать проблемы с холодной головой»
Алексей Кабарухин – старший инженер в Райффайзенбанке. Специализируется на администрировании СУБД PostgreSQL, IBM DB2 и MongoDB. Закончил факультет автоматики и вычислительной техники инженерно-технологической академии Южного федерального университета по специализации «системы автоматизированного проектирования». Он рассказал «Системному администратору» о тонкостях работы и обучения специалиста в области систем управления базами данными
Беседовал Игорь Штомпель
– Алексей, чем вы занимаетесь в Райффайзенбанке?
– В первую очередь – администрированием СУБД PostgreSQL: от установки и настройки до выявления узких мест в работе СУБД. Также я улучшаю мониторинг и консультирую разработчиков приложений. В общей сложности на все серверы PostgreSQL у нас выделено более 1000 ядер. В нашей компании приветствуется концепция «T-shape»-специалистов: человек одновременно является специалистом в своей области, а также имеет компетенции в смежных областях. В моем случае смежные области – это СУБД MongoDB, IBM DB2 и Oracle. Также я имею компетенции в Kubernetes: несколько месяцев назад прошел сертификацию CKA (Certified Kubernetes Administrator).
– Как вы пришли в ИТ? Почему выбрали администрирование баз данных?
– Еще во время учебы в инженерно-технологической академии Южного федерального университета на старших курсах я начал искать компанию, в которой можно было бы пройти стажировку и набраться опыта. Выбор сделал в пользу компании DBI. Для того чтобы попасть к ним на обучение, необходимо было изучить концепты баз данных Oracle.
Уже на данном этапе стало понятно, что скучно не будет. За шесть месяцев обучения пришлось изучить очень много материалов и решить ряд сложных, но интересных задач. Каждые два месяца мы проходили тестирование на проверку теоретических и практических знаний. Те, кто не проходил его, покидал компанию. К концу обучения из группы в 10 человек остались и получили работу только трое. Из-за того, что все сотрудники компании прошли точно такой же отбор, мне удалось поработать с очень компетентными и профессиональными коллегами и перенять у них много опыта.
– Каковы актуальные тренды развития баз данных и СУБД?
– На мой взгляд, общий тренд развития всей ИТ-отрасли заключается в переносе вычислительных мощностей в системы с оркестраторами контейнеров. Чаще всего это Kubernetes(K8s). Базы данных не являются исключением. Как правило, для удобства использования разрабатываются Kubernetes-операторы, которые являются вспомогательным ПО, призванным автоматизировать выполнение рутинных действий с объектами кластера, что значительно упрощает развертывание баз в K8s.
Для PostgreSQL, к примеру, интересные проекты – это Postgres Operator (компания Zalando) и StackGres (компания OnGres). Postgres Operator – это решение высокой доступности на основе Patroni, еще одной разработке Zalando. А StackGres – это продукт, который объединяет в себе весь стек для обслуживания PosgreSQL: решения высокой доступности (Patroni), резервного копирования, пула соединений (PgBouncer), мониторинга и журналирования. Для всех других популярных СУБД, например, таких как MongoDB, Cassandra, Redis, тоже существуют K8s-операторы от различных компаний. Даже для Oracle, однако вендор пока рекомендует использовать оператор только на тестовых системах. Но, думаю, со временем это ограничение будет снято.
– Какими знаниями и навыками необходимо обладать, чтобы быть специалистом в области систем управления базами данных?
– В первую очередь, нужно твердо знать теоретическую часть, а именно теорию реляционных баз данных. Необходимо понимать, что такое ACID (Atomicity, Consistency, Isolation, Durability) и как обеспечивается каждое из свойств. Применительно к выбранной СУБД нужно хорошо знать средства администрирования, журналирования, мониторинга, уровни изоляции и т. д. Администратор СУБД должен обладать развитым чувством ответственности, быть стрессоустойчивым и всегда встречать проблемы с холодной головой.
Также администратор должен уметь эффективно взаимодействовать с другими людьми. На, казалось бы, технической должности не лишним будет обладать навыком эффективного ведения переговоров. Внутри нашей компании мы проходим курсы по развитию soft skills. Это положительно сказывается на взаимодействии между людьми как внутри команды, так и между отделами.
– Какую разработку в области баз данных можно назвать наиболее важной, перспективной?
– Представим ситуацию: у вас есть крупная система, в рамках которой выполняются как короткие транзакции в реальном времени (OLTP-нагрузка), так и аналитические запросы (OLAP). К тому же общий размер системы уже превышает 100 Тб и продолжает расти. Держать все данные в рамках одной системы становится накладно: резервные копии делаются очень долго, стоимость лицензий весьма ощутимо влияет на бюджет. Производительность системы из-за смешанной нагрузки местами проседает.
Выходом из такой ситуации являются так называемые системы «полиглот», или системы «многовариативного хранения»: в различных СУБД хранятся разные слои данных: документоориентированные (к примеру, в MongoDB), графовые (Neo4j), кеш (Redis), поисковые (ElasticSearch), строковые (Cassandra). Интеграция между СУБД реализуется с помощью Foreign Data Wrappers (обертки сторонних данных).
Применительно к выбранной СУБД нужно хорошо знать средства администрирования, журналирования, мониторинга, уровни изоляции |
Преимущества: более высокая скорость отклика и отличные возможности по вертикальному и горизонтальному масштабированию. Недостатки: администрирование различных СУБД более трудоемко, чем администрирование одной. Кроме того, желательно взять в штат, по крайней мере, по одному эксперту по каждой из СУБД. Тестирование всей системы становится более трудоемким, и отладка может занимать больше времени.
Несмотря на все минусы, у такой системы есть отличные перспективы в будущем. Уже существуют системы с единым API, с помощью которого искусственный интеллект сам распределяет данные по нужным слоям.
Это позволяет значительно нивелировать описанные недостатки.
– Какие основные новшества PostgreSQL 12 наиболее важны?
– На мой взгляд, можно выделить три самых важных новшества:
- Значительно улучшена работа декларативного секционирования. Если раньше можно было наблюдать падение производительности у таблиц, содержащих более 100 секций, то теперь таблицы могут содержать несколько тысяч секций, а производительность снижается значительно меньше по сравнению с предыдущими версиями PostgreSQL.
- Появилась операция REINDEX CONCURRENTLY, которая позволяет перестраивать индексы, не устанавливая никаких блокировок, которые предотвращали бы добавление, изменение или удаление записей в таблице. Ранее приходилось сначала создать индекс в concurrently-режиме, удалить старый индекс и опционально переименовать вновь созданный индекс. Теперь же эти три действия объединились в одно, что немного упрощает администрирование БД.
- Была добавлена команда pg_checksums, которая позволяет включить проверку контрольных сумм страниц данных. Правда, сделать это можно пока только на выключенной БД. Ранее этот параметр можно было установить лишь при инициализации БД, а изменять впоследствии уже нельзя.
Хочется также добавить, что с каждым релизом PostgreSQL мы наблюдаем увеличение производительности. В частности, в 12-й версии увеличена производительность и снижено использование дискового пространства B-tree-индексов в среднем на 40 %.
Нельзя не упомянуть появление в 12-й версии PostgreSQL типа Jsonpath и изменение поведения CTE (Common Table Expression) по умолчанию.
– Вы упомянули «выявление узких мест» в работе СУБД. В чем они проявились при эксплуатации PostgreSQL?
– На мой взгляд, появление почти всех узких мест в PostgreSQL связано с особенностями реализации системы MVCC (многоверсионная система управления транзакциями). Ее главным недостатком является то, что все версии данных хранятся в одном месте, из-за чего мы можем наблюдать чрезмерное разрастание таблиц (bloating) при интенсивных операциях записи. Конечно, есть VACUUM, который высвобождает версии строк, не нужных ни одной из транзакций, однако это дополнительно нагружает процессор и диски. Ситуация усугубляется тем, что если в базе висит долгая транзакция, то VACUUM не может нормально выполнять свою работу.
– Что вам не хватает в функциональности PostgreSQL?
– Исходя из проблемы, описанной выше, сейчас PostgreSQL не хватает подключаемых хранилищ с UNDO-логом (zheap). Это позволит заметно сократить объем записи на диск. В 12-й версии уже появился механизм подключаемых хранилищ. Надеемся, что в 13-й версии мы уже сможем получить подключаемое UNDO-хранилище или, например, подключаемое колоночное хранилище ZedStore.
Появление почти всех узких мест в PostgreSQL связано с особенностями реализации системы MVCC |
Также, на мой взгляд, не хватает механизма декларативного переключения между master и standby-кластером. Внутри PostgreSQL уже есть все компоненты, позволяющие без потери данных выполнить переключение, и хотелось бы делать это через внутренние SQL-команды, а не через внешние средства.
– Сертификация Kubernetes, – что включает в себя программа СКА? Какие материалы вы использовали для подготовки к экзамену?
– Я считаю, что программа сертификации CKA разработана так, чтобы человек, сдавший ее, обладал необходимыми знаниями и навыками для администрирования Kubernetes-кластеров.
Насколько я могу судить по своему личному опыту, кандидат должен понимать внутреннее устройство K8s, знать основные компоненты, уметь обслуживать и обновлять кластер, настраивать журналирование и мониторинг, выявлять и устранять неполадки.
Материалы, которые я использовал для подготовки к экзамену:
- официальная документации с сайта kubernetes.io;
- официальные учебные курсы LFS-158 и LFS-258 от CNCF (Cloud Native Computing Foundation);
- официальная программа экзамена https://github.com/cncf/curriculum;
- руководство «Kubernetes the hard way» от Kelsey Hightower;
- «Learn Kubernetes using Interactive Hands-on Scenarios» от Katacoda.
Вся эта информация бесплатна, кроме курса LFS-258, однако для успешной сдачи экзамена будет достаточно материала из остальных источников.
– Какие требования к проведению экзамена? Место проведения, что можно использовать (например, документацию), у кого есть допуск в комнату проведения, делают ли перерыв?
– Экзамен проводится онлайн. На столе не должно находиться ничего, кроме ноутбука (или мышки и клавиатуры, если у вас стационарный компьютер). Нужна веб-камера, чтобы показать проктору окружающее вас пространство. Проктор будет видеть всё, что происходит у вас на экране. Запрещается любое копирование материалов экзамена, поэтому будут отслеживаться все нажатия на клавиши.
Вы должны находиться в комнате один. В процессе экзамена разрешается использование официальной документации. Экзамен длится три часа. Можно запросить перерыв, однако нужно учитывать, что экзамен не будет поставлен на паузу.
В случае неудачной попытки сдачи экзамена вам доступна одна бесплатная пересдача.
Подпишитесь на журнал Купите в Интернет-магазине
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|