Microsoft Azure SQL Database

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 21:25, 12 декабря 2017.
Microsoft Azure SQL Database
Азур логотип.png
Разработчики: Microsoft
Выпущена: 2010
Состояние разработки: Active
Операционная система: Linux, Microsoft Windows Server, Microsoft Windows
Тип ПО: Реляционная база данных
Веб-сайт azure.microsoft.com/ru-ru/services/sql-database/

База данных Microsoft Azure SQL (ранее SQL Azure, SQL Server Data Services, SQL Services и Windows Azure SQL Database) - это управляемая облачная база данных (SaaS), предоставляемая как часть Microsoft Azure.

Обзор платформы

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

База данных представляет собой базу данных, которая работает на платформе облачных вычислений. Службы управляемых баз данных заботятся о масштабируемости, резервном копировании и высокой доступности базы данных. База данных Azure SQL - это служба управляемых баз данных, которая отличается от AWS RDS, которая является контейнерной службой. База данных Microsoft Azure SQL содержит встроенный интеллект, который изучает шаблоны приложений и адаптируется для максимальной производительности, надежности и защиты данных. Он был первоначально анонсирован в 2009 году и выпущен в 2010 году.

Архитектура Microsoft Azure SQL Database

SQL Database – это разделяемая облачная база данных. В ЦОДах Microsoft установлены серверы SQL Server большой емкости, построенные на основе стандартного оборудования. Каждый SQL Server в ЦОДе содержит несколько различных клиентских баз данных (логические базы), т.е. получается shared режим. Для доступа к данным используется автоматическая балансировка нагрузки и маршрутизация сетевых соединений.

Стоит отметить, что физически или фактически данные сохраняются не в одной базе, а реплицируются. Данные реплицируются в трех базах данных SQL Server, распределенных по трем физическим серверам одного ЦОДа: одна основная и две дополнительные реплики. Все операции чтения и записи выполняются в основной реплике, а любые изменения асинхронно реплицируются на дополнительные реплики. Эти реплики обеспечивают высокую доступность баз данных SQL Database. Большинство ЦОДов Microsoft содержат сотни компьютеров с сотнями экземпляров SQL Server, на которых размещены реплики SQL Database. Крайне низка вероятность того, что основные и дополнительные реплики баз данных SQL Database будут хранится на одних и тех же компьютерах.

Сетевая топология

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

Рис.1.Сетевая топология [Источник 1].

Уровень служб

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

Рис.2.Уровень служб [Источник 2].

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

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

  1. Шлюз в интерфейсном кластере, получивший запрос на новое входящее соединение для передачи потока табличных данных (TDS), может установить соединение с клиентом. Синтаксический анализатор с минимальным набором поддерживаемых функций проверяет допустимость полученной команды для передачи базе данных. Команды типа CREATE DATABASE недопустимы, так как должны обрабатываться прикладным уровнем.
  2. Шлюз выполняет процедуру подтверждения SSL для клиента. Если клиент отказывается использовать протокол SSL, шлюз разрывает соединение. Необходимо обеспечивать полное шифрование трафика. Синтаксический анализатор протокола также содержит средство защиты от атак типа «Отказ в обслуживании», отслеживающее запросы с IP-адресов. Если с IP-адреса или диапазона адресов приходит чрезмерное количество запросов, то последующие попытки соединения с этих адресов будут отклонены.
  3. Указанные пользователем имя сервера и учетные данные для входа должны быть проверены. Проверка на уровне брандмауэра обеспечивает соединение только с IP-адресами из заданных диапазонов.
  4. После проверки сервера основной кластер сопоставляет используемое клиентом имя базы данных с внутренним именем базы данных. Основной кластер — это набор компьютеров, обрабатывающих сведения о сопоставлении. При работе в SQL Database понятие раздел имеет совершенно иной смысл, чем при работе с локальными экземплярами SQL Server. В среде SQL Database раздел является частью базы данных SQL Server в ЦОД, которая сопоставляется с одной базой данных SQL Database. Например, на рисунке каждая база данных содержит три раздела, поскольку в каждой из них размещены по три базы данных SQL Database.
  5. После обнаружения базы данных выполняется проверка подлинности имени пользователя; если проверка завершается ошибкой, соединение разрывается. Шлюз проверяет наличие базы данных, к которой хочет подключиться пользователь.
  6. Новое подключение может быть выполнено после проверки всех параметров соединения.
  7. Новое соединение устанавливается непосредственно между компьютером пользователя и внутренним серверным узлом.
  8. После установления соединения шлюз выступает в качестве прокси-сервера для пакетов, передаваемых между клиентом и платформой обработки данных.

