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

 Примечание
Если вы хотите принять участие в написании содержания этой страницы, используйте вкладку Edit (необходимо войти в систему). Если же вы хотите предоставить свой отзыв, напишите либо на e-mail azuredocs@microsoft.com либо напишите комментарий  

Введение

Компании, использующие интернет-приложения, сталкиваются со многими проблемами. Пользователи хотят доступ к возрастающим объемам данных из любого места в любое время с любого устройства. Размер, использование и различные виды данных с каждым днем возрастают. Разработчики должны разрабатывать и быстро разворачивать приложения, чтобы соответствовать возрастаемым нуждам. C использованием традиционной локальной модели управления данными удовлетворение этих потребностей требует постоянного инвестирования и управления серверами,системами хранения и сетями. Персоналу необходимо постоянно контролировать инфраструктуру для обеспечения емкости, производительности и доступности. Облачный сервис БД SQL Azure обеспечивает отличный способ решения этих проблем. SQL Azure построена на трех основных принципах: управляемость, масштабируемость и гибкость разработки. С точки зрения разработчика, SQL Azure предлагает знакомую реляционную модель программирования и знакомые методы доступа к данным и простые варианты развертывания. SQL Azure упрощает процесс создания прототипов и развертывания приложений, интеграции данных в масштабе предприятия. SQL Azure устраняет проблемы с инфраструктурой, тем самым предоставляя разработчикам больше свободы для инноваций и экспериментирования с новыми способами обмена данными. С точки зрения IT-управления SQL Azure предлагает систематическое и безопасное облачное решение, которое интегрируется с вашей локальной инфраструктурой и предоставляет контроль и управление распределенными базами данных. SQL Azure построен на проверенных технологиях Microsoft SQL Server ®. С точки зрения бизнеса, SQL Azure представляет собой экономически эффективный подход к управлению данными, с гибкой моделью ценообразования на основе плана, обеспечивающей близкие к нулю капитальные и эксплуатационные расходы, а также возможность быстро и легко масштабировать решение по мере изменения потребностей. Если вы планируете создавать приложения, использующие большие или разделенные наборы данных,  предоставлять масштабируемое хранилище данных или "расширять" вашу локальную инфраструктуру недорогим быстроразвертываемым облачным хранилищем, SQL Azure обеспечит вам надежное и экономически эффективное решение.

↑ Return to Top


Ключевая функциональность

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

Управляемость

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

Развертывание без особых усилий

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

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

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

Service level agreements (SLA) гарантируют высокий уровень сервиса. При переходе в SQL Azure вам больше нет необходимости делать бэкапы, хранить и защищать данные. 

Масштабируемость

Ключевым достоинством сервиса является простота масштабирования решения. При разрастании требований необходимо горизонтально или вертикально масштабировать свое решение 

Глобальная масштабируемость

Модель "плати-по-факту-использования" гарантирует, что вы будете платить только за то, что используете, поэтому вы можете легко ограничить свои ресурсы, если они вам не нужны.  С разработанной стратегией масштабирования БД ваше приложение может использовать вычислительную мощность тысяч серверов и хранить терабайты данных.
SQL Azure работает в датацентрах по всему миру и вы можете освоить его прямо сейчас. Если вам необходим конкретный регион, вы можете развернуть вашу БД в ближайший датацентр. Вы можете использовать эту глобальную масштабируемость для построения веб-приложений, доступных глобально, но без затрат на инфраструктуру и управление. 

Мультитенантность

Независимые вендоры ПО (ISV), разрабатывающие решения  Software+Services (S+S) должны предоставлять адекватный уровень изоляции для данных клиентов и осуществлять правильную модель оплаты клиентами потребленных ими сервисов. SQL Azure предоставляет гибкость, необходимую ISV для сегрегации данных клиентов и реализации мультитенантного биллинга, что позволяет вам построить быстро и легко глобально доступное решение S+S. 

