Санкт-Петербургский государственный университет
Опубликован: 20.12.2011 | Доступ: свободный | Студентов: 1220 / 54 | Оценка: 3.87 / 4.00 | Длительность: 13:43:00
Лекция 7:

Windows Azure Storage

< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Аннотация: В данной лекции рассмотрены следующие вопросы: архитектура Windows Azure Storage – основной компоненты Windows Azure для управления памятью и хранением информации в облаке.

Цель лекции: Ознакомление с Windows Azure Storage – основной компонентой Windows Azure для управления памятью; с компонентами самой Azure Storage и их возможностями для пользователей.

Презентацию к данной лекции Вы можете скачать здесь.

6.1. Введение

Windows Azure Storage – компонента для управления памятью в Windows Azure.

Компонента Windows Azure Storage Services обеспечивает устойчивое и надежное хранение информации в облаке.

Для доступа к сервисам Storage необходима учетная запись хранения (storage account), обеспечиваемая через Windows Azure Platform Management Portal .

Основные сервисы памяти включают:

  • Сервис Blob (Binary Large OBjects) для хранения текста или бинарных данных
  • Сервис Queue для надежного сохраняемого обмена сообщениями между сервисами
  • Сервис Table для работы со структурированной памятью, к которой можно обращаться по запросам.

Windows Azure SDK предоставляет REST API (REST, Representational State Transfer – один из стандартов разработки Web-сервисов, основанный на передаче информации о состоянии через аргументы и результаты методов) API и управляемый (managed) API для работы с сервисами памяти (managed API означает, что возможен доступ к Storage из .NET-приложений, см. главу 4). Доступ к сервисам Памяти возможен из сервиса, выполняемого в Windows Azure, или непосредственно через Интернет из любого приложения, которое может посылать и принимать данные по протоколам HTTP/HTTPS.

Более подробная информация о REST API для сервисов памяти приведена в документе Windows Azure Storage Services REST API Reference. Информация об управляемом API для сервисов памяти приведена в документе Windows Azure Managed Library Reference.

6.2. Основные возможности Windows Azure Storage

  • - Binary Large Object (BLOB) Service, простейший способ хранения бинарных данных в Windows Azure.
  • - Table Service - поддержка работы с таблицами
  • - Queue Service -поддержка надежного обмена сообщениями между экземплярами Web-ролей и Worker-ролей.
  • - Windows Azure Drive позволяет приложениям для Windows Azure смонтировать Page Blob на отдельный том файловой системы NTFS VHD.

6.3. Преимущества Windows Azure Storage

Устойчивость к ошибкам и встроенная сеть CDN

Вся пользовательская информация, хранящаяся в Windows Azure, дублируется три раза. Независимо от того, какую память использует клиент облака, его данные дублируются в нескольких дублирующих областях (fault domains), что обеспечивает большую устойчивость к ошибкам. Windows Azure Content Delivery Network (CDN) обеспечивает интеграцию "в один клик" с сервисами Памяти (Storage). CDN естественно улучшает производительность, автоматически размещая информацию пользователя поблизости от того места, где она наиболее часто используется.

REST и Managed API

В дополнение к сервисам Памяти Window Azure для приложений пользователя, выполняемых в Windows Azure, она также может работать с приложениями, выполняемыми на локальной машине или на другой облачной платформе. Скачайте SDK, чтобы получить как REST API (программный интерфейс без состояния), так и управляемый API для работы с сервисами Памяти. Более подробно REST API описан в документации MSDN.

6.4. Некоторые особенности предоставления сервисов Windows Azure. Storage