Уровень платформы

Уровень платформы состоит из компьютеров, на которых размещены физические базы данных SQL Server в ЦОД. Эти компьютеры называются узлами данных. На рисунке изображена внутренняя организация узлов данных. Каждый узел данных состоит из одного экземпляра сервера SQL Server. Каждый из этих экземпляров имеет одну пользовательскую базу данных, разбитую на разделы. Каждый раздел содержит одну клиентскую базу данных SQL Database, представленную в виде основной или дополнительной реплики.

Рис.3.Уровень платформы [Источник 3].

База данных SQL Server типового узла данных может содержать до 650 разделов. Эти базы данных, размещенные в ЦОД, управляются так же, как локальные базы данных SQL Server. Разница лишь в том, что регулярное техническое обслуживание и резервное копирование выполняются специалистами центра обработки данных. Все базы данных, размещенные на узле данных, используют один и тот же файл журнала. Это повышает производительность ведения журнала с помощью последовательных групповых операций ввода-вывода. В отличие от локальных баз данных, журналы баз данных SQL Database хранятся в предварительно выделенном и обнуленном дисковом пространстве. Это позволяет избежать пауз записи при автоматическом увеличении размера файлов журнала.

Еще одним отличием управления журналами в центре обработки данных SQL Database является необходимость кворумной фиксации. Это означает, что основная реплика и как минимум одна из дополнительных реплик должны подтвердить факт записи файлов журнала, прежде чем транзакция будет считаться зафиксированной.

На рисунке показано, что каждый из компьютеров узла данных содержит набор процессов, также называемых структурой. Процессы структуры служат для решения следующих задач:

  1. Обнаружение сбоев: контроль доступности основных или дополнительных реплик; если они становятся недоступными, может быть запущен агент реконфигурации.
  2. Агент реконфигурации: управляет повторным созданием основных или дополнительных реплик после сбоя узла.
  3. Определение местоположения диспетчера разделов: обеспечивает отправку сообщений для диспетчера разделов.
  4. Регулирование нагрузки на ядро: препятствует монопольному использованию логическим сервером ресурсов узла или превышению его физических ограничений.
  5. Кольцевая топология: управляет объединенными в логическое кольцо компьютерами кластера; каждый компьютер имеет двух соседей, способных обнаружить его аварийное отключение.

Особенности использования базы данных

Sharding

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

Уровни реализации

Существует несколько уровней реализации,которыми вы можете воспользоваться. Если вам нужен только веб-сайт и база данных, вы можете связать экземпляр SQL Azure с веб-сайтом Azure. Если вам нужна полноценная виртуальная машина (VM), можно получить ее путем использования локально развернутого экземпляра SQL Server в VM вместо SQL Azure.

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

SQL и SQL Database могут быть обновлены с помощью SQLCMD [Источник 4] или SQL Server Management Studio [Источник 5] без необходимости в кодировании.

Автоматический мониторинг и настройка производительности

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

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

Сервисы

В остальных аспектах Microsoft Windows Azure SQL Databases значительно расширяет возможности SQL Server. В состав Windows Azure SQL Databases входят:

  • Windows Azure SQL Databases Data Sync[Источник 6] — облачная служба синхронизации данных, обеспечивающая как однонаправленную, так и двунаправленную синхронизацию. Служба Data Sync позволяет легко обмениваться данными между Windows Azure SQL Databases и локальными базами данных SQL Server, а также между несколькими базами данных Windows Azure SQL Databases. Windows Azure SQL Databases Data Sync использует собственного провайдера данных SqlAzureSync Provider для движка синхронизации Microsoft Sync Frame, написанного специально для Windows Azure SQL Databases. Этот новый провайдер эффективен, снижает барьер вхождения и обеспечивает надежность при синхронизации с Windows Azure SQL Databases, умным образом обрабатывая некоторые специфичные для Windows Azure SQL Databases проблемы мультитенантных систем. Провайдер сокращает количество round trips к серверу с использованием возвращающих табличное значение параметров (TVPs). Кроме этого, когда Windows Azure SQL Databases использует свой механизм throttling для минимизации эффекта от выходящих из-под контроля операций SqlAzureSyncProvider начинает использовать умный алгоритм «back-off algorithm», автоматически уменьшающий размер пакета (batch) со стандартного (5000 записей) в течение синхронизации.
  • Windows Azure SQL Databases Reporting[Источник 7] — служба Microsoft Windows Azure SQL Databases Reporting позволяет легко встроить в приложение Windows Azure возможности работы с отчетами. Доступ к отчетам можно получить через портал Windows Azure, веб-браузер или непосредственно из приложения. Благодаря возможностям облака отпадает необходимость в создании и поддержке собственной инфраструктуры отчетов;
  • Windows Azure SQL Databases Federations[Источник 8]  — федерация Windows Azure SQL Databases значительно упрощает масштабирование множества баз данных, размещенных на сотнях узлов, что позволяет клиентам платить только за реально используемые ресурсы;
  • веб-интерфейс для администрирования и разработки баз данных в составе платформы Windows Azure.


