Новая версия Windows Azure Storage
Очереди к таблицам
Кроме стандартных операций, таблицы поддерживают некоторую ограниченную форму очередей.
В предыдущей версии поддерживались только отношение равенства для ключей с одним или несколькими свойствами. Результат выдается в лексикографическом порядке, в соответствии с ключом (partition, row). В новой версии поддерживаются вторичные индексы, определяемые пользователем, для сортировки.
API для запросов из программ использует LINQ – упрощенный язык запросов, аналогичный языку запросов GQL, реализованный в Google App Engine. HTTP REST API использует интерфейс Astoria, основанный на использовании URL-адресов для обращения к сервисам для работы с данными ADO.NET.
Целостность и транзакции
Таблицы Azure полностью целостны, обращения к одному объекту строго синхронизированы, отсутствуют "dirty reads". Для работы с каждым объектом поддерживаются транзакции в стиле ACID (Asynchronous, Consistent, Isolated, Durable – известная парадигма для описания транзакций).
Реализация таблиц
Таблицы спроектированы аналогично хранилищам данных Bigtable and the App Engine.
Разделы (partitions) аналогичны блокнотам (tablets) Bigtable. Все объекты в разделе хранятся на одном сервере данных.
Транзакции реализованы аналогично App Engine datastore. Используется управление версиями объектов.
Запросы. Возможности
Очереди к таблицам аналогичны Amazon SQS. Они позволяют поставить сообщение в очередь и обрабатывать его позже, в слабо связанном виде.
Операции над очередями во время выполнения: enqueue (поставить сообщение в очередь), dequeue (удалить сообщение из очереди), delete (удалить из очереди все сообщения). Сообщения типизированы, из размер – до 8 КБайт.
Операция dequeue использует займы (lease) – средство синхронизации. Займ позволяет в течение определенного заданного интервала времени удерживать сообщение в состоянии, не видимом другим клиентам очереди. По умолчанию время задержки – до 30 секунд.
Бинарные объекты (Blobs)
Сервис blob служит для хранения "непрозрачных" бинарных объектов. Они аналогичны Amazon S3. Бинарные объекты могут создаваться и обрабатываться программным путем. Бинарные объекты идентифицируются уникальными, мнемоничными путями доступа в виде URL-адресов типа:
<account>.blob.core.windows.net
Организация бинарных объектов в Windows Azure изображена на рис. 6.2..
Бинарные объекты могут быть блочными или страничными. Блоки до 64 МБайт могут обрабатываться непосредственно, большей длины – должны быть разделены на блоки. Каждый блок закачивается на сайт отдельно. В конце операции проверяется, все ли блоки закачаны.
Возможно использование страничных бинарных объектов, размером до 1 TB. Они предназначены для произвольного доступа к памяти.
Пространство имен для бинарных объектов – это иерархический URL-путь вида:
<account>.blob. core.windows.net
Бинарные объекты можно изменять или клонировать, они не являются неизменяемыми.
Очереди (Queues)
Память Windows Azure Queue – это сервис для хранения большого числа сообщений, доступ к которому возможен через Web с помощью аутентифицированных вызовов, использующих протоколы HTTP или HTTPS.
Каждое из сообщений в очереди может иметь размер до 64KB.
Очередь может состоять из нескольких миллионов сообщений. Предельный объем учетной записи – 100 TB.
Основные способы использования очередей:
- Создание рабочего множества для асинхронной обработки
- Передача сообщений от Web-роли Windows Azure к worker-роли Windows Azure.
Пример организации очередей в рамках учетной записи Storage приведен на рис. 6.3.
Очереди адресуются с использованием следующего URL-формата:
http://<storage account>.queue.core.windows.net/<queue>
В примере на рис. 6.3.следующий URL-адрес ссылается на одну из очередей на диаграмме:
http://myaccount.queue.core.windows.net/imagesToDownload