Azure SQL или SQL-сервер: что вам подходит?

Опубликовано: 3 Марта, 2023
Azure SQL или SQL-сервер: что вам подходит?

В течение последних нескольких лет Microsoft уделяла больше внимания облачным вычислениям и хранению данных, стремясь занять значительную долю рынка на этом конкурентном и прибыльном рынке. С этой целью компания разработала множество продуктов, предназначенных для облака, и одним из таких продуктов является Azure SQL.

Azure SQL — это облачная служба, построенная по аналогии с SQL Server, поэтому многие функции у нее схожи с локальным SQL Server.

Давайте подробно рассмотрим, как эти две системы баз данных сравниваются друг с другом, и какая из них лучше в разных ситуациях.

Различия между SQL Server и Azure SQL

Изображение 406
Поскольку Azure SQL основан на SQL Server, они имеют много общего по функциональности и совместимости. Но это не значит, что они одинаковы. На самом деле, вопреки тому, что многие думают, Azure SQL не совсем облачная версия SQL Server, потому что между ними есть много фундаментальных различий.

Прежде чем перейти к точным различиям, необходимо понять фундаментальный аспект. В SQL Server базы данных являются единственным объектом на сервере базы данных, но в SQL Azure одна база данных может размещать базы данных от разных клиентов. Другими словами, Azure SQL является многопользовательским и использует свои физические ресурсы совместно со всеми клиентами, использующими эту службу.

Теперь, когда мы поняли эту принципиальную разницу, давайте перейдем к другим.

Архитектура

Azure SQL разработан таким образом, чтобы разработчики SQL могли легко использовать его для связи и проверки подлинности. Вот почему нет большой разницы с точки зрения программирования. Во многих случаях вам придется просто изменить значение параметра в строке подключения, чтобы получить доступ к Azure SQL. Это действительно так просто.

Тем не менее, есть большая разница в общении. В SQL Server ваше приложение взаимодействует напрямую с сервером через вашу локальную сеть и использует протокол Tabular Data Stream (TDS) через TCP/IP или HTTP. Кроме того, он может обмениваться данными через любой настраиваемый порт и не требует безопасности транспорта.

Но в SQL Azure ваше приложение должно сделать явный вызов, предпочтительно через брандмауэр вашей сети, и этот вызов может достичь шлюза Azure только через Интернет. Таким образом, Azure SQL использует для связи только протокол TCP/IP.

На шлюзе есть еще один брандмауэр, называемый брандмауэром SQL Azure, который разрешает доступ только тем IP-адресам, которые вы явно определили. После прохождения этого брандмауэра ваш вызов устанавливает соединение с серверным узлом данных, используя шлюз в качестве прокси-сервера.

В довершение всего, все коммуникации происходят только через SSL и только через порт 1433.

Если вы сравните их, вы узнаете, что Azure SQL имеет более сложную архитектуру, потому что он принимает соединения через Интернет, а также обслуживает несколько клиентов.

Язык определения данных

Изображение 407
Язык определения данных, или сокращенно DDL, представляет собой синтаксис, используемый для создания и изменения структуры объектов базы данных.

Azure SQL не поддерживает определенные функции из-за своей архитектуры и отсутствия доступа к базовой аппаратной платформе.

Обе эти базы данных различаются следующим образом:

Общеязыковая среда выполнения

SQL Azure не поддерживает общеязыковую среду выполнения (CLR). Это означает, что системные представления, хранимые процедуры, триггеры и определяемые пользователем функции недоступны в Azure. Это ограничение связано с многопользовательской природой Azure. Он направлен на защиту одного пользователя от случайного или намеренного использования чужих объектов CLR на том же сервере.

Расширенные хранимые процедуры и секционирование таблиц

Расширенные хранимые процедуры — это процедуры, хранящиеся в библиотеках DLL. Эти хранимые процедуры, написанные на языках C или C++, используют API Open Data Services для получения параметров и возврата результатов.

Разделение таблиц — это еще одна функция SQL Server, которая распределяет данные таблицы или индекса по нескольким файловым группам в одной базе данных для повышения производительности.

SQL Azure не поддерживает обе эти функции.

Кластерные индексы

Кластерные индексы изменяют порядок хранения записей в физической базе данных. Это означает, что одна таблица может иметь только один кластеризованный индекс. В SQL-сервере наличие кластеризованного индекса необязательно.

В SQL Azure все таблицы должны иметь кластеризованный индекс. В противном случае операция INSERT завершится ошибкой. Опять же, это сводится к архитектуре Azure и отсутствию поддержки таблиц кучи.

Если вам когда-нибудь понадобится перенести данные с SQL Server на SQL Azure, запланируйте создание кластерных индексов для таблиц, в которых их нет.

Типы данных

SQL Azure поддерживает все типы данных, поддерживаемые SQL Server, включая специализированные, такие как типы пространственных данных. Однако Azure не поддерживает индексацию XML и типизированный XML.

Зеркальное отображение базы данных и отказоустойчивая кластеризация

SQL Azure не поддерживает зеркальное отображение базы данных и отказоустойчивую кластеризацию. Если вам интересно, почему, это потому, что SQL Azure построен на платформе Windows Azure, которая обеспечивает высокую доступность! Таким образом, каждая пользовательская база данных реплицируется два раза на двух разных узлах. Когда основной узел выйдет из строя, одна из двух реплик вступит во владение. Вот почему ему не нужна явная отказоустойчивая кластеризация, как в SQL Server.