Расширение возможностей разработчика

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

Знакомая модель разработки "клиента"

При разработки лок��льных приложений с использованием SQL Server разработчики используют клиентские библиотеки, использующие для коммуникации между клиентом и сервером протокол TDS. Существует большое коммьюнити разработчиков, знакомых с SQL Server и клиентскими библиотеками, такими как ADO.NET, ODBC, JDBC и SQL Server driver for PHP. SQL Azure имеет тот же самый интерфейс TDS, поэтому разработчики могут использовать те же самые инструменты и библиотеки в процессе создания клиентских приложений с использованием данных в облаке. 

Проверенная реляционная модель

Данные в SQL Azure хранятся знакомым разработчикам и администраторам образом - так же как в SQL Server. Вы можете создать сервере SQL Azure, который является группой БД, распределенных по множеству физических машин. Сервер SQL Azure во многом концептуально идентичен экземпляру SQL Server. Вы можете также использовать географическое положение. Датацентры Windows Azure и SQL Azure расположены по всему миру и, если ваше приложение относится к конкретному региону, вы можете использовать географическое положение для увеличения производительности.
Внутри каждого сервера SQL Azure вы можете создать БД с таблицами, представлениями, хранимыми процедурами, индексами и другими объектами. Подобная модель позволяет использовать существующую архитектуру реляционной БД и Transact SQL и упрощает процесс миграции существующих приложений в SQL Azure. 
Сервера и БД SQL Azure являются виртуальными объектами, не соответствующими физическим серверам и БД.  Администраторы и разработчики могут сконцентрироваться на архитектуре модели данных - SQL Data Services (SDS) осуществляют физическую реализацию и управление. 

Синхронизация и оффлайн-сценарии

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

↑ Return to Top


Типичные сценарии

Веб-приложение

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

Ведомственные/рабочие приложения

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

Крупные организации также имеют множество мелких приложений, использующих базы данных, которые были созданы сотрудниками в отделах и группах. Они могут быть построены  помощью Microsoft Office Access ®, Microsoft ® SQL Server Express, или программного обеспечения сторонних производителей. Базы данных могут быть размещены на одном, дешевом сервере, или даже на настольном компьютере, и они, как правило, управляются сотрудниками, чья основная роль заключается не в управлении данными. Хотя отказ базы данных, как правило, повлияет только на отдел, который его использует, такие отказы могут помешать производительности для больших групп. Кроме того, трудно отслеживать все такие базы данных по всей организации.
SQL Azure представляет собой прекрасную возможность для реорганизации таких разнородных приложений баз данных. Используя базы данных SQL Azure для небольших ведомственных приложений, пользователи могут воспользоваться возможностями самоуправления и отказоустойчивости SQL Azure, без задействования IT-персонала. Этот централизованный подход также позволяет гораздо легче проводить аудит баз данных в вашей организации. Кроме того, поскольку SQL Azure имеет модель оплаты "плати-по-факту-использования", вы можете использовать небольшие базы данных за очень небольшую цену.

При переходе локального клиент-серверного приложения на SQL Azure вы можете оставить клиентское приложение в локальной инфраструктуре и перенести только данные, к которым можно получить доступ с помощью распространенных библиотек доступа к данным . Однако, если вы используете подобную архитект��ру, необходимо учитывать проблемы с задержками, которые происходят в Интернет-соединении, которые могут привести к более сложному коду в приложении. Лучшее решение: перемещение логики доступа к данным в Windows Azure, таким образом приложение, использующее данные, находится там же, где и данные, в том же датацентре. Вы можете создать веб-интерфейс (UI) в Windows Azure, который будет использоваться пользователями с помощью браузера.  Кроме того, можно создать сервис с помощью ADO.NET Data Services, чтобы написать код, который предоставляет SOAP, REST, JSON или интерфейс для простого пользовательского интерфейса.

