SQL Azure

SQL Azure — это способ предоставления реляционной базы данных Microsoft как сервиса.  Данный сервер базируется на технологиях Microsoft SQL Server и обеспечивает устойчивую к ошибкам, масштабируемую и мультитенантную базу данных, доступную как сервис. Как и в случае с Windows Azure, SQL Azure — это не просто хостинг Microsoft SQL Server. Работа SQL Azure базируется на компоненте Cloud Fabric, который управляет экземплярами базы данных и обеспечивает их развертывание, администрирование, обновление, мониторинг и поддерживает весь жизненный цикл работы с данными. От пользователей требуется только выполнение таких задач, как создание схемы и ее поддержание, оптимизация запросов и управление безопасностью.

Рис. 8. Компоненты SQL Azure

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

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

Ограничения на административном уровне

  • В SQL Azure сервер баз данных не доступен на физическом уровне.
  • Предоставляется доступ к базе данных MASTER, но не к конструкциям уровня сервера, таким как sp_configure, командам DBCC, представлениям для управления данными (DMV) и системным представлениям.

Ограничения на программном уровне

  • Ряд функциональности Microsoft SQL Server частично реализован в текущей версии SQL Server:
    • Поддержка команды USE, обработка XML-документов, устаревшие конструкции языка T-SQL, и т.п.
     Подробнее см. https://msdn.microsoft.com/en-us/library/ee336267.aspx
  • Ряд функциональности Microsoft SQL Server не реализован в текущей версии SQL Server:
    • Полнотекстовый поиск, удаленный доступ к данным, связанные сервера, распределенные транзакции, отслеживание изменений, Service Broker и т.п.
    Подробнее см. https://msdn.microsoft.com/en-us/library/ee336253.asp

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

Поддерживаемые механизмы доступа

Облачная база данных SQL Azure поддерживает выполнение конструкций на языке Transact-SQL (T-SQL) через протокол Tabular Data Stream (TDS) и обращение по протоколу ODBC. Также реализована поддержка технологий ADO.NET 3.5 SP1 и 4.0, LINQ, WCF Data Services и ADO.NET Entity Framework 3.5 SP1 и 4.0. В текущей версии обращение через OLE DB не поддерживается. SQL Azure поддерживает Data Sync Services, геоданные, обращение через OData и использование Microsoft Office 2010 как клиентского приложения.

Для управления SQL Azure можно использовать SQL Server 2008 Management Studio, а для миграции данных — SQLCMD, BCP и SQL Server Integration Services.

Для разработчиков, не использующих технологии Microsoft, обращение к SQL Azure возможно следующими способами:

  • Через драйверы SQL Server 2008 Native Client ODBC.
  • Через драйверы SQL Server 2008 Driver for PHP.
    • Построен на основе драйвера Native Client ODBC.
    • Версия 2.0 включает поддержку PHP Data Objects (PDO).
  • Через WCF Data Services и доступ к базам через протокол REST, вклю-
  • чая протокол OData.

Ключевые сценарии использования SQL Azure

Можно выделить четыре основных, высокоуровневых сценария использования SQL Azure:

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

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

Механизмы организации хранения данных

Работа с SQL Azure построена на основе трех основных механизмов — учетной записи, сервера и базы данных. Учетная запись является владельцем одного или более серверов. Сервер владеет одной или более баз данных. Сервер — это логическая концепция, аналогичная Master DB. Сервер содержит метаданные о базе данных и данные по ее использованию. Сервер является единицей аутентификации, георасположения, биллинга и отчетности. Каждая база данных в рамках сервера хранит стандартные SQL-объекты — пользователей, таблицы, представления, индексы и т.п.

Механизмы синхронизации

Механизмы синхронизации — SQL Azure Data Sync — позволяют разработчикам и администраторам баз данных связывать существующие хранилища данных, развернутые у заказчиков, с SQL Azure, расширять доступ к данным, находящимся локально, через платформу Windows Azure (сценарий удаленного доступа к данным из региональных офисов) и реализовывать сценарии работы в отсоединенном режиме.

Рис. 9. Механизмы синхронизации на основе SQL Azure

Можно выделить три основных сценария, при которых может потребоваться синхронизация данных:

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

На рис. 9 показаны ключевые механизмы синхронизации на основе SQL Azure.

Топологии приложений, использующих SQL Azure

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

  • Приложения с «близким» кодом.
    • Доступ к SQL Azure из кода, работающего на инфраструктуре Windows Azure.
  • Приложения с «далеким» кодом.
    • Доступ к SQL Azure из кода, работающего на инфраструктуре заказчика.
  • Гибридные приложения.
    • Доступ к SQL Azure как из кода, работающего на инфраструктуре Windows Azure, так и из кода, работающего на инфраструктуре заказчика.

Рассмотрим каждую из возможных топологий более подробно. Начнем с приложений с «близким» кодом. В этой топологии прикладной код размещается в облаке и реализован либо как веб-роль, либо как прикладная роль. Приложения (либо в виде традиционного «толстого» клиента, либо «тонкого» клиента, запускаемого в браузере) через стандартные интернет-протоколы (HTTP/S, SOAP, REST и т.п.) обращаются к коду, который, в свою очередь, обращается к хранилищу на основе SQL Azure, используя протокол TDS (рис. 10).

В топологии приложения с «далеким» кодом прикладной код располагается на стороне клиента и обращение к хранилищу на основе SQL Azure происходит через протокол TDS (рис. 11).

И, наконец, в случае гибридного приложения прикладной код и данные могут располагаться как на стороне клиента, так и на платформе Windows Azure (рис. 12).

Рис. 10. Приложения с «близким» Рис. 11. Приложения с «далеким» кодом кодом Рис. 12. Гибридное приложение

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

Перенос данных в SQL Azure

Можно выделить три способа переноса существующих баз данных в SQL Azure:

  • Использование мастера Generate Script Wizard из SQL Server 2008 R2 Management Studio для переноса существующей базы данных SQL Server в SQL Azure.
  • Использование BCP для импорта и экспорта данных (создание DAC Package).
  • Использование SQL Server Integration Services.

Обратите внимание на то, что варианты 2 и 3 дополняют друг друга — DAC Package позволяет перенести схему базы данных, а Import &Export Wizard — сами данные.

Развитие SQL Azure

В планах развития SQL Azure как облачной платформы для хранения данных — обеспечение практически полной функциональности, доступной в сервере баз данных Microsoft SQL Server. В частности, планируется включение в состав SQL Azure таких сервисов, как Reporting Services, Analysis Services и т.д. Среди новых возможностей SQL Azure, которые появятся уже после коммерческой доступности платформы, отметим следующие.

Поддержка геоданных

В ближайшее время планируется реализовать в SQL Azure поддержку геоданных на уровне 2-мерных векторных данных двух типов: географические данные («круглая» земля) и геометрические данные («плоская» земля). Также планируется поддержка таких объектов, как точка, линия и область. Облачная база данных SQL Azure будет поддерживать более 70 новых методов для обработки геоданных, что позволит обеспечить максимальную симметрию с возможностями, реализованными в SQL Server 2008.

Поддержка баз данных размером до 50 Гб

В SQL Azure поддерживается два типа баз данных: т.н. веб-редакция и бизнес-редакция. При создании базы данных той или иной редакции можно указать или изменить максимальный размер базы данных.  Для веб-редакции максимальный размер — 5 Гб, для бизнес-редакции — до 50 Гб с приращениями размера по 10 Гб. Оплата происходит по актуальному размеру базы данных.