Язык манипулирования данными

Язык обработки данных (DML) — это язык, используемый для выполнения основных операций CRUD (создание, обновление и удаление) в любом приложении.

SQL Azure не поддерживает определенные команды CRUD, доступные на сервере SQL, а именно:

  • MAXDOP всегда 1
  • ЗАМОК
  • УДАЛЕННЫЙ
  • Нет поддержки полнотекстового поиска с использованием CONTAINS и FREETEXT.
  • Не поддерживает МАССОВУЮ ВСТАВКУ
  • Нет поддержки функций набора ROW, таких как CONTAINSTABLE, FREETEXTTABLE, OPENQUERY и OPENXML.

Развертывание

Поскольку SQL Azure — это логический, а не физический объект, архитектура развертывания отличается от SQL Server. В этой облачной базе данных есть три объекта — подписка, сервер и база данных.

  • Подписка — это ваша платформа Windows Azure и службы, которые являются ее частью. Этот объект определяет контекст для выставления счетов.
  • Сервер означает логическую группу баз данных, которые имеют общий центр обработки данных.
  • База данных — это логическое представление базы данных, которая существует как раздел в базе данных SQL-сервера.

Неподдерживаемые функции

Также существует множество функций SQL-сервера, которые не поддерживаются SQL Azure, а именно:

  • Услуги мастер-данных
  • Присоединение базы данных
  • Изменить сбор данных
  • Аудит данных
  • Губернатор ресурсов
  • Служба качества данных (DQS)
  • Моментальные снимки базы данных
  • Сжатие данных
  • Браузер SQL-сервера
  • Распределенные транзакции
  • Расширенные хранимые процедуры
  • Файловый поток
  • Минимальное ведение журнала при массовом импорте
  • полибаза
  • Управление на основе политик
  • Семантический поиск
  • Службы отчетов SQL-сервера
  • Флаги трассировки

Из приведенного выше обсуждения становится ясно, что SQL Azure является подмножеством SQL Server и имеет множество ограничений из-за своей архитектуры.

Так зачем же кому-то использовать его вместо полнофункционального SQL Server?

Гораздо больше, чем база данных

Изображение 408
Microsoft возлагает большие надежды на Azure в целом и на SQL Azure в частности. Они хотят создать не просто облачную базу данных, а инфраструктуру для данных петабайтного масштаба. Это означает, что SQL Azure предназначен не только для сегодняшнего дня, но и для будущего, когда облако станет всепроникающим.

Итак, если вы планируете инфраструктуру на долгосрочную перспективу, SQL Azure — хороший выбор.

Управление и администрирование простое

Если вы использовали SQL Server, вы уже знаете, как сложно его настроить и администрировать. Распределение баз данных и работа с физическими системами — это, по меньшей мере, хлопоты.

Когда эту работу выполняет кто-то другой, вы можете сосредоточиться на другой продуктивной работе, и это намного меньше головной боли для вас.

Высокая доступность

Еще одной важной причиной использования SQL Azure является его высокая доступность. Платформа Azure в целом славится этим аспектом. Поскольку SQL Azure построен на его основе, гарантируется высокая доступность.

Непрерывность бизнеса

Azure SQL периодически автоматически выполняет резервное копирование базы данных и журнала транзакций в рамках своей стратегии обеспечения непрерывности бизнеса. Он использует геоизбыточность с доступом для чтения (RA-GRS) для обеспечения геоизбыточности. Этот вариант резервного копирования обеспечивает надежность в разных регионах, поэтому не может быть и речи о потере данных.

Кроме того, вы можете восстановить базу данных в любой момент времени в случае случайного удаления. Во время региональных сбоев вы также можете восстановить базу данных из другого региона. Простота резервного копирования и восстановления — еще одна причина использовать Azure SQL.

Легкая масштабируемость

Microsoft предприняла значительные усилия, чтобы сделать SQL Azure привлекательным как для малого, так и для крупного бизнеса. Они создали его таким образом, что архитектуру можно масштабировать для удовлетворения различных потребностей бизнеса.

Кроме того, структура ценообразования основана на использовании, поэтому предприятия могут выбирать уровень использования и платить соответственно.

Кроме того, приложения, написанные для любой базы данных, можно масштабировать с помощью SQL Azure, поскольку Microsoft предоставляет инфраструктуру федераций, чтобы сделать этот процесс масштабирования менее значимым для пользователей.

Это не означает, что SQL Azure идеален во всех ситуациях. Многие функции SQL-сервера не реализованы в этой облачной версии, и на то есть веские причины. Итак, если эти функции важны для вас, то SQL Server — ваш лучший выбор.

Итак, теперь вы знаете: SQL Azure — это облачная служба базы данных, которая является подмножеством SQL-сервера. Различия в архитектуре обеих этих баз данных делают их идеальными для различных сценариев и настроек.

Как пользователь, выберите SQL Azure, если вам нужна высокодоступная и масштабируемая база данных, и вы не планируете использовать все расширенные функции SQL-сервера. С другой стороны, если для вашей организации необходим огромный набор функций SQL Server, обязательно выберите полную версию.