Сравнение базы данных Windows Azure SQL и SQL Server

SQL Server и база данных SQL имеют одинаковый интерфейс, позволяющий обрабатывать поток табличных данных (Tabular Data Stream, TDS) для доступа к базе данных на основе Transact-SQL. Это позволяет приложениям использовать базу данных SQL так же, как SQL Server.

В отличие от SQL Server, база данных SQL отделяет логическое администрирование от физического. Пользователь может по-прежнему управлять базами данных, учетными записями, пользователями и ролями. Однако управление и настройку физического оборудования, такого как жесткие диски, серверы и хранилища, обеспечивает корпорация Microsoft. Физическое администрирование базы данных SQL осуществляется специалистами компании Microsoft. Поэтому между базой данных SQL и SQL Server существуют отличия в администрировании, подготовке, поддержке Transact-SQL, используемой модели программирования и функциональных возможностях.

Ниже приведен обзор основных отличий.

Размер базы данных

В настоящее время возможно использование двух выпусков базы данных SQL:

Выпуски Web Edition объемом 1 и 5 ГБ. Выпуски Business Edition объемом 10, 20, 30, 40, 50, 100, 150 ГБ.

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

Версия базы данных SQL Server

База данных SQL создана на основе SQL Server 2008 (уровень 100). Чтобы перенести базы данных SQL Server 2000 или SQL Server 2005 в базу данных SQL, необходимо убедиться в их совместимости с SQL Server 2008. Наилучший вариант — миграция с SQL Server 2008 в базу данных SQL. Перед началом миграции в базу данных SQL можно выполнить локальное обновление до SQL Server 2008.

Поддержка Transact-SQL

База данных SQL Windows Azure поддерживает подмножество языка Transact-SQL. Перед развертыванием базы данных в базе данных SQL необходимо изменить сценарий так, чтобы выполнялись только поддерживаемые инструкции Transact-SQL.

Обработка подключений

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

База данных SQL является крупномасштабной мультитенантной СУБД-службой, размещаемой на общих ресурсах. Для обеспечения удобства работы всех клиентов базы данных SQL, подключение к службе может быть закрыто при возникновении ряда условий.

Установка

Зайдите на официальный сайт Microsoft Azure SQL[Источник 9] и выбираем раздел быстрое начало работы. Заходим на портал Azure. [Источник 10]

Выполните следующие действия, чтобы создать базу данных SQL, содержащую образец данных Adventure Works LT.

  1. Щелкните Создать в верхнем левом углу портала Azure.
  2. Выберите Базы данных на странице Создание и щелкните Создать в разделе База данных SQL.
Рис.1.Создание базы данных sql[Источник 11].

Использование PowerShell для создания единой базы данных Azure SQL и настройка брандмауэра

PowerShell используется для создания и управления ресурсами Azure из командной строки или скриптов. Здесь описывается использование PowerShell для развертывания базы данных Azure SQL в группе ресурсов Azure на логическом сервере базы данных Azure SQL.

Создание переменных

$resourcegroupname = "myResourceGroup" #Центр данных и имя ресурса 
$location = "WestEurope"
$servername = "server-$(Get-Random)" #Имя логического сервера: используйте случайное значение или замените его собственным значением (не заглавные)
$adminlogin = "ServerAdmin" #Задайте логин администратора и пароль для своей базы данных
$password = "ChangeYourAdminPassword1"
$startip = "0.0.0.0" #Диапазон IP-адресов, который вы хотите разрешить для доступа к вашему серверу, - измените по мере необходимости
$endip = "0.0.0.0"
$databasename = "mySampleDatabase" #Имя базы данных

