Рассказ об основных возможностях и новшествах в СУБД Microsoft SQL Server 2019. Повествование ведет Боб Уорд (Bob Ward) – главный архитектор технической группы Microsoft Azure Data SQL Server, которая ведет разработку всех версий SQL Server. Боб проработал в Microsoft более 26 лет; он участвовал в выпуске каждой версии SQL Server, начиная с версии 1.1, поставляемой с OS/2, и заканчивая SQL Server 2019, включая Azure.
В июле 2017 года я регулярно посещал Редмонд (штат Вашингтон) как член команды разработчиков SQL Server. Я живу в Норт Ричленд Хиллз (в штате Техас), и современные технологии позволяют мне выполнять большую часть своей работы удаленно, вне стен офиса, где собрана основная часть команды SQL Engineering. Но я все еще немного приверженец «старой школы» и считаю, что в определенных случаях ничто не сравнится с личным присутствием, когда люди собираются вместе за работой. К июлю 2017 года я проработал в команде SQL Engineering более года, уделяя основное внимание SQL Server 2016 (пример моей работы над SQL Server 2016 можно найти в интернете по ссылке: https://channel9.msdn.com/Events/Ignite/2016/BRK3043-TS).
До этого времени я был членом знаменитой команды Tiger, но в рамках моего визита в 2017 году меня попросили взять на себя новые задачи, чтобы сосредоточиться на предстоящем выпуске SQL Server 2017. В мои задачи входил SQL Server на Linux, что в конечном итоге привело к написанию моей первой книги, Pro SQL Server on Linux («SQL Server на Linux для профессионалов»). Поэтому во время моего визита я начал встречаться и беседовать с различными членами команды об SQL Server 2017 - о повышении производительности, общем наборе новых функций и технических подробностях работы SQL Server в Linux и о контейнерах. Одним из людей, с которыми я говорил на той неделе, был Слава Окс (Slava Oks). Слава - ведущий менеджер по разработке SQL Server и один из изобретателей SQL Server для Linux. Он написал предисловие для книги Pro SQL Server on Linux («SQL Server на Linux для профессионалов»), и в этой статье рассказывается об истории его участия в проекте. В то время Слава любил приходить в офис рано; когда я нахожусь в Редмонде, я тоже пытаюсь работать в «техасское время» - а это значит, что я тоже прихожу очень рано.
Поэтому мы часто встречались за кофе тогда, когда большинство других разработчиков еще не добирались до офиса, в здании 16 (хотя сейчас наша команда работает в здании 43). Однажды утром, когда мы со Славой говорили об SQL Server 2017, он спросил меня: «Я рассказывал вам о наших планах относительно следующей версии SQL Server, которая выйдет после SQL Server 2017?» Я, конечно, сделал вид, что помню об этом: «Да, Слава, я слышал об этом, но не знаю подробностей». Затем он пригласил меня прийти на встречу на следующий день, где он объяснил многим из нашей команды инженеров план проекта. Я провел целый год, сосредоточившись на SQL Server 2016, после чего мне поручили погрузиться в SQL Server 2017 и Linux, а теперь Слава хотел, чтобы я узнал о версии, следующей после той, которая пока еще не была выпущена? Конечно, я не собирался отказывать ему, потому что - ну, это Слава Окс. Это может прозвучать так, будто Слава - какой-то страшный человек, однако он один из самых приятных людей, которых я когда-либо знал в Microsoft.
Поэтому когда я начинал собирать информацию об SQL Server 2017, я пошел по такому пути: я собирался узнать, что мы делаем для будущей версии SQL Server с кодовым названием Проект SQL Server Сиэтл.
Проект «Сиэтл»
На встрече со Славой на следующий день я быстро узнал, что за несколько часов мы приступили к одному из самых амбициозных усовершенствований SQL Server, которые я когда-либо наблюдал за всю свою карьеру. Я говорю это, уже зная, что мы выводим на рынок SQL Server под Linux, что ранее считалось невозможным.
Слава и команда проекта выбрали для проекта кодовое название «Сиэтл», потому что в качестве кодового названия SQL Server 2017 использовалось «Хельсинки», и команда и искала новое наименование города для кодового названия проекта. По иронии судьбы, никто в Microsoft раньше не использовал название «Сиэтл», поэтому оно быстро прижилось. Я спросил Славу, когда он впервые начал планировать проект «Сиэтл». Я был поражен, услышав ответ: в январе 2017 года. Тот факт, что такие люди, как Слава, Конор Каннингем (Conor Cunningham) и Трэвис Райт (Travis Wright), планировали проект «Сиэтл», работая над завершением SQL Server 2017 на Linux, стал свидетельством их преданности команде, их стремления удерживать SQL Server на позиции лидера инноваций в отрасли баз данных.
Трудно было поверить, что мы могли так быстро запланировать нечто большее, после того как предоставили так много полезных и инновационных функций в SQL Server 2016 и SQL Server 2017.
В SQL Server 2016 мы добавили новые возможности диагностики производительности с помощью Query Store, а именно новые функции для разработчиков, такие как временные таблицы и интеграция c JSON. Мы повысили безопасность работы благодаря технологии Always Encrypted, динамическому маскированию данных и защите на уровне строк. И мы представили две новые инновационные возможности, выходящие за пределы «обычных» функций для реляционной системы управления базами данных. Одной из них была интеграция языка R для моделей машинного обучения. Второй была интеграция с системами Hadoop при помощи Polybase (что в итоге приведет к чему-то большему в 2019 году; однако я забегаю вперед). Создание возможностей для включения новых сценариев, таких как машинное обучение и большие данные, привело меня и других сотрудников Microsoft к мысли о том, что SQL Server - уже не просто механизм управления реляционными базами данных, а платформа данных.
Однако, чтобы создать современную и полнофункциональную платформу данных, нам нужно было расширять возможности приложений в системах, отличных от Windows Server. Это привело к появлению в SQL Server 2017 поддержки Linux и Docker-контейнеров. Запуск на Linux и использование контейнеров стали очень большим шагом вперед для Microsoft, но SQL Server 2017 также включал другие возможности, такие как адаптивная обработка запросов (Adaptive Query Processing), автоматическая настройка, графовая база данных, группы доступности вне кластеров и интеграция с Python, в дополнение к поддержке языка R для служб машинного обучения.
Учитывая все эти новые возможности, как мы можем за короткий период времени спланировать и создать что-то более новое, замечательное и интересное, чем SQL Server 2016 и 2017? Я задал себе этот вопрос, внимательно слушая коллег во время моей первой встречи с командой проекта «Сиэтл». В первые несколько минут меня познакомят с идеей, которая, когда ее позже объявят общественности, будет считаться довольно радикальной. И это новшество было «краеугольным камнем» проекта «Сиэтл», который имеет собственный код проекта: Aris.
Проект Aris
В январе 2017 года Рохан Кумар, корпоративный вице-президент Azure Data, поставил перед Славой и руководством команды разработчиков SQL Server задачу разобраться, как интегрировать SQL Server с большими данными. Большие данные - это термин, широко используемый в отрасли и относящийся к системе, которая может обрабатывать большие объемы данных, обычно с использованием распределенной масштабируемой вычислительной платформы. Мне лично нравится определение термина «большие данные», сформулированное моим коллегой Баком Вуди (Buck Woody): «любые данные, которые вы не можете обработать в нужное время с помощью имеющихся у вас технологий». В течение многих лет в качестве системы обработки больших данных наиболее часто выбиралась платформа Hadoop. Итак, в течение нескольких месяцев весной и летом 2017 года команда обращалась к Трэвису Райту (Travis Wright) за консультациями о том, как воплотить в жизнь идею интеграции больших данных. Летом 2017 года у нашей команды Azure Data было несколько проектов с кодовыми названиями «Polaris», «Socrates» (Сократ) и «Plato» (Платон). Я спросил Славу: как ты выбрал кодовое название для проекта - Aris? И получил ответ: Сократ был наставником известного греческого философа Платона, а учеником Платона был Аристотель. Учитывая, что Aris - это часть имени «Аристотель», а также оно входит в состав кодового названия проекта «Polaris», это новое название, Aris, нашло отклик у всех членов команды и у нашего руководства.
Поскольку интеграция с большими данными подразумевает некоторое отношение к Hadoop, Трэвис провел несколько встреч с командой, которая представила решение Polybase для SQL Server 2016 и хранилища данных Azure. Идея Polybase заключалась в том, чтобы позволить пользователям SQL Server запрашивать (и принимать) данные из системы Hadoop, используя привычный язык запросов T-SQL, хорошо знакомый нашим пользователям. Кроме того, вместо того чтобы строить простую систему извлечения данных, Polybase могла бы использовать возможности распределенных вычислений, которые существуют в Azure Data Warehouse и Analytics Platform System (ранее известной как Parallel Data Warehouse), для сокращения вычислений и распределенной обработки запросов, чтобы достигнуть увеличения производительности за счет масштабирования при работе с большими наборами данных в целевой системе Hadoop. Я никогда не видел, чтобы Polybase «взлетела» в SQL Server 2016 и 2017, поскольку интеграция систем Big Data Hadoop с реляционными системами, такими как SQL Server, была непростой задачей. Polybase требует значительных усилий по установке и настройке, а ее модель политики безопасности отличается от подходов к защите данных, используемых в системах Hadoop и SQL Server. Кроме того, реализация сокращенных («выталкивающих») вычислений опиралась на концепцию MapReduce, для чего требовалось установить Java на том же компьютере, на котором были размещены службы SQL Server и Polybase. Тем не менее архитектура и концепции интегрированных систем SQL Server и Big Data были пригодны для создания чего-то большего (включая расширение T-SQL под названием EXTERNAL TABLE
). Если бы нам удалось упростить историю развертывания и настройки Polybase и добавить больше поддерживаемых источников данных, то такое решение могло бы стать более популярным в отрасли. Кроме того, Трэвис очень быстро понял, что если вы хотите, чтобы вас серьезно воспринимали в мире обработки больших данных, вам нужно рассмотреть другую технологию под названием Spark.
Вооружившись этими знаниями, Слава, Трэвис и основная группа членов команды, создавшей SQL Server для Linux, поставили перед собой задачу создать прототип интеграции SQL Server с большими данными, включая Spark. Они устроили многодневную встречу в большом конференц-зале и назвали ее «Хакатон Aris». Членами команды хакатона были Слава Окс (Slava Oks), Трэвис Райт (Travis Wright), Скотт Конерсманн (Scott Konersmann), Стюарт Падли (Stuart Padley), Майкл Нельсон (Michael Nelson), Пранджал Гупта (Pranjal Gupta), Джарупат Джисарохито (Jarupat Jisarojito), Вейюн Хуан (Weiyun Huang), Джордж Рейня (George Reynya), Дэвид Крайз (David Kryze), Умачандар Джаячандран (Umachandar Jayachandran) из Калифорнийского университета и Сахадж Сайни (Sahaj Saini). К моменту завершения хакатона у них был рабочий кластер, который объединил существующую в SQL Server функциональность Polybase с технологией Spark. На рис. 1.1 показана примерная схема кластера, созданного этой командой.
Рис. 1. Первый кластер Aris
В своем прототипе они создали кластер Hadoop, включающий компоненты для Apache Spark и HDFS, а также SQL Server Polybase. Они использовали Spark для потоковой передачи данных в узлы данных, а затем применили Polybase для объединения данных на главном узле SQL Server с данными, поступающими со Spark в HDFS. Идея прототипа состояла в том, чтобы доказать, что они могут интегрировать Spark, Hadoop и SQL Server.
Примерно в это же время Трэвис разговаривал с инженерами, которые недавно присоединились к команде. Это были сотрудники из компании Metanautix, которую приобрела Microsoft. Благодаря этому приобретению у нашей команды была технология для подключения к ряду источников данных, в том числе ORACLE, SQL Server, Teradata и MongoDB, через ODBC. Команда подумала, что если мы сможем использовать эту технологию в проекте Aris, то в результате получим довольно интересный пример виртуализации данных. SQL Server теперь может быть центром доступа к данным на разных платформах данных и в разных системах без необходимости перемещения данных на SQL Server (с помощью таких методов, как извлечение, фильтрация и загрузка данных (Extract, Transform, and Load, ETL)).
Прежде чем мы смогли предоставить программное обеспечение, которое пользователи могли бы попробовать и использовать, нам нужно было выбрать платформу для запуска всех этих компонентов. Нам была нужна платформа, которая позволила бы легко развернуть все программное обеспечение, включая Polybase, Hadoop и Spark; обеспечить управляемость и безопасность, гибкое масштабирование и высокую доступность. Казалось логичным использовать контейнеры, учитывая простоту их развертывания, и в SQL Server 2017 мы реализовали поддержку SQL Server в контейнерах. Следующим шагом был выбор Kubernetes в качестве платформы для создания кластера, в котором работают эти контейнеры. Kubernetes быстро приобретал популярность как платформа, поддерживающая распределенные вычисления и масштабируемую производительность. Мы знали, что Linux является предпочтительной ОС для работы с системами Kubernetes и Hadoop, и, поскольку SQL Server уже работает на Linux, он хорошо подходит для создания такой платформы.
Итак, в конце 2017 года наша команда приступила к созданию кластера Aris, который позволил бы реализовать концепцию виртуализации данных и при этом интегрироваться с технологиями больших данных, такими как Spark и HDFS. С самого начала наша команда решила, что все это нужно поставлять как единое решение. Это означает, что если вы приобретаете SQL Server, мы устанавливаем все эти компоненты как часть лицензии (не знаю, будет ли это отдельным видом лицензии, но все это будет включено в SQL Server). Конечный продукт, который вы видите сейчас, -SQL Server 2019 и то, что мы называем кластерами больших данных (Big Data Clusters, BDC), - включает в себя гораздо больше, чем ранние прототипы Aris, но идея и концепция, положенные в их основу, одинаковы: предоставить простую в развертывании платформу виртуализации данных, обеспечивающую масштабируемую производительность, безопасность и управляемость.
«Сиэтл» становится SQL Server 2019
В то время как концепция кластеров Aris и больших данных была масштабной, инновационной и, честно говоря, немного пугающей, каждая новая версия SQL Server включала усовершенствования в нескольких областях. Это производительность, безопасность и доступность, три области, которые Конор Каннингем (Conor Cunningham) часто называет «жизненно важными аспектами SQL Server». Наша команда также включила возможность работы с SQL Server на Linux начиная с версии SQL Server 2017. Несмотря на то что первая версия SQL Server для Linux была впечатляющей, оставалось еще несколько возможностей, имеющихся в версии SQL Server для Windows, которые еще не были реализованы для Linux и которые также было необходимо добавить в версию для Linux. Мы также знали, что у контейнеров большое будущее - в том смысле, что они являются перспективным направлением для развертывания и запуска приложений, и SQL Server - не исключение из этого правила. Таким образом, в этом направлении необходимо было проделать определенную работу, включая исследование новых сценариев с кластерами Kubernetes (а не только решение, позволяющее создавать кластер больших данных).
В такой продукт, как SQL Server, вносят свой вклад множество команд разработчиков. Наша команда Enterprise (также известная как Tiger Team) получила информацию о множестве новых возможностей, которые они хотели видеть в новой версии и представляющих реальную ценность для клиента (потому что именно это и является основой разработки новых решений!). Наши друзья, которые изобретают новые возможности для повышения производительности, доступности и безопасности Azure SQL Database, хотели бы увидеть плоды своего труда в проекте «Сиэтл», поскольку служба Azure и SQL Server используют одно и то же ядро баз данных. Увидев все это в 2017 году, я смог угадать момент исторического релиза.
Когда закончился 2017 год, мы все были настроены на выпуск следующей версии SQL Server, SQL Server 2018. Я видел в этом смысл. Мы выпустили две версии SQL Server за последние годы, SQL Server 2016 и SQL Server 2017, так почему бы не выпустить SQL Server 2018?
Конор Каннингем (Conor Cunningham), наш архитектор продукта, сказал мне, что благодаря нашему гибкому подходу к разработке мы можем выпускать новую версию SQL Server хоть каждый месяц, если захотим. И мы можем делать это, не снижая качества выпускаемого продукта. Конечно, мы этого не делаем, потому что хотим выпускать новые версии SQL Server, обеспечивающие должный уровень качества и имеющие гораздо большую ценность для наших клиентов, чем предыдущие. Когда мы начали продвигаться вперед в работе над нашим проектом в наступившем 2018 году, нам пришлось решить, хотим ли мы выпустить новую версию в этом году. Посмотрев на те новые возможности, которые мы могли бы включить в эту новую версию, включая кластеры больших данных, весной 2018 года мы приняли решение о выпуске нашей первой предварительной версии SQL Server vNext в 2018 году. (Когда мы не знаем точного названия, которое будет иметь следующая официальная версия, даже если у нас уже есть название проекта, например «Сиэтл», мы называем эту будущую версию «vNext».) И вы, возможно, заметили, что мы часто пытаемся делать объявления о планируемых важных релизах на больших мероприятиях. Если посмотреть на календарь, одним из крупнейших глобальных событий для клиентов Microsoft была и остается конференция Microsoft Ignite (проводимая в 2018 году в Орландо и собравшая около 30 000 человек). Поэтому летом 2018 года наше руководство решило включить предварительную демонстрацию возможностей SQL Server vNext в программу Microsoft Ignite и назвать эту версию SQL Server 2019. Это означает, что мы выпустим версию GA (данная аббревиатура означает «в общем доступе», General Availability) где-то в 2019 календарном году.
Подобный подход разделяли все члены нашей команды. Это дало нам больше возможностей для внедрения кластеров больших данных, а также больше возможностей для «традиционного» SQL Server, в основу которых легли отзывы и опыт клиентов. Моя задача в этом проекте - евангелизация и демонстрации SQL Server 2016 и 2017, чтобы показать нашим клиентам, отрасли и сообществу, что мы действительно создали современную платформу данных в SQL Server 2019.
Модернизация базы данных с помощью SQL Server 2019
На рис. 2 показана основная иллюстрация, с которой я обычно начинаю рассказ про SQL Server 2019. Созданная моей коллегой в Microsoft, маркетологом Дебби Лайонс (Debbi Lyons) (вы, возможно, видели, как мы с Дебби иногда появлялись вместе, рассказывая про SQL Server), она представляет собой полную картину новой современной платформы данных SQL Server 2019.
Рис. 2. Модернизация средствами SQL Server 2019
Если вы когда-нибудь слышали мои выступления, посвященные SQL Server 2016 или 2017, то, вероятно, заметили, что этот слайд немного похож на слайды, демонстрирующие возможности прошлых версий. Однако в нем имеется несколько ключевых отличий:
- интегрированное решение для виртуализации данных, объединяющее Spark, HDFS и SQL Server новым и инновационным способом (образно говоря, SQL Server «подружили с большими данными»);
- новые возможности использования платформы для наших клиентов, включающие разнообразие вариантов для выбора: Windows, Linux, контейнеры и Kubernetes.
SQL Server продолжает оставаться лидером в отрасли баз данных по производительности и является наименее уязвимой платформой данных за последнее десятилетие. Лицензия SQL Server включает для наших клиентов доступ к службам бизнес-аналитики, таким как Power BI Report Server. Кроме того, благодаря новой службе Azure SQL Database Managed Instance функциональность SQL Server практически не отличается при развертывании как в частном облаке, так и в публичном облаке Azure. Однако, достигнув такого уровня согласованности, мы не останавливаемся на этом. Ваши навыки в области T-SQL применимы как к SQL Server, так и к Azure, а наши инструменты продолжают бесперебойно работать со службами SQL Server и Azure Data.
Еще несколько возможностей, немного обойденных вниманием при обсуждении новых функций, заключаются в том, что SQL Server (и Azure) предоставляет возможность оптимизировать определенные функции для обработки данных в оперативной памяти, что позволяет максимально эффективно использовать вычислительные ресурсы. Эти новые возможности включают оперативную транзакционную обработку данных в оперативной памяти (In-Memory OLTP) и столбцовые индексы (Columnstore Indexes). Все эти функции входят в состав версии SQL Server 2019. На рис. 1.3 представлена более подробная схема основных новых функциональных возможностей, впервые появившихся в SQL Server 2019.
Рис. 3. Основные возможности SQL Server 2019
Я буду использовать эту диаграмму (слева направо, начиная с верхнего левого угла), чтобы выделить основные новые функции SQL Server 2019. Читая про эти новые возможности, имейте в виду, что SQL Server поддерживает Azure SQL Database, а это означает, что многие функции, о которых вы читаете в этой книге, работают точно так же в Azure SQL Database.
Виртуализация данных
Ранее в этой статье мы обсуждали идею виртуализации данных в проекте Aris. SQL Server 2019 является реализацией этого подхода благодаря двум возможностям:
- Polybase в SQL Server 2019.
Я называю эту возможность Polybase ++, потому что мы расширили функциональность Polybase, поставляемую с SQL Server 2016 (дополнительную информацию о Polybase см. по ссылке https://docs.microsoft. com/en-us/sql/relational-databases/polybase/polybase-guide?view=sql-server-2017), чтобы предоставить различные коннекторы к источникам данных, включая Oracle, SQL Server, MongoDB (CosmosDB) и Teradata. Вы можете подключиться к этим источникам данных без установки какого-либо дополнительного клиентского программного обеспечения; встроенные возможности подключения SQL Server к этим источникам данных содержат все, что вам необходимо. Кроме того, вы можете подключиться к другим источникам, таким как SAP HANA, установив собственный драйвер ODBC.
- кластеры больших данных.
Как я уже упоминал, описывая наше видение проекта Aris ранее в этой статье, мы решили создать законченное решение, которое развертывает SQL Server, включающий новые функциональные возможности Polybase, HDFS, Spark, а также другие компоненты для управления, безопасности и доступности.
Производительность
Какую бы версию SQL Server мы ни выпускали, мы всегда работаем над производительностью. Всегда. Однако недостаточно просто сделать так, чтобы ваши запросы выполнялись быстро. Нам нужно продолжать совершенствовать ядро SQL Server, делая его умнее и интеллектуальнее, предоставляя возможности адаптации к вашей рабочей нагрузке, оборудованию и сложным шаблонам запросов. Основные улучшения производительности SQL Server 2019:
- интеллектуальная обработка запросов, которая является усовершенствованной возможностью адаптивной обработки запросов, представленной в SQL Server 2017;
- анализ плана запросов в любом месте и в любое время, когда вам это нужно, с использованием облегченного профилирования запросов, плана последнего исполнения и усовершенствованного хранилища запросов;
- ряд усовершенствований для поддержки баз данных в памяти, включая усовершенствованный ввод-вывод и гибридный буферный пул для постоянной памяти, а также оптимизированную с точки зрения памяти схему базы данных tempdb. Сочетание этих технологий с такими поддерживаемыми функциями, как столбцовые индексы и OLTP в памяти, делает SQL Server 2019 привлекательным решением с точки зрения технологий баз данных в памяти.
Безопасность
SQL Server является не только наименее уязвимой системой управления базами данных в отрасли за последнее десятилетие, но и включает в себя широкий спектр инструментов, отвечающих современным требованиям безопасности любого бизнеса. В SQL Server 2019 к ним относятся следующие улучшения:
- стратегия шифрования, названная Always Encrypted with Secure Enclaves (постоянным шифрованием с защищенными областями).
В SQL Server 2016 впервые была представлена новая комплексная система безопасности для приложений данных под названием постоянное шифрование (Always Encrypted). Хотя эта система обеспечивает шифрование в обычном режиме, в оперативной памяти и во всем периметре сети, у нее существует несколько ограничений, наиболее важное из которых - сложные вычисления. Шифрование, использующее концепцию защищенных областей (Secure Enclaves), поддерживает сложные вычисления, а также приведу другие интересные сценарии из области безопасности;
- классификация данных и встроенный аудит.
Общий регламент по защите данных (General Data Protection Regulation, GDPR) вступил в силу в Европейском союзе (ЕС) в мае 2018 года. С тех пор я общался со многими клиентами из ЕС, а также с компаниями, которые работают с клиентами из ЕС. Наши новые встроенные функции классификации и аудита данных в сочетании с нашими инструментами могут быть очень полезны для сценариев, обеспечивающих соответствие требованиям законодательных актов, как GDPR, так и других, которые могут иметь отношение к вашему бизнесу.
Непрерывная доступность, соответствующая требованиям для систем, критичных к сбоям
Быстрота и безопасность - это еще не все, что требуется от современной платформы данных. Клиентам, выбирающим SQL Server для ведения своего бизнеса, нужна непрерывная доступность как данных, так и работающих с ними приложений. SQL Server 2019 включает в себя новые возможности для удовлетворения требований к доступности, в том числе:
- возобновляемое создание индексов онлайн (Resumable Online Create Index) и кластеризованного онлайн-хранилища столбцовых индексов (Clustered Columnstore Online Create Index). Создание индексов поддерживается благодаря высокой доступности онлайн-индексов;
- улучшение нашей инновационной функции HADR в режиме непрерывной доступности. Поддержка групп, в том числе увеличение количества реплик и перенаправление основного соединения;
- представьте себе мир, в котором откат транзакции происходит немедленно, а время, необходимое для восстановления и сокращения журнала, не зависит от длительных или медленных транзакций. Такие невиданные доселе возможности обеспечивает ускоренное восстановление баз данных (Accelerated Database Recovery).
Современная платформа разработки
Может показаться, что все те новые возможности SQL Server 2019, о которых я рассказывал до сих пор, предназначены только для администраторов баз данных или ИТ-специалистов. Однако это не так. Мы считаем, что разработчики - это ключевая аудитория, которой SQL Server обязан своим успехом, поэтому мы также инвестировали в следующие новые функции:
- в SQL Server 2016 мы представили новую платформу для машинного обучения в базе данных с использованием языка R. В SQL Server 2017 мы усовершенствовали эту модель, добавив поддержку Python. Используя эту же инфраструктуру, мы теперь позволяем разработчикам расширять язык T-SQL с помощью классов Java. Фактически мы создали SDK расширяемости, чтобы другие языки могли быть частью SQL Server;
- мы расширили возможности графовой базы данных, которая впер - вые была представлена в SQL Server 2017, и реализовали новые функции для обеспечения этой новой возможности, такие как ограничения ребер и поддержка MERGE;
- мы хотим, чтобы разработчики использовали типы данных Unicode, поэтому добавили новые представления (т. е. правила для сравнения символов в наборе) UTF-8, которые могут помочь разработчикам управлять данными UTF-8, не увеличивая накладные расходы при работе c типами данных Unicode.
Инвестирование в выбранную вами платформу
Мы запустили SQL Server на Linux в версии SQL Server 2017, но у нас было несколько функций ядра СУБД, которые не вошли в эту версию. Однако мы стремимся к тому, чтобы наши пользователи выбирали операционную систему для запуска SQL Server, не беспокоясь об отсутствии некоторых возможностей в версии для Linux, и в совместимости версий SQL Server для различных операционных систем. Мы расширили возможности версии для Linux в SQL Server 2019, добавив репликацию, отслеживание изменений в базе данных (Change Data Capture, CDC), распределенные транзакции (Distributed Transactions, DTC), машинное обучение и группы Polybase.
Мы также потратили немало сил и средств, чтобы добавить в новую версию контейнеры, включая новый реестр контейнеров, поддержку Red Hat Enterprise Linux (RHEL) и постоянную поддержку Kubernetes, в том числе OpenShift. И хотя это выходит за рамки данной статьи, стоит особо упомянуть, что мы расширили список поддерживаемых аппаратных платформ для SQL Server, когда в мае 2019 года объявили о выпуске предварительной версии с поддержкой процессоров Arm для Azure SQL Database Edge. Дополнительную информацию об Azure SQL Database Edge вы найдете на странице https://azure.microsoft.com/en-us/services/sql-database-edge/.
Остановитесь и рассмотрите все пиктограммы, иллюстрирующие поддерживаемые платформой компоненты и технологии, потому что SQL Server - это не просто выбранная вами платформа. Это платформа, обладающая широкими возможностями в плане совместимости. Вы можете создать резервную копию базы данных на любой из этих платформ и восстановить ее без изменений на любой из этих платформ.
Однако, кроме этих основных точек приложения усилий и вложения средств, в SQL Server 2019 существуют и другие новые возможности, которые стоит упомянуть.
Azure Data Studio
Основным инструментом - графическим интерфейсом пользователя для работы с SQL Server - на протяжении многих лет остается SQL Server Management Studio (SSMS). В прошлом году мы приступили к созданию нового инструмента для исследования и расширенной обработки данных под названием SQL Operations Studio. В сентябре 2018 года мы выпустили его официальную версию и назвали ее Azure Data Studio (ADS).
Azure Data Studio имеет несколько инновационных технологий, включая записные книжки, развертывание кластера больших данных, мастера внешних данных, а также инструменты для поддержки SQL Server, HDFS и других служб данных Azure.
Голос клиента
Имея опыт работы с клиентами, я всегда заинтересован в том, чтобы наша команда инженеров включала в новые версии те функции, которые можно привязать к прямой обратной связи клиентов или к проблемам, с которыми сталкивается служба поддержки нашей команды CSS.
Эта версия, следуя традициям общего подхода к выпуску версий, включает в себя ряд усовершенствований ядра базы данных. Ниже перечислены некоторые из них (однако далеко не все):
- переработанное сообщение об ошибке, связанной с «обрезанием» строк, включающее передачу контекста, который помогает устранить ошибку. Это был № 1 в голосовании клиентов; данное улучшение собрало 1000 голосов;
- новые динамические объекты управления, позволяющие получить представление о внутренней структуре заголовков страниц базы данных (да, вы тоже можете побыть Полом Рэндалом). Они могут помочь в устранении проблем, связанных с блокировкой страниц;
- улучшения масштабируемости в ядре СУБД, включая параллельные обновления PFS, параллельное массовое добавление данных и дополнительные контрольные точки.
Начало работы с SQL Server 2019
Вот некоторые ресурсы, которые помогут вам развернуть и настроить SQL Server 2019 в процессе подготовки к изучению новых функций:
Загрузка SQL Server 2019
Чтобы загрузить и попробовать поработать с SQL Server 2019, перейдите по ссылке.
Развертывание SQL Server 2019
Инструкции по развертыванию SQL Server 2019 для Windows см. по ссылке https://docs.microsoft.com/en-us/sql/database-engine/install-windows/installation-for-sql- server?view=sql-server-ver15.
Инструкции по развертыванию SQL Server 2019 на Linux см. по ссылке https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-overview?view=sql-server-ver15.
Чтобы узнать, как развернуть SQL Server в контейнере, перейдите по ссылке https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql- server-linux-ver15&pivots=cs1-bash.
Миграция на SQL Server 2019
Средства миграции и инструменты для поддержки миграции на SQL Server 2019 с предыдущих версий SQL Server и других баз данных, разработанных сторонними компаниями-разработчиками ПО.
Что нового в SQL Server 2019
Обо всех новых возможностях SQL Server 2019 вы можете узнать, перейдя по ссылке.
Исходный код и базы данных, используемые в книге
Чтобы иметь возможность работать со всеми примерами, приведенными в этом блоге, вам нужно будет клонировать репозиторий GitHub, созданный специально для этой цели, как было упомянуто во введении.
Совет. Для пользователей Windows: обязательно используйте следующий синтаксис git для клонирования репозитория, во избежание проблем со сценариями CRLF для Linux:
git clone --config core.autocrlf=false https://github.com/microsoft/sqlworkshops.git
Кроме того, вам нужно загрузить копии баз данных WideWorldImporters со страницы https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world- importers-v1.0 и WideWorldImportersDW со страницы https://github.com/Microsoft/ sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImportersDW-Full. bak.
SQL Server: материалы для изучения
На сайте http://aka.ms/sqlworkshops вы найдете еще больше бесплатных обучающих курсов, связанных с SQL Server (этот сайт развивает и поддерживает мой друг и коллега Бак Вуди (Buck Woody), один из лучших инструкторов, которых я знаю).
Это SQL Server вашего дедушки?
Наша команда инженеров внедряет инновации со скоростью, невиданной ни для одного другого конкурирующего продукта или платформы данных в отрасли. И нужно признаться: очень интересно изучать новые вещи.
Возможно, следующая цитата из журнала ITProToday лучше всего расскажет об этом: «Я никогда не ожидал, что буду обсуждать возможности новой версии Microsoft SQL Server в том же контексте, что и Linux, Oracle и Apache Spark, но это дивный новый мир. Разработка Microsoft SQL Server продвигается такими темпами, которых нет у конкурентов» (www.itprotoday.com/sql- server/polybase-expansion-big-clusters-are-key-features-new-sql-server-2019).
Я помню, как мой коллега Трэвис Райт (Travis Wright) говорил о SQL Server 2019: «Это не SQL Server вашего дедушки». Это было сказано к тому, что продукт превратился из мощной системы управления реляционными базами данных в современную платформу данных и в настоящее время включает в себя такие технологии, как Spark, HDFS, Notebooks, Polybase, R, Python, Java, Linux, контейнеры и Kubernetes.
Я помню, как разместил эту цитату в Твиттере. Мой коллега Педро Лопес (Pedro Lopes) прочитал ее и сказал, что на самом деле SQL Server 2019 - это «SQL Server вашего дедушки». Так кто же прав? Они оба правы. SQL Server 2019 по-прежнему является системой управления базами данных, которую вы хорошо знаете и любите, - СУБД, обладающей масштабируемой производительностью, встроенными механизмами безопасности, удовлетворяющими требованиям критически важных приложений и систем, и высокой доступностью.