Мы побеседовали с Константином Тарановым, разработчиком и администратором баз данных в компании Газэкономика, подразделения Газпром. Профессиональный стаж Константина составляет более 10 лет, в течение которых он поработал со всеми ключевыми реляционными СУБД, в результате чего остановил свой выбор на MS SQL Server. Константин обьяснил, почему SQL Server так привлекателен для решаемых в компании Газэкономика задач, и рассказал о наиболее полном в рунете наборе инструментов и полезных материалов для работы с SQL Server.
![«За ту же функциональность, которую дает SQL Server, Oracle просит в 10 раз больше», — Константин Таранов о SQL Server - 1 «За ту же функциональность, которую дает SQL Server, Oracle просит в 10 раз больше», — Константин Таранов о SQL Server - 1](https://www.pvsm.ru/images/2017/05/31/za-tu-je-funkcionalnost-kotoruyu-daet-SQL-Server-Oracle-prosit-v-10-raz-bolshe--konstantin-taranov-o-SQL-Server.png)
PG Day: Константин, расскажи немного о себе. Как давно ты работаешь в профессии, какие профессиональные проблемы доводилось решать на жизненном пути?
КТ: Кратко о себе: окончил МИФИ, по образованию я – инженер-физик, специализация – реакторное материаловедение. Уже на четвертом курсе я понял, что это не совсем мое призвание, поэтому решил переквалифицироваться в IT-специалиста. Тогда был очень сильный тренд в сторону Oracle, страна была относительно на подъеме, много вакансий в IT и банковской сфере. Мне удалось без опыта и бэкграунда устроиться в РДТех. Там я работал в одном из крупнейших на то время проектов – построении хранилища данных для банка ВТБ24. Последующие пять лет прошли в тесной работе с Oracle. В 2012 году я пришел в Газэкономику. Главная задача нашего центра – это прогнозирование спроса на газ, уголь и другие топливные ресурсы не только по России, но и в мире.
Mы работаем с очень объемами информации и различными источниками данных, которые зачастую не согласованы между собой, из-за этого приходится регулярно проводить проверки и сопоставление данных. Как сейчас модно говорить, data science.
В Газэкономике исторически использовался Microsoft SQL Server. На тот момент это был 2008, но буквально с моим приходом мы обновились на 2012. Сейчас планируем переходить на 2017. Наконец-то вышел CTP 2.1, Microsoft обещает релиз для конечного использования 31 мая. Также у нас есть небольшие информационные системы для внутреннего использования, которые крутятся на PostgreSQL. Соответственно, за 10 лет в IT я познакомился, с многими реляционными базами данных, потому что, помимо PostgreSQL, Oracle и SQL Server, мне пришлось активно работать и с MySQL.
PG Day: Ты уже много лет работаешь с реляционными базами данных. Почему, на твой взгляд, реляционные БД не теряют своей актуальности?
КТ: Сейчас очень много NoSQL и big data. Это интересный круг задач, но я считаю, что это узкая ниша. У нас закуплено очень много источников из различных информационных агентств. Все эти агентства очень дорого стоят, подписки достигают сотен тысяч долларов. То есть, казалось бы, информация есть готовая, бери и используй. Но на деле выходит, что она очень “грязная” и зачастую не соответствует действительности. Нельзя просто взять эти данные и использовать, писать алгоритмы машинного обучения, строить модели. 70% времени мы проводим, верифицируя эти данные и сопоставляя их между собой. Даже справочник «Страны» и понятие “страны” у разных информационных агентств отличается. Яркий пример – United Kingdom. Некоторые информационные агентства включают туда только Шотландию, Англию, Уэльс (3 страны), а Северную Ирландию и различные подчиненные островные государства не включают, некоторые – наоборот. Соответственно, суммарная статистика по этим данным расходится.
В чем сила реляционных баз данных? Это технология, которая проверена десятками лет. Она была создана очень давно и в ее основе лежит сложная математика. Потратив время на создание правильной структуры базы данных, проведя очень подробный первичный анализ, обработку, верификацию, на выходе получаешь готовые данные, которые можно уже передавать в любую модель, любой алгоритм и получать хорошие результаты. Если у тебя плохие данные, ты, конечно, можешь обучить нейронную сеть или построить еще более сложный алгоритм, но на выходе они дают плохие результаты. Это неоднократно проверено на нашем примере. Мы используем для решения так называемых оптимизационных транспортных задач язык R. У нас работает 3 математика, и им R сразу пришелся по душе, так как он максимально близок к их структуре
Также у нас не было проблем с производительностью. Все работает очень хорошо и быстро. За последние три года мы ушли с С#, бизнес-логику полностью перенесли в R и еще ни разу об этом не пожалели.
PG Day: Чтобы ты мог посоветовать тем, кто планирует заниматься базами данных, с чего начать, в какую сторону “копать”?
КТ: Крайне рекомендую пройти курс Стэнфорда по реляционным базам данных. Он много времени уделяет азам, в свое время этот курс очень много открыл для меня. Данный курс показывает, что в основе реляционных баз данных – серьезная математика, реляционная алгебра, за которой стоят годы исследований. Без NoSQL тоже сейчас никуда, потому что, все-таки, большие объемы информации, гигабайты данных, иногда лучше обрабатывать другими решениями. Не пытаться их засунуть в реляционную базу данных, если не понятна структура отношений между данными, или ее как таковой нет – черная дыра, которую нужно долго исследовать. Потом уже, когда ты знаешь, что находится внутри, есть смысл переносить структурированные данные в реляционную структуру.
PG Day: Допустим, у тебя возникла потребность выбрать хранилище данных для нового проекта, на чем бы ты остановился? Oracle, SQL Server, PostgreSQL?
КТ: Если бы я сейчас выбирал стек технологий, я бы с удовольствием выбрал SQL Server, но только для серьезных крупных проектов. Если бы мне пришлось делать собственный проект, то я бы остановился на PostgreSQL именно из-за бесплатности. Я не так хорошо знаком с PostgreSQL, чтобы советовать ее сразу применять в серьезной коммерческой системе. Минус PostgreSQL – это отсутствие поддержки. В Microsoft она тоже не идеальна, но она есть.
Почему не Oracle? Oracle очень дорог. Его нецелесообразно использовать, на тренинге я это покажу. За ту же функциональность, которую дает SQL Server, Oracle просит, в среднем, в 10 раз больше. Зачем платить больше? Это другой вопрос. Если у вас сервера куплены под Oracle или у вас очень много денег, конечно, можно выбрать Oracle. Но я рекомендовал бы SQL Server. За последние 5 лет он сделал огромный скачок. Я помню эту базу еще в 2008 году, когда у нас был в “проде” SQL Server 2005 и он производил гнетущее впечатление как в плане производительности, так и в плане клиента SQL Management Studio. Теперь SQL Management Studio – один из самых лучших инструментов для работы с SQL Server. У него единственный минус – это то, что он работает пока что только с SQL Server. Но это, пожалуй, лучшая бесплатная среда, которая обладает очень широким диапазоном возможностей для разработчиков.
Если вы действительно хотите получить удовольствие от разработки реляционных баз данных, то SQL Server + бесплатный SQL Management Studio – это сейчас самое то. Еще важная “плюшка” – лицензия SQL Server Developer для разработчика бесплатная. Раньше она стоила небольших денег (порядка 3000 рублей). Я для своих нужд покупал, это не дорого – вложение денег в свое обучение всегда окупается. Сейчас же это вообще стало бесплатно. Я считаю, что с приходом SQL Server на Linux, стоит потратить несколько часов и попробовать эту базу данных. Возможно, она вам очень понравится.
PG Day: Ты знаком с разработкой и администрированием SQL Server. Насколько трудно сочетать два различных амплуа? Насколько это распространено в мире SQL Server?
КТ: В мире SQL Server это две совершенно раздельные роли. Но у SQL Server есть два огромных преимущества. Во-первых, как уже упоминал раньше, SQL Management Studio. Это великолепный GUI, который можно использовать для администрирования, и он покрывает 95% всех задач администратора, это учитель и советчик в одном лице. SQL Management Studio дает возможность “генерить” на лету скрипт Transact-SQL. Выбрав в GUI всякие галочки, сделав предварительные настройки, тут же можешь получить работающий скрипт, который в дальнейшем будешь использовать напрямую. Или прикрутить job, который по расписанию будет запускать этот скрипт. Делай с ним что угодно. Отдай своим разработчикам, чтобы они его доработали.
Второй главный козырь – это очень хорошая поддержка PowerShell. Если у вас есть большое количество серверов, на которых необходимо проводить рутинные, повторяющиеся операции, то PowerShell – это отличный выбор. Он полностью интегрирован с SQL Server (одноименный модуль SqlServer, который постоянно развивается и улучшается), умеет делать абсолютно все тоже самое, что и Transact-SQL, даже лучше. Плюс, наконец-то появился в open source так называемый DBA Tools. Это набор функций и скриптов PowerShell для работы с SQL Server. На текущий момент он покрывает почти все, от резервного копирования до восстановления – весь цикл обслуживания SQL Server. Достаточно установить модуль PowerShell, изучить основные команды и функции, их параметры. Это делается буквально за 2 вечера.
И еще дополнительное преимущество PowerShell – вы получаете хорошую поддержку языка С#. Почти весь код, который работает на С#, можно встроить в PowerShell. Если у вас есть уже готовые решения на C#, вы можете их легко применить для работы с большим количеством серверов и баз данных, используя PowerShell. Если вам приходится заниматься бекапом, настройкой резервного копирования, проверкой и подобными задачами, есть инструменты и хранимые процедуры, которые позволяют это делать без затрат денег, не нужно покупать никакое стороннее решение. Есть смысл купить его, если вам действительно нужен удобный интерфейс и различные плюшки. Но все это можно сделать абсолютно бесплатно.
PG Day: Хочу перейти к твоему предстоящему выступлению на нашей конференции, которая пройдет летом в Санкт-Петербурге. Ты собираешься выступить с очень большим мастер-классом. Что сподвигло тебя принять участие в нашем мероприятии? Специалистов какого профиля ты ожидаешь увидеть на своём выступлении?
КТ: Прежде всего, у меня есть корыстный интерес к участию в конференции. Одна из задач на текущий год, которую мы себе поставили – это возможность переноса нашего решения на PostgreSQL, в случае если наши новые заказчики не захотят покупать лицензию на SQL Server. Необходимо оценить, насколько сложно будет перейти на PostgreSQL, как сделать первые шаги в этом направлении. У нас есть уже прототип, около 20% текущего решения работает с PostgreSQL в тестовом режиме. Мне интересно поучаствовать в такой большой конференции, послушать выступления других людей, узнать из первых уст, какие инструменты они используют, какие существуют ресурсы для обучения, какие объемы данных перерабатывают.
Идея сделать полноценный тренинг вынашивается уже более пяти лет. Года четыре назад, на курсах специалиста по разработке на TSQL мне жутко не понравилось, как читал материал лектор, словно по бумажке. Реальных “кейсов” использования SQL Server не было. Он просто взял программу Microsoft, вызубрил и прочитал ее. А у нас за пять лет накопилось много опыта, мы прошли все версии от SQL Server 2008 до SQL Server 2016. С каждой версией продукт обрастал возможностями, становился быстрее, надёжнее. Появилась поддержка выполнения кода R в SQL Server, что нам очень нравится, мы уже это используем, правда, есть проблемы с переходом на SQL Server 2016 у заказчика. У нас на тестовых средах все хорошо, но, чтобы мигрировать, надо показать заказчику все преимущества данного обновления (конкретно для него – это увеличение скорости работы системы и возможная экономия на железе). Работаем активно в этом направлении.
Соответственно, накопилось очень много практик, внутренних документов, скриптов, бесплатных решений, модифицированных под наши нужды. Все это есть в репозитории на Github, который мы поддерживаем и стараемся обновлять чуть ли не каждый день: пополняем его новыми статьями, ссылками на полезные ресурсы, скриптами, в том числе и для PowerShell. На текущий момент наш сайт sqlserver-kit.org – это, без ложной скромности, самый подробный ресурс по SQL Server, на котором находится исчерпывающая информация.
Мой тренинг является продолжением развития этого ресурса, только уже в виде конкретных check-листов, практик, которые я постараюсь донести до слушателя. Очень хочется, чтобы уровень аудитории был на уровне между entry-level и mid-level разработчиками, которые смогут в ответ внести свою лепту, указать, где стоит делать по-другому, чтобы получить максимально хороший результат от SQL Server.
Если есть желающие помочь, найти ошибки, неточности, свои скрипты добавить – всегда добро пожаловать, будем рады. Можно завести issue или pull request, на который мы очень быстро отреагируем. Материалы распространяются по лицензии MIT, любой человек может их скопировать и использовать, как ему вздумается, в том числе и в коммерческих целях.
PG Day: Продвижение собственных инструментов в open source – это очень позитивный шаг. Эксплуатация SQL Server на Linux, бесплатной open source среде, является одной из причин, которая подтолкнула нас к идее проведения этого мастер класса. Возможность возникла очень недавно, один из вопросов, который заинтересует слушателей – какие есть трудности и подводные камни, связанные с эксплуатацией SQL Server на Linux? Есть ли планы по разбору полетов в твоем мастер-классе?
КТ: Да, это один из главных козырей Microsoft в вечном споре, что выбрать: Oracle, PostgreSQL или MS SQL. Сейчас много разработчиков занимается адаптацией SQL Server, он уже работает почти так же, как и под Windows. Соответственно, я очень постараюсь адаптировать свое выступление соответствующим образом. Естественно, это будет виртуальная машина, SQL Server 2017, релиз которого запланирован на 31 мая. Если его вдруг перенесут, а такое вполне возможно, то это будет версия CTP 2.1.
Соответственно, в качестве дистрибутива Linux я рассматриваю CentOS. Сейчас я проверяю все скрипты, которые планирую показать на этом стеке. Если все пойдет как планировалось, то демонстрация и весь тренинг будут построены на стеке Linux + SQL Server, адаптированном под Linux. Если вдруг что-то пойдет не так, тогда будет Windows Server 2016 + SQL Server 2017.
PG Day: Продукты Microsoft – это целая экосистема, а не только SQL Server “в вакууме”. Ты можешь выделить особенности всей экосистемы в целом, которые тебе кажутся удобными и полезными с точки зрения именно эксперта по базам данных, которые ты бы хотел видеть на других платформах?
КТ: Я бы хотел в идеале, чтобы Management Studio работала со всеми базами данных, очень удобная штука. Что еще удобно в Windows? Пожалуй, это PowerShell, я его действительно полюбил, он сильно упрощает жизнь, в нем есть все что нужно. В нем можно строить графики, можно выводить grid-ы, которые фильтруются очень легко. Можно делать запросы тому же SQL Server, Postgres-у, получать данные в нужном виде, экспортировать в csv, делать импорт. В powershell каждая переменная – это объект. Заполняем его, преобразуем, делаем с ним, что угодно. Плюс, PowerShell стал open source – теперь это кросс-платформенный скриптовый язык с открытым кодом.
Единственный минус PowerShell – это отсутствие GUI, как странно это ни звучит. Все-таки, некоторые вещи удобно делать в GUI: смотреть планы выполнения запросов, например. Наглядность и наличие графиков играют важную роль. PowerShell может строить неплохие графики. если у вас под рукой ничего нет, вы всегда можете его установить и использовать как генератор графиков.
PG Day: Я, как постгресист с опытом, привык к тому, что любые адекватные действия с базой данных можно сделать только в консоли, в psql, а совсем хороших “гуевых” утилит не бывает. Это актуально для многих людей, работающих с open-source продуктами: никто не привык все делать в графическом интерфейсе. Планируется ли поддержка инструмента Management Studio, о котором ты очень хорошо отзываешься, под Linux? Насколько он подойдет людям, которые хотят использовать SQL Server под Linux, или же им все-таки придется что-то делать по-старинке, в консоли?
КТ: К сожалению, сроки выхода Management Studio под Linux пока не объявлены. Я не знаю, будут ли они переносить релиз. Поэтому пользователь Linux какое-то время будут обделены таким богатым интерфейсом. Конкретных сроков по миграции нет, но уже вышла Visual Studio (SSMS – это, фактически, форк Visual Studio, адаптированный под разработку SQL Server) под Mac, так что скорее всего в конце этого года или в следующем году SSMS станет кроссплатформенным. Что касается работы с командной строкой, то уже есть 2 утилиты, работающие под Linux: mssql-scripter и DBFC. Чтобы оценить, насколько много полезных инструментов для работы с SQL Server существует, достаточно ознакомиться с моим списком, в котором на текущий момент перечислено более 200 утилит и программ. Я думаю, что адаптация для Linux будет осуществлена вместе с выходом финальной версии. Пока что пользователям Linux придется потерпеть, подождать выхода Management Studio. И я уверен, что большинству разработчиков понравится, особенно тем, кто сталкивался с Visual Studio.
PG Day: Ты в своем мастер-классе запланировал посвятить очень большой раздел оптимизации запросов. На каких аспектах оптимизации ты собираешься остановиться? Какие задачи слушатели смогут решать вместе с тобой?
КТ: Да, эта часть материала просто огромна и под нее необходимо устраивать отдельный тренинг. Но в рамках доступного мне времени я покажу всю прелесть оптимизации запросов в SQL Server Management Studio. SSMS очень активно развивается, и она просто создана для оптимизации запросов. При этом каждые два месяца выходит новая версия с поддержкой новых фич SQL Server. “Киллер-фича”, которая появилась буквально полгода назад, и теперь экономит кучу времени – это просмотр плана выполнения запроса в реальном времени.
В процессе оптимизации всегда приходится ждать окончания выполнения запроса, чтобы понять, какая статистика использовалась, какие предположения оптимизатор сделал для выбора той или иной операции, какие оценки сделал о количестве строк в таблицах. Все это можно посмотреть с помощью оценочного плана выполнения запроса, но зачастую он может сильно отличаться от реального. Поэтому, если действительно надо оптимизировать критически важный запрос, требуется реальный план выполнения.
Начиная с версии 16.4, Management Studio умеет в реальном времени выдавать план выполнения запроса. Если у вас есть очень долгий запрос, который работает десятки минут, а то и часы, можно не ждать его окончания, чтобы увидеть, что план выполнения просто ужасен: не используется ни один из индексов, либо выбран неоптимальный join. Запрос можно тут же “убить”, с помощью хинтов изменить логику, получить более хороший план, и сразу его посмотреть, запустив еще раз запрос. Management Studio в отдельном окне покажет процесс построения исполняемого запроса, план примет законченный вид уже после выполнения. Это, по моему мнению, “убер-фича”. Раньше мне этого очень часто не хватало, особенно в Oracle, когда работали с большими банковскими системами, и запросы могли выполняться по 2-3 часа.
Помимо этого, у Management Studio есть отличная встроенная утилита для сравнения плана выполнения запросов. Можно выполнить два запроса на разных базах данных, экспортировать их в файл XML и потом с помощью Management Studio сравнивать. Они придумали отличный GUI для сравнения: все понятно, сразу видны проблемные места. Очень полезно, когда на продакшн-системе план выполнения запроса один, а на тестовой – другой. Приходится разбираться, в чем может быть дело, и этот инструмент очень сильно помогает.
Теме оптимизации запросов будет уделено очень большое внимание. Я постараюсь максимально подробно осветить распространенные проблемы в SQL Server, сделать акцент на индексы: какие они бывают, какие лучше использовать в тех или иных случаях. К слову, в 2012 версии SQL Server появился колоночный индекс, который помогает очень сильно ускорить запросы на больших хранилищах данных, где много столбцов. Мы все это посмотрим.
PG Day: Отлично. Это будет очень интересно – увидеть в динамике инсталляцию.
КТ: Да, безусловно. Все участники мастер-класса получат виртуальные машины в полное распоряжение. Если у них какие-то проблемы и вопросы будут возникать, то это будет оперативно решаться даже после окончания тренинга.
PG Day: Если кто-то еще захочет с тобой пообщаться, задать вопросы, как тебя можно найти в сети? Какие “паблики”, посвященные MS SQL Server, ты посоветуешь?
КТ: У меня есть личный сайт, на котором опубликованы мои координаты во всех социальных сетях, которые я посещаю: Stack Overflow, github, мессенджеры и т.д. Я периодически провожу небольшие консультации по SQL Server, всегда открыт, отвечу на любой вопрос, не обязательно участника конференции.
К слову, еще один плюс, почему стоит изучать именно SQL Server – это очень классное комьюнити. Англоязычное, правда, но уровень ответов и фидбека, который получаешь от него, просто колоссален. Твою проблему иногда могут решить такими способами и настолько эффективно, что тебе просто остается взять готовое решение и внедрить в свою систему.
Есть очень много каналов. Отдельные каналы в #slack, в twitter (все социальные ресурсы собраны здесь). На Github огромное количество проектов с открытым исходным кодом, посвященных улучшению работы с SQL Server, в которых участвуют одни из лучших профессионалов в области SQL Server – к ним всегда можно обратиться с вопросом.
Если в твиттере с хеш-тегом #sqlhelp написать свой вопрос, то всегда найдутся люди, которые очень оперативно и достойно ответят.
Прорекламирую sqlcom.ru: это сайт и telegram-чат, где можно задать вопрос по любому решению в мире SQL. В основном, там обитают специалисты по SQL Server, причем разной квалификации: есть и хорошие продвинутые администраторы баз данных, и серьезные разработчики С#, и т.д. Если ваша проблема грамотно описана и интересна, всегда найдется человек, который поможет вам, в том числе и я.
Надеемся, что интервью и обширный список полезных ресурсов для всех разработчиков MS SQL Server, предложенный Константином, будет для вас интересен. Ну а мы приглашаем вас принять участие в PG Day'17 Russia и посетить мастер-класс Константина, в рамках которого он расскажет все необходимое для эффективной эксплуатации SQL Server: как выбрать подходящую версию СУБД, установить под Linux или Windows, что в первую очередь настраивать, какими инструментами пользоваться и много другое!
Автор: rdruzyagin