Создание группы ресурсов

Создание группы ресурсов Azure с помощью команды New-AzureRmResourceGroup. Группа ресурсов представляет собой логический контейнер, в который ресурсы Azure развертываются и управляются как группа. В следующем примере создается группа ресурсов с именем myResourceGroup в местоположении westeurope.

New-AzureRmResourceGroup -Name $resourcegroupname -Location $location

Создание логического сервера

Создание логического сервера базы данных Azure SQL с помощью команды New-AzureRmSqlServer. Логический сервер содержит группу баз данных, управляемых как группа. В следующем примере создается случайно названный сервер в вашей группе ресурсов с именем администратора ServerAdmin и паролем ChangeYourAdminPassword1. Замените эти предварительно определенные значения по желанию.

New-AzureRmSqlServer -ResourceGroupName $resourcegroupname 
    -ServerName $servername 
    -Location $location 
    -SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminlogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))

Настройка брандмауэра сервера

Создайте брандмауэр на уровне сервера Azure SQL Database с помощью команды New-AzureRmSqlServerFirewallRule. Правило брандмауэра на уровне сервера позволяет внешнему приложению, например SQL Server Management Studio или утилите SQLCMD, подключаться к базе данных SQL через брандмауэр службы базы данных SQL. В следующем примере брандмауэр открыт только для других ресурсов Azure. Чтобы включить внешнее подключение, измените IP-адрес на соответствующий адрес для вашей среды. Чтобы открыть все IP-адреса, используйте 0.0.0.0 в качестве стартового IP-адреса и 255.255.255.255 в качестве конечного адреса.

New-AzureRmSqlServerFirewallRule -ResourceGroupName $resourcegroupname 
    -ServerName $servername 
    -FirewallRuleName "AllowSome" -StartIpAddress $startip -EndIpAddress $endip

Создание базы данных на сервере с образцами данных

Создайте базу данных с уровнем производительности S0 на сервере с помощью команды New-AzureRmSqlDatabase. В следующем примере создается база данных, называемая mySampleDatabase, и загружает образцы данных AdventureWorksLT в эту базу данных. Замените эти предопределенные значения по желанию.

New-AzureRmSqlDatabase  -ResourceGroupName $resourcegroupname 
    -ServerName $servername 
    -DatabaseName $databasename 
    -SampleName "AdventureWorksLT" 
    -RequestedServiceObjectiveName "S0"

Источники

  1. Хабрхабр [Электронный ресурс]: Обзор архитектуры и обеспечения высокой доступности в SQL Database (SQL Azure) — Дата обращения: 12.11.2017 /Режим доступа: [1]
  2. Хабрхабр [Электронный ресурс]: Обзор архитектуры и обеспечения высокой доступности в SQL Database (SQL Azure) — Дата обращения: 12.11.2017 /Режим доступа: [2]
  3. Хабрхабр [Электронный ресурс]: Обзор архитектуры и обеспечения высокой доступности в SQL Database (SQL Azure) — Дата обращения: 12.11.2017 /Режим доступа: [3]
  4. Microsoft вебсайт[Электронный ресурс]:SQLCMD — Дата обращения: 04.12.2017 /Режим доступа: [4]
  5. Microsoft вебсайт[Электронный ресурс]:SQL Server Management Studio — Дата обращения: 04.12.2017 /Режим доступа: [5]
  6. Microsoft вебсайт[Электронный ресурс]:Windows Azure SQL Databases Data Sync — Дата обращения: 04.12.2017 /Режим доступа: [6]
  7. Microsoft вебсайт[Электронный ресурс]:Azure SQL Databases Reporting — Дата обращения: 04.12.2017 /Режим доступа: [7]
  8. Microsoft вебсайт[Электронный ресурс]:Windows Azure SQL Databases Federations — Дата обращения: 04.12.2017 /Режим доступа: [8]
  9. Microsoft Azure SQL официальный сайт [Электронный ресурс]: Официальный сайт Microsoft Azure SQL — Дата обращения: 04.12.2017 /Режим доступа: [9]
  10. Портал Azure [Электронный ресурс]: Официальный сайт Microsoft Azure SQL — Дата обращения: 04.12.2017 /Режим доступа: [10]
  11. Microsoft Azure SQL вебсайт [Электронный ресурс]: — Дата обращения: 04.12.2017 /Режим доступа: [11]