Объем использованной Памяти в Windows Azure вычисляется на основе Вашего использования ее в среднем (в течение какого-либо оплачиваемого периода какого-либо двоичного объекта, таблицы, очереди, либо Windows Azure Drive storage. Например, если Вы использовали 10 ГБ Памяти за первую половину месяца и ничего не использовали за вторую, Вам предъявят счет на использование (в среднем) 5 ГБ Памяти.

В СTP-версии Azure предоставляются три сервиса Памяти - таблицы (tables), очереди (queues) и бинарные объекты (blobs). В коммерческой версии они объединены под сервисами блокировки и кэширования. Они функционируют под управлением Azure Fabric.

Каждый сервис имеет программный .NET API и HTTP REST API. REST-узлы сети имеют следующий формат имен:

.[storage,blob,queue].core.windows.net. 

Имеются также утилиты командной строки для разработки и сопровождения данных на стадиях их разработки и сопровождения.

6.5. Таблицы

Возможности.

Таблица - это структурированные, не требующие описаний в виде схем, масштабируемые хранилища данных, похожие на хранилище данных App Engine. Последняя является распределенной системой, которая по стилю проектирования очень похожа на Bigtable. Она рассчитана на хранение миллиардов объектов и терабайтов данных.

Модель сущности в таблице

Каждый объект имеет имя таблицы и набор свойств вида ключ / значение. Явное представление информации о схеме данных не требуется. Ограничения на объекты: максимальный объем – 1 МБайт, максимальное число свойств – 255.

Поддерживаются следующие типы свойств:

  • строка (string)
  • двоичный объект (binary)
  • целое число (int)
  • длинное целое (long)
  • булевское значение (bool)
  • вещественное двойной точности (double)
  • глобальный идентификатор объекта (guid)

Имеется три специальных свойства: ключ раздела (partition key), ключ строки в таблице (row key), и версия (version).

Ключ раздела идентифицирует раздел, т.е. группу объектов, которые должны храниться вместе. Ключ строки идентифицирует объект в разделе. Совокупность (ключ раздела, ключ строки в таблице) является первичным ключом (primary key) для объекта. Ключ раздела и ключ строки оба являются строками размера до 64 КБайт.

6.6. Очереди к таблицам

Кроме стандартных операций, таблицы поддерживают некоторую ограниченную форму очередей.

В CTP-версии поддерживается только отношение равенства для ключей с одним или несколькими свойствами. Результат выдается в лексикографическом порядке, в соответствии с ключом (partition, row). В коммерческой версии поддерживаются вторичные индексы, определяемые пользователем, для сортировки.

API для запросов из программ использует LINQ – упрощенный язык запросов, аналогичный языку запросов GQL, реализованный в Google App Engine. HTTP REST API использует интерфейс Astoria, основанный на использовании URL-адресов для обращения к сервисам для работы с данными ADO.NET.

6.7. Целостность и транзакции

Таблицы Azure полностью целостны, обращения к одному объекту строго синхронизированы, отсутствуют "dirty reads". Для работы с каждым объектом поддерживаются транзакции в стиле ACID (Asynchronous, Consistent, Isolated, Durable – известная парадигма для описания транзакций).

6.8. Реализация таблиц

Таблицы спроектированы аналогично хранилищам данных Bigtable and the App Engine.

Разделы (partitions) аналогичны блокнотам (tablets) Bigtable. Все объекты в разделе хранятся на одном сервере данных.

Транзакции реализованы аналогично App Engine datastore,. Используется управление версиями объектов.

6.9. Запросы. Возможности

Очереди аналогичны Amazon SQS. Они позволяют поставить сообщение в очередь и обрабатывать его позже, в слабо связанном виде.

Операции над очередями во время выполнения: enqueue (поставить сообщение в очередь), dequeue (удалить сообщение из очереди), delete (удалить из очереди все сообщения). Сообщения типизированы, их размер – до 8 КБайт.

Операция dequeue использует займы (lease)средство синхронизации. Займ позволяет в течение определенного заданного интервала времени удерживать сообщение в состоянии, не видимом другим клиентам очереди. По умолчанию время завержки – до 30 секунд.

6.10. Бинарные объекты (Blobs)

Сервис blob служит для хранения "непрозрачных" бинарных объектов. Они аналогичны Amazon S3. Бинарные объекты могут создаваться и обрабатываться программным путем. Бинарные объекты идентифицируются уникальными, мнемоничными путями доступа в виде URL-адресов типа:

<account>.blob.core.windows.net

Размер бинарных объектов можнт быть до 50 ГБайт. Блоки до 64 МБайт могут обрабатываться непосредственно, большей длины – должны быть разделены на блоки. Каждый блок закачивается на сайт отдельно. В конце операции проверяется, все ли блоки закачаны.

Пространство имен для бинарных объектов – это иерархический URL-путь вида:

<account>.blob. core.windows.net

Бинарные объекты можно изменять или клонировать, они не являются неизменяемыми.

< Лекция 6 || Лекция 7: 123 || Лекция 8 >