Общий хаб данных

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

  • Будет держать портативный компьютер каждого сотрудника в синхронизации с последней информацией о ценах
  • Будет держать корпоративную систему в синхронизации с информацией о новых клиентах с портативными компьютерами каждого сотрудника без риска "утечки" критических данных 

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

  1. Создать БД в SQL Azure для хранения информации о продуктах и клиентах.
  2. Создать провайдера Sync Framework для датацентра, который позволит синхронизировать информацию между датацентром и хабом данных в SQL Azure.
  3. Создать второго провайдера Sync Framework для портативных компьютеров отдела продаж, который позволит синхронизировать информацию между компьютерами и хабом данных в SQL Azure. 

На рисунке 2 проиллюстрирована это решение.

Рис 2: Концептуальная схема сценария хаба данных

Информация исходит из корпоративной БД через SQL Azure на компьютеры более чем 5 тысяч сотрудников. Информация о клиентах исходит более чем от 5 тысяч сотрудников через SQL Azure в корпоративную БД. Когда компьютер сотрудника находится оффлайн, отслеживаются изменения локальных данных и, когда он включается, провайдер Sync Framework инициирует синхронизацию. Обеспечивается безопасность корпоративного датацентра. 

ISV S+S

Независимые поставщики ПО могут использовать SQL Azure для решений Software + Services , не отвлекаясь от своих основных задач по разработке программного обеспе��ения. Windows Azure представляет собой идеальную среду для размещения программного обеспечения услуг без дополнительных затрат на поддержание инфраструктуры хостинга на территории независимых поставщиков или клиентов.
Рассмотрим S + S поставщиков, обеспечивающих поддержку бизнеса, в том числе финансовых, государственных, медицинских, недвижимости и франчайзинговых компаний. Такие организации должны хранить исторические данные, такие, как финансовые отчеты, бизнес-операции, корреспонденцию, для использования в будущем или для соблюдения учета нормативных актов. S + S поставщик использует систему управления документами , которая обеспечивает полнотекстовый поиск. S + S продавец должен также отслеживать и сообщать о доступе к ресурсам, которые требуются для целей аудита. Чтобы уменьшить расходы на хранение данных и обеспечить быстрый и безопасный доступ к записям, продавец хочет перенести архив данных о клиентах в облако.

Для достижения этой цели компания может создать учетную запись с SQL Azure. После обеспечения клиентов аккаунтами они могут загружать любые формы документов, таких как электронная почта, отсканированный чек. Некоторые документы хранятся в виде больших двоичных объектов (BLOB) в хранилище Windows Azure Blob, в то время как другие документы хранятся в виде структурированных данных в SQL Azure со стандартными полями данных.

В этом случае важно, чтобы данные каждого клиента были изолированы и были доступны только правильным пользователям. S + S поставщик может использовать SQL Azure для реализации подобного сценария и предотвращения несанкционированного доступа. SQL Azure также упрощает аудит, что позволяет выставлять клиентам правильные счета. 

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

↑ Return to Top


Обзор архитектуры

В этом разделе вы увидите, как SQL Azure использует БД, как структурирует реляционные данные и как вы можете получить доступ к этим данным.

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

Аккаунты Windows Azure

Для использования SQL Azure вы должны создать аккаунт Windows Azure, используя который, вы сможете получить доступ ко всей функциональности платформы и который используется для выставления счета для всех сервисов платформы. Подробнее о том, как получить аккаунт:  Windows Azure Platform Offers.

Сервера SQL Azure 

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

Для создания и управления сервером БД необходимо использовать портал Windows Azure Platform Management Portal, обладающий интуитивным интерфейсом, где вы можете создать логины и развернуть БД. 

БД SQL Azure

Каждый сервер SQL Azure может содержать несколько БД. Новый сервер содержит БД master (аналогично SQL Server). В каждой БД вы можете создать таблицы, представления, индексы, хранимые процедуры и другие объекты БД. Для создания БД вы можете использовать портал управления Windows Azure либо использовать запрос TSQL CREATE DATABASE: SQL Azure Management API.

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

