Цель: Изучить и знать блоки, страницы, а также примеры REST запросов.
План:
1. Бинарные блоки и страницы
2. Windows Azure Blob, как список блоков
3. Примеры REST – запросов (PUT Block, GET Blob)
4. Перечисление объектов Blob – контейнера. Иерархия и разбиение на страницы.
Блоки и страницы
Кроме уже рассмотренных нами основ blob – объектов и хранилищ, необходимо так же пояснить термины “блок” и “страница”.
“Блок” и “страница” – способы организации хранения бинарных объектов.
Blob – блок
Бинарный объект размером до десятков гигабайт, с целью обеспечения его эффективной загрузки, разбивается на блоки.
Блоки оптимизированы для потоковой передачи информации. Запись блоков осуществляется в два этапа: сначала загружаются отдельные блоки информации, являющиеся частью одного бинарного объекта, затем необходимо подтвердить добавление блоков. В течении процесса подтверждения можно добавлять, удалять и изменять блоки бинарного объекта. При создании блока нет необходимости задавать его размер, блоки просто добавляются бинарному объекту. Также необязательно создавать блоки в строго определенной последовательности, упорядочить и редактировать блоки можно позднее.
Структура и атрибуты блока указаны на рис. 14.1 (среда MS SQL Server 2008)
Рис. 14.1
Подытоживая вышесказанное. Блок бинарных объектов состоит из частей (блоки блока) , каждый из которых идентифицируется по идентификатору (ID). Создать или изменить blob-блок можно после загрузки его частей. Максимальный размер каждой части блока 4Мб, сам блок бинарного объекта ограничен размером в 200Гб, или до 50000 частей.
Blob – страница
Как blob-блоки состоят из блоков, так и blob-страницы представляют собой коллекцию страниц.
При создании страницы необходимо указать ее предельный размер. Добавление или обновление blob-страницы осуществляется при помощи Put Page операции.
Чтение и запись данных в страницу можно начать с любого произвольного набора данных.
Blob – страница ограничена размером 1Тб.
Структура и атрибуты страницы указаны на рис. 14.2 (среда MS SQL Server 2008)
Рис. 14.2
Windows Azure Blob, как набор блоков
При загрузке blob – объекта размером в десятки гигабайт реализовывается следующий сценарий(рис. 14.3):
– загружаемый объект разбивается на блоки, максимальный размер которых 4Мб;
-каждому блоку присваивается уникальный идентификатор в пределах бинарного объекта;
– блоки загружаются в “облако”;
– после загрузки всех составных блоков бинарного объекта, определяются список блоков, которые должны использоваться blob – объекте.
Рис 14.3
Доступ к blob – объектам, осуществляется при помощи операций PUT и GET.
Таким образом, Blob-блок может быть создан:
1. при размере меньше 64Мб, он может быть загружен при помощи Put Blob операции;
2. при размере более 64Мб, blob разбивается на части размером 4Мб или меньше, которые после загрузки собираются в определенном порядке.
Примеры REST запросов
Приведем примеры запросов для размещения блока PUT Block и чтения blob – объекта Get Blob. Примеры других REST-запросов можно найти по ссылкам в списке материалов для самостоятельного изучения.
В данных примерах имя учетной записи обозначено как
Также отметим, что для всех решений Windows Azure Storage введен новый HTTP-заголовок «x-ms-version». Все изменения в API хранилища регистрируются как версии с помощью этого заголовка.
Заголовок x-ms-version должен быть задан для всех запросов к Windows Azure Storage.
PUT Block
Ниже представлен пример REST-запроса для размещения блока размером 4МБ посредством операции PUT block. Параметр запроса «?comp=block» указывает на то, что это операция PUT block. Затем задается BlockID. Параметр Content-MD5 может быть задан для защиты от ошибок передачи по сети и обеспечения целостности. В данном случае, Content-MD5 – это контрольная сумма MD5 данных блока в запросе. Контрольная сумма проверяется на сервере, в случае несовпадения возвращается ошибка. Параметр Content-Length (Длина содержимого) определяет размер содержимого блока. Также в заголовке HTTP-запроса имеется заголовок авторизации, как показано ниже.
PUT http://
GET Blob
Нижеследующий запрос обеспечит извлечение всего содержимого заданного blob. Если для контейнера, которому принадлежит blob (в данном примере «video»), задана политика совместного использования «Private», для получения blob необходимо пройти аутентификацию. Если задана политика совместного использования «Public-Read», аутентификация не требуется, и заголовок аутентификации в заголовке запроса не нужен.
GET http://
Интерфейс перечисления объектов blob – контейнера
Windows Azure Blob поддерживает перечисление объектов контейнера бинарных объектов.
Интерфейс ListBlobs поддерживает параметры префикса (prefix) и разделителя(delimeter), что делает возможным формирование иерархического перечня объектов.
К примеру, имеется Blob-контейнер “Photos” бинарных объектов с именами:
Work|MyFirstDay.jpeg
Work|Boss.jheg
Work|NewProjectStart.jpeg
Friends|Party_May.jpeg
Friends|NewYear2011.jpeg
Friends|WeekendApril.jpeg
При этом “|” используется как разделитель, для обозначения тематики фотографий, т.е. для создания иерархии имен. Запрос на получение всех имен “каталогов” будет выглядеть следующим образом:
GET http://
Ответ на запрос:
Тег
Список бинарных объектов, содержащихся в одном “каталоге”, можно получить сочетанием параметров “prefix” и “delimiter”, следующим запросом:
GET http://
Ответ на запрос:
Тег
Также интерфейс ListBlobs поддерживает возможность возвращения определенного количества записей, при помощи параметра “maxresult”.
Возвращаясь к нашему примеру, следующий запрос вернет первую набор данных, при установленном параметре maxresult=2:
GET http://
Ответ на запрос:
В теге
GET http://
Ответ на запрос:
Если тег