Профессиональный SQL Server поверх Linux
Copyright © 2018 Боб Вордс
|
Данный документ предоставляется по лицензии Creative Commons Attribution 3.0 License, за исключением разделов со специальными оговорками. |
Первая публикация на английском языке: Октябрь 2018
Опубликовано Apress, Berkeley, CA
North Richland Hills, TX, USA
ISBN 978-1-4842-4127-1
eBook ISBN 978-1-4842-4128-8
2019-02-23
- Автор
- Боб Вордс
- Технический рецензент
- Энтони Ночентино
- Директор- распорядитель, Apress Media LLC
- Велмоуид Спахр
- Редактор приобретения
- Джонатан Дженник
- Редактор по разработке
- Лаура Берендсон
- Координирующий редактор
- Джил Бальцано
- Разработка обложки
- Freepik (www.freepik.com)
Эта книга посвящается всем тем людям, которые работали в Microsoft более 25 лет над построением, снаряжением, поддержкой и выводу на рынок своего продукта SQL Server.
является главным архитектором Группы служб данных Microsoft SQL Server, которая ведала разработкой всех версий SQL Server. Боб проработал в Microsoft 25 лет над всеми версиями SQL, поставляемыми начиная с OS/2 1.1 вплоть до SQL Server 2017, включая Linux. Он работал в службе поддержки в качестве главного инженера эскалации и и главного технологического директора (CTO), взаимодействуя с рядом крупнейших в мире установок SQL Server. Боб - известный докладчик по SQL Server, который часто выступал с докладами при новых выпусках, о внутреннем устройстве и производительности на таких мероприятиях как SQL PASS Summit, SQLBits, SQLIntersection, Red Hat Summit, Microsoft Inspire и Microsoft Ignite. Вы можете найти его в твиттере как @bobwardms, читать его публикации в блогах по ссылкам http://aka.ms/bobsql или http://aka.ms/sqlblog, либо знакомиться с его демонстрациями в http://aka.ms/sqlchannel
Энтони Ночентино является основателем и президентом Centino Systems, а также автором Pluralsight, MVP платформы данных Microsoft, а также экспертом SQL Server и Linux. В своей практике консалтинга Энтони разрабатывает решения, внедряет технологии и представляет экспертные знания относительно производительности систем, их архитектур и безопасности. Энтони имеет степень бакалавра и магистра по информатике с исследовательскими публикациями в области виртуализации машин, алгоритмов доступа к данным с высокой производительности/ низкой латентностью и пространственным системам баз данных. Вы можете отыскать Энтони в твиттер по @nocentino и в его блоге по www.centinosystems.com/blog/
Есть очень много людей, которых я бы хотел поблагодарить как часть моего путешествия по написанию данной книги. Прежде всего я бы хотел поблагодарить своего Господа и Спасителя Иисуса Христа. Моя вера - основа моей жизни, и я твёрдо верю, что Бог дарует всем нам наши способности. Далее я должен обратиться к своей невероятной жене Джинджер Ворд, которая была настолько терпелива и ободряла меня на протяжении всего моего опыта в авторской работе. Она выслушивала мои жалобы, страхи, радости и мирилась со всеми моими поздними вечерами за созданием этой книги. Она много раз управляла моей машиной в поездках, позволяя мне поработать над фрагментами книги на пассажирском сиденье её Лендровера. Я также хочу поблагодарить двоих своих сыновей, Троя и Райана Ворда, которые каждый день вдохновляют меня быть мужем, отцом и человеком с убеждениями, ответственностью и честностью.
Я бы никогда не сделал эту книгу без Джонатана Дженника из Apress. Джонатан, спасибо вам за то что рискнули с этой книгой и мной, когда ни один другой издатель не принял бы её. Говоря о дюдях, которые сделали эту книгу возможной, я должен упомянуть работу Энтони Ночентино, моего технического рецензента. Энтони представил обширные познания Linux и SQL Server и без этого я не уверен что книга книга представляла бы собой законченную версию. Энтони также проделал потрясающую работу по быстрой смене обзоров, даже несмотря на то что мы уложились в крайне сжатые сроки. Что мне больше всего нравилось в стиле Энтони как рецензента, так это то, что он был так прозрачен и высказывал то что ему нравится в этой книге наравне с тем, что делал точные и справедливые замечания относительно того, что по его мнению необходимо изменить. Энтони, спасибо за поддержку меня на протяжении всего путешествия. Я также хочу лично отметить Джилл Бальцано из Apress, которая держала меня в здравом уме и организовывала на протяжении всего написания книги, координируя мои тектсты с рецензиями Энтони и Джонатана. Джилл не только прекрасна, но она и потрясающий профессионал!
Я также хотел бы поблагодарить часть персонала в Microsoft, которые помогли мне просмотром части книги и были настолько любезны и профессиональны в ответах на мои вопросы, включая Слау Окса, Роберта Дорра, Скотта Конерсманна, Прадип М М, Джейсона Рота, Трэвис Райт, Прасада Таммана, Макаэля Бленди, Вин Ю, Ратиджит Сен, Брайана Джанфоркаро, Джейми Рединга, Патрика Килфойла, Митчела Стернке, Дилана Грея, Суреш Агарвал, Парикшит Савджани, Педро Лопеса, Сурабха Агарвала, Сунил Агарвал, Брукса Реми, Анав Сингх а, Денжас Рибейро, Теджас Щаха, Мишеля Примке и Харини Гупту.
Я также хочу поблагодарить своих руководителей в Microsoft, Рохана Кумара и Асада Хана, которые предоставили мне благословенную возможность для проповедования и продвижения технических сторон SQL Server, включая Linux, во всём мире. Я также хочу поблагодарить членов команды Microsoft Marketing, которые вместе со мной работали над выработкой верной стратегии по распространению сообщений относительно SQL Server. Спасибо Джону Дж. Г. Чирапурату, Рамнику Гулати, Дебби Лайонс, Аншул Рампал, Марко Хотти, Мэтью Берроузу, Фредерико Праватте Резенде, Джейн Гао и Джо Малезих.
Я также хочц поблагодарить некоторые компании- партнёры Microsoft, с которыми я работал на протяжении прошлого года относительно общения SQL Server поверх Linux, включая Венди Хармса и Урса Ренггли из HPE и Николаса Герасиматоса из Red Hat.
Наконец, я бы хотел поблагодарить команду проекта Хельсинки. Без их преданности и инновациям SQL Server поверх Linux всё равно пребывал бы где- то на маркерной доске. Вместо этого он на самом деле один из действительно удивительных продуктов, которые я видел в Microsoft за свою карьеру.
Внедрение SQL Server в Linux было авантюрным начинанием. Нам потребовалось менее двух лет, чтобы снарядить конечный продукт. Тем не менее, в течение первого года многое нужно было сделать правильно, чтобы этот проект был успешным. В прошлом команда SQL Server пыталась выполнить эту работу несколько раз, но каждый раз, наша команда врезалась в стену и отступала. Когда-то в 2010 году Хэл Беренсон даже опубликовал блог, в котором рассказывалось, почему перевод SQL Server в Linux не является хорошей идеей.
Тем не менее, в конце 2014 года команда решила ещё раз заняться портированием SQL Server в Linux. Начальная команда, состоящая из двух руководителей программ, Джо Идзиорека и Тобиаса Тернстрома, сосредоточилась на бизнес-возможностях. Очень скоро они убедились, что существует не только эта, но целое множество возможностей для бизнеса. Однако убедить других в компании оказалось проблематичным. Чтобы воспринимать их всерьез, они должны были найти инженерный подход. Техническая оценка из прошлого была ошеломляющей. По оценкам, команда из 10 - 20 инженеров посвятила себя проекту в течение пятилетнего периода. Команда знала, что у них не было ни столько инженеров, ни времени. Необходим был новый план разработки.
Прямо в это же самое время я рассматривал новые возможности. Мои приятели из команды SQL Server соединили меня с Джо и Тобиасом и мы начали переговоры. Я согласился с нашей командой что выполнение прямой портации не лучшая идея. Я попросил команду дать мне несколько дней для взвешивания возможных подходов. Совершенно случайно я был знаком с исследованиями Drawbridge и так получилось, что я применял их в качестве уровня абстракции платформы, известной как PAL, для запуска приложений Windows внутри иной операционной системы в своём предыдущем проекте. Поэтому мне не потребовалось много времени чтобы соединить имеющиеся пункты и прийти к решению что мы потенциально могли бы воспользоваться технологией Drawbridge для перевода SQL Server в Linux. Поэтому я закусил удила и присоединился к данному проекту.
Технология Drawbridge была тем самым моментом, который должел был бы подойти нам для достижения успеха. Многие, включая исследователей и инженеров связанных с Drawbridge скептически относились к этому подходую Их беспокоило полное несоответствие между состояниями времени исполнения Linux и Windows. Более того, практически все скептически относились к вопросам производительности. Лично я больше всего беспокоился о первом, нежели о последнем. Я не знал, сможем ли мы достичь полной обработки исключительных ситуаций Windows и сможем ли мы заставить работать семантику растущего стека. Тем не менее, я не сильно беспокоился относительно производительности. Я знал изнутри работу как SQL, так и Drawbridge, поэтому у была очень хорошая мысль как по максимуму выжать производительность из них обоих.
После того как мы получили в своё распоряжение Drawbridge, SQL Server был запущен в Linux менее чем за месяц. Оказалось, что Эндрю Бауман, инженер из исследовательской группы Microsoft, уже имел некий ранний прототип Drawbridge, работавший в Linux. Он заставил имевшуюся у него портацию работать в своих исследованиях. Работа Drawbridge в Lonux, даже в прототипе, была следующим подходящим для нас моментом. Я присоединился к команде второго февраля 2015 года и с помощью прототипа Эндрю в конце месяца SQL Server работал в Linux. В конце февраля 2015 года у нас в руках были не только бизнес портфель и план разработки, но также и SQL Server, который на самом деле работал в Linux.
Обладание работающим в Linux SQL Server сделало этот проект реальностью. Джо, Тобиас и я запустили компанию, которую мы именовали как "показ собачек и пони". Мы обошли всю компанию и поговорили с влиятельными исполнительными директорами чтобы собрать их отзывы относительно экономического обоснования и прочих подробностей. Самое интересное состояло в том, что многие руководители не воспринимали этот проект целиком всерьёз до самого конца нашей беседы, когда после представления и обсуждения целей бизнеса мы показывали SQL Server, запущенный в Linux. Тогда выпадала челюсть. Одной из самых забавных историй произошла при разговоре с нашими коллегами по обработке данных: после того как мы запустили SQL Server под Linux, один из Технических парней просто упал со стула. Увидев то, что SQL Server работает под Linux, он и все остальные присутствующие были просто сражены.
К нашему удивлению, нанять команду в этот проект оказалось не простой задачей. Мы обнаружили, что большинство инженеров по своей природе оказались борцами за чистоту нравов. Потребовался нетривиальный объём усилий чтобы убедить ключевых инженеров в том что наш подход зазвучит. Нам потребовалось около шести месяцев чтобы собрать основную команду из шести инженеров: Евгения Бирюкова, Джорджа Рейни, Майкла Нельсона, Скотта Конерсмана, Брайана Джанфоркаро и Роберта Дорра. Найм этих инженеров в наш проект оказался самым решающим моментом в истории всего проекта. Если бы кто- то из этих центровых парней не присоединился или покинул бы команду, к нас бы имелся практически нулевой шанс на успех. Даже сейчас я всё ещё верю, что нам повезло, очень повезло, так как все эти инженеры оказались в нужное время включившимися в наш проект.
Далее большая часть нашего успеха была достигнута от инженеров, исполнительных директоров, руководителей программ и прочих лиц, которые были прямо или косвенно связаны с нашим проектом. Во многих случаях люди даже не осознавали оказываемую нам поддержку. Когда в конце 2015 года у нас появился новый Вице президент корпорации, он стал гигантским сторонником проекта и помог нам ускорить процесс утверждения с тем, чтобы мы смогли достаточно рано в марте 2016 года сделать публичное объявление на мероприятии по управлению данных. У нас были парни, которые попробовали наше решение и стали нашими проповедниками во всей компании. Значительно помогло открытое управление проектом. К моменту публичного объявления у нас было около трёхсот человек по всей компании, которые подписались на наш перечень технических рассылок. Как можно догадаться, проект был в рамках строгого NDA. Излишне говорить, что у нас не было утечек.
Говорится, что движение всё, конечная цель ничто. Полагаю, что я соглашусь. Это было забавное путешествие. Лично мне немного грустно что всё закончилось. В то же время, когда я оглядываюсь назад, мне становится страшно как много вещей могло пойти не так. Нам очень повезло в нашем путешествии. Мы также шутили относительно своей конечной цели. Теперь администраторы, разработчики и энтузиасты SQL Server - счастливчики. Мы расширили ваш мир. Вы получили настоящий SQL Server поверх Linux, который вы все так любите. Мы, команда инженеров, верим что вы будете любить его и наслаждаться им так же как и мы.
В этой книге Боб Ворд знакомит вас с внутренним представлением о том как мы построили SQL Server поверх Linux и об основных функциях настройки, T-SQL, разработки, производительности, безопасности и высокой доступности. Боб сделал нечто уникальное. Он является автором книги, которая понравится как пользователю SQL Server, так и разработчику Linux, который находится в поиске новой платформы базы данных. Вам также понравятся те закулисные истории, о которые рассказывает Боб и которые охватывают 25- летнюю историю данного продукта. В этой книге также рассказывается о некоторых замечательных инструментах, которые мы создавали внутри и снаружи SQL Server за долгие годы и о многих, над которыми я работал лично. И мне нравится, что Боб смог рассказать о том как перейти на SQL Server, причём даже с PotgreSQL, а также охватить в своей книге очень важную тему контейнеров. Я знаком с Бобом почти 20 лет с тех пор, как начал заниматься разработкой SQL, а он занимался технической поддержкой. Мы вместе провели множество сеансов отладки для клиентов, поэтому я знаком с его знаниями в области SQL Server. Мне также нравится как он может обсуждать очень технические темы и общаться при этом со всеми так, чтобы всякий мог с этим разобраться. Я полагаю, что вы обнаружите в этой книге почти всё что требуется знать относительно SQL Server поверх Linux и контейнеров.
Слава Окс
Microsoft
Вы видели фильм Самолёты, поезда и автомобили? Это классическая комедия и она достаточно объемлюще суммирует путешествие автора данной книги. Фрагменты этой книги писались при самолётных перелётах по всему миру, в подземке Лондона и в автомобильных поездках взад и вперёд между Эдмондом, Оклахомой и Техасом пока мы с супругой этой весной ездили посмотреть как наш сын играет в бейсбол на последнем году учёбы в колледже. Эти страницы моей книги путешествовали по всей территории Соединённых Штатов и Европы, включая Сиэтл, Вашингтон округ Колумбия, Орландо, Саннивейл, Лондон, Сент-Эндрюс Шотландия, Лас-Вегас, Уэйко, Техас, Эдмонд, Оклахома, Сан-Франциско, мой офис в Ирвинге, Штат Техас, а также границы моего дома в Норт-Ричленд-Хиллз, штат Техас. Создание книги во время путешествий сделало её более приятной и добавляло ей ценность. Например, я узнал некоторые особенности Red Hat Enterprise Linux во время участия в саммите Red Hat Summit в мае 2018 года в Сан Франциско.
Эта книга предназначена для разработчиков, администраторов баз данных и ИТ- специалистов, которые интересуются изучением SQL Server в Linux. Я принял большое решение когда составил план и предложение Apress относительно этой книги: я решил написать эту книгу не только для специалиста по SQL Server, который знает SQL Server в Windows, но также и для разработчика или ИТ- специалиста, который знаком с Linux, но совсем не знает SQL Server. Это был непростой выбор, потому что как одному автору написать отдельную книгу о SQL Server, в то время как имелись прочие книги, которые пишут только об отдельных сторонах SQL Server? Я решил сосредоточиться на наиболее важных вопросах применения, разработки и управления SQL Server, основываясь на собственном 25- летнем опыте работы с этим продуктом, включая основные различия между SQL Server в Windows и Linux.
Эта книга представила мне также возможность поделиться некоторыми интересными историями на протяжении своего более чем 25- летнего периода поддержки и работы с SQL Server, включая ссылки на прошлых и настоящих коллег по Microsoft. Ирония состоит в том, что я наконец решил написать книгу на 25- летний юбилей SQL Server для Windows NT, но написать её для SQL Server для Linux. Моим багажом до Microsoft была разработка для UNIX, поэтому для меня было существенно что я вновь познал ядро и оболочку Linux.
Вне зависимости от того как вы решите читать данную книгу, я бы рекомендовал вам начинать чтение с Главы 1. В этой главе я пишу об истории внедрения SQL Server поверх Linux и о том почему мы в Microsoft предприняли такой выбор. В Главе 1 я также предоставлю вам некоторые интересные сведения об архитектуре, которая является одним из самых инновационных проектов, которые я встречал на протяжении своей карьеры в Microsoft. Затем вы сможете выбирать на каких именно главах пожелаете сосредоточиться. Я скажу, что написал книгу с тем намерением, чтобы вы читали каждую главу по порядку, так как в некоторых главах я делаю ссылки на темы из предыдущих глав. Тем не менее, весьма возможно читать каждую главу как некую отдельную тему. Некоторые главы продолжительнее прочих, так как я чувствовал, что определённые темы заслуживают более подробной информации (или я просто ничего не мог с собой поделать). Хотя в этой книге имеется одиннадцать глав, эту книгу можно разбить на три раздела:
-
Самая сердцевина SQL Server с инструментарием (я ввёл инструменты первыми, поскольку затем вы будете уже знакомы с инструментами в последующих главах), производительность, безопасность, HADR и управление/ мониторинг в Главах с 5 по 9.
-
Окончательные темы, содержащие миграцию и контейнеры, завершают данную книгу с Главами 10 и 11. А поскольку наша команда работала над следующим выпуском SQL Server, пока я писал данную книгу, я включил короткий эпилог о будущем.
Я также большой сторонник предоставления примеров, сценариев и экранных снимков. Я бы хотел чтобы вы увидели то, что видел я сам когда я исполнял эти сценарии примеров. Все эти сценарии и примеры из данной книги можно отыскать в репозитории GitHub, натроенным Apress на основной странице самой книги, которую можно разыскать на www.apress.com/9781484241271. Сообщайте мне, пожалуйста, обо всех проблемах с примерами на этом сайте. Я также побуждаю вас отслеживать мой репозиторий GitHub. Я всегда выставляю примеры, включая демонстрации, которые я применяю в различных мероприятиях и я также выставил здесь и примеры из данной книги. Другой репозиторий GitHub является набором лаборатории самообучения Вин Ю и я том встроен. Моя цель заставить и других в Microsoft и сообществе внести свой вклад в это. Другими хорошими ресурсами для следования им является блог, который мы пишем с Бобом Дором. Мы пытаемся выбирать темы, о которых больше никто не пишет для SQL Server. Наконец, вы можете добавить себе в закладки новый канал SQLServer на YuoTube. Вы также обнаружите множество URL и ссылок в самой книге. Когда я исследовал некую тему или применял особый набор документации, я добавлял эту ссылку, чтобы ви имели возможность углубиться в подробности того, что невозможно охватить в данной книге.
Эта книга была плодом любви и не только отражает мои знания относительно SQL Server в Linux, но и содержит интересные сведения об областях SQL Server, о которых могут даже не знать члены сообщества SQL Server. Моя надежда и моё намерение в том, что вы сможете применять SQL Server поверх Linux новыми и интересными способами.
Боб Ворд
Норт Ричленд Хиллз, Техас
август 2018
- О книге
- Глава 1. Почему SQL Server поверх Linux?
- Глава 2. Установка и настройка
- Глава 3. Построение базы данных и основы T-SQL
- Глава 4. Построение некого приложения и расширенные возможности T-SQL
- Глава 5. Инструменты SQL Server
- Глава 6. Возможности производительности
- Глава 7. Безопасность в SQL Server
- Глава 8. Высокая доступность и восстановление после сбоев SQL Server
- Глава 9. Управление и мониторинг SQL Server
- Глава 10. Миграция SQL Server в Linux
- Глава 11. SQL Server и контейнеры
- Глава 12. Эпилог
- Указатель