Реляционная модель БД

Одной из главных целей SQL Azure явля��тся предоставление знакомой среды для разработчиков БД. Объекты SQL Server аналогичны объектам SQL Azure. Они включают в себя: 

  • Таблицы: хранение данных с нормализованной структурой.
  • И��дексы: увеличение скорости поиска и производительности.
  • Представления: альтернативный способ просмотра данных в одной и более таблиц.
  • Хранимые процедуры: сохраняйте часто используемые скрипты для простого их вызова.
  • Триггеры: обеспечение консистентности данных с использованием проверок модификации данных.

SQL Server и SQL Azure используют TSQL для создания БД и управления данными. 

Подробнее про Transact-SQL: http://msdn.microsoft.com/en-us/library/ms189826.aspx.

Архитектура доступа к данным

База данных SQL Azure предоставляет интерфейс прото����ола TDS. TDS используется также в SQL Server, таким образом, настольные приложения могут подключиться к базе данных SQL Azure таким же образом каким оно подключается к SQL Server. Такое приложение использует код, который был разработан с помощью ADO.NET, ODBC, или любой другой технологии. Для соединения с SQL Azure необходимо использование Secure Sockets Layer (SSL).
В сценарии клиентского десктоп-приложения/БД SQL Azure необходимо учитывать задержки, которые могут возникнуть в облаках и обработать их в клиентском коде. Задержки будут неизбежно выше, чем было бы, если база данных была на вашей территории. Один из способов избежать этой задержки это создать  веб-интерфейс для приложений баз данных и разместить его в Windows Azure. В этом случае код клиента и данные размещаются в одном датацентре, так что задержка невелика. Пользователи подключаются к такому приложению с помощью веб-браузера. Вы можете использовать эту архитектуру и для веб-сайтов, размещенных в Windows Azure.
В архитектуре, которая поддерживает SQL Azure, можно создавать логику приложения с помощью ADO.NET и Entity Framework, и размещать его в Windows Azure.

Вы можете использовать ADO.NET Data Services, дабы опубликовать приложение как сервис, который использует SOAP, REST, JSON или интерфейс и создать небольшое приложение-клиент, использующий данные, полученные из сервиса..

Модель безопасности

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

  • Логины SQL Server: аутентификация доступа к SQL Azure на уровне сервера.
  • Пользователи БД: Выдача доступа на уровне БД.
  • Роли БД: Объединение группы пользователей и выдача прав доступа на уровне БД.

Масштабирование БД

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

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

SQL Azure предоставляет инфраструктуру для приложений, которым необходимы десятки и сотни БД без соответствующих затрат на управление. Приложение может партиционировать данные в несколько БД без капитальных затрат. Развертывание и использование трех сотен БД так же просто, как и развертывание трех.

Кроме этого, SQL Azure предоставляет эластичность в вопросах масштабирования - приложение может увеличивать и уменьшать количество БД по мере необходимости. 

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

SQL Azure предоставляет встроенный механизм для шардинга данных - SQL Azure Federations. Подробнее про SQL Azure Federations: http://msdn.microsoft.com/en-us/library/windowsazure/hh597452.aspx

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

Разворачивать и заполнять БД можно с помощью TSQL, однако в большинстве случаев эти процессы выполняются на локальном сервере. После окончания работы над приложением БД загружается в облако.
Для развертывания БД в SQL Azure можно использовать запрос Transact-SQL CREATE DATABASE в Microsoft SQL Server® Management Studio с помощью  Generate Script Wizard. После этого можно выполнить запрос TSQL в SQL Azure для создания БД.

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

↑ Return to Top


Заключение и дальнейшие действия

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

↑ Return to Top


Ссылки

Статья написана Jason Lee, Graeme Malcolm, и Alistair Matthews (Content Master).