Windows Azure Storage
-
Upload
alexandr-feschenko -
Category
Technology
-
view
1.584 -
download
0
description
Transcript of Windows Azure Storage
![Page 1: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/1.jpg)
День 2. Windows Azure Storage.
Feschenko AlexWindows Azure MVPDigital Cloud Technologies
![Page 2: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/2.jpg)
Содержание
Модели хранения данныхRelational and Non-Relational
Windows Azure StorageАккаунтЛокальная эмуляцияWindows Azure Blob Storage
Windows Azure Table Storage
Windows Azure Queue Storage
Windows Azure Drives
![Page 3: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/3.jpg)
Модели хранения данных
Реляционная модель
Не реляционная модель
![Page 4: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/4.jpg)
Не реляционная модель
1Блобы, таблицы и очереди
2Не гарантируют целостность данных
3В результате прекрасно масштабируются
4Сохранение целостности возлагается на плечи разработчика
![Page 5: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/5.jpg)
Реляционная модель
1Классическая реляционная база данных
2Встроенная поддержка целостности данных
3Поддерживаются сложные запросы (#joins)
4Сложнее масштабировать
![Page 6: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/6.jpg)
Windows Azure Storage
Хранилище в облакеДоступное, масштабируемое и постоянноеДоступное везде и в любое времяПлата лишь за то, что реально используется
Доступно через RESTМожно использовать как в облачных приложенияТак и в любых других приложениях
![Page 7: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/7.jpg)
Аккаунт хранилищаГлобальное имя хранилища
North Central US
South Central USNorthern Europe
Western Europe East Asia
South East Asia
США Европа Азия
Можно выбрать месторасположение аккаунта
West US
East US
![Page 8: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/8.jpg)
Аккаунт хранилищаВозможность включения CDN24 CDN-узла по всему миру
Возможность колокации с вычислительной частьюЯвно или используя Affinity Groups
2 независимых 512-битных ключа
100 Тб на аккаунт
![Page 9: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/9.jpg)
Новые возможности
Гео-репликацияАналитикаЛоги: Трассировка всех транзакций к хранилищуМетрики: Статистика по объему и запросам к блобам, таблицам и очередям
Улучшены HTTP-заголовки для блобов
![Page 10: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/10.jpg)
Локальное хранилищеЛокальный эмулятор хранилищаПозволяет вести разработку OfflineНеобходим SQL Express 2005/2008 или выше
http://msdn.microsoft.com/en-us/gg433135
![Page 11: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/11.jpg)
Программный интерфейс
В презентации будет рассмотрено RESTful APIМожно пользоваться им из любого HTTP-клиента
Microsoft.WindowsAzure.StorageClientСтрого типизированная оболочка для REST API
![Page 12: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/12.jpg)
Библиотеки на других языках
![Page 13: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/13.jpg)
Безопасность хранилища
Каждый запрос является безопаснымHTTPS точка доступаЦифровая подпись привилегированных операций
Два 512-битных симметричных ключаМогут пересоздаваться независимо
Точечное предоставление прав при помощи Shared Access Signatures
![Page 14: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/14.jpg)
Абстракции хранилища
ТаблицыСтруктурированное хранилище данных.
ОчередиПостоянное хранилище и коммуникационный канал.
БлобыПростые именованные файлы с метаданными.
ДискиПостоянные NTFS-разделы основанные на блобах.
![Page 15: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/15.jpg)
Хранилище блобов
![Page 16: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/16.jpg)
Концепция
БлобКонтейнерАккаунт
http://<account>.blob.core.windows.net/<container>/<blobname>
Блок/страница
contoso
PIC01.JPG
Block/Page
Block/Page
PIC02.JPG
images
VID1.AVIvideos
![Page 17: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/17.jpg)
Подробности
Основные операции
PutBlobGetBlobDeleteBlobCopyBlobSnapshotBlob LeaseBlob
![Page 18: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/18.jpg)
Подробности
Ассоциация метаданных
Стандартные HTTP-заголовки(Cache-Control, Content-Encoding, Content-Type…)
Метаданные – это <name, value> пары до 8 Кб на блоб
Устанавливаются как часть операции PutBlob или отдельно
![Page 19: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/19.jpg)
Подробности
Блобы всегда адресуются по
именам
Можно использовать “/” в имениe.g. /<container>/myblobs/blob.jpg
![Page 20: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/20.jpg)
Контейнеры блобовМножество контейнеров на аккаунтСпециальный $root контейнер
Контейнер блобовХранит множество блобовУстанавливаются политики безопасностиАссоциация метаданных с контейнеромСписок блобов контейнераВключая метаданныеНет фильтров
![Page 21: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/21.jpg)
GET http://.../products?comp=list&prefix=Tents&delimiter=/
<Blob>Tents/PalaceTent.wmv</Blob><Blob>Tents/ShedTent.wmv</Blob>
Перечисление блобов
Операция List Blob принимает параметрыPrefixDelimiterInclude= (snapshots, metadata etc…)
http://adventureworks.blob.core.windows.net/ Products/Bikes/SuperDuperCycle.jpg Products/Bikes/FastBike.jpg Products/Canoes/Whitewater.jpg Products/Canoes/Flatwater.jpg Products/Canoes/Hybrid.jpg Products/Tents/PalaceTent.jpg Products/Tents/ShedTent.jpg
![Page 22: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/22.jpg)
http://.../products?comp=list&prefix=Canoes&maxresults=2
&marker=MarkerValue
<Blob>Canoes/Hybrid.jpg</Blob>
Пейджинг
Большие списки блобов могут выводиться страницамиУстановить maxresults или;Превысить макимальное количество maxresults (5000)
http://.../products?comp=list&prefix=Canoes&maxresults=2
<Blob>Canoes/Whitewater.jpg</Blob><Blob>Canoes/Flatwater.jpg</Blob><NextMarker>MarkerValue</NextMarker>
![Page 23: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/23.jpg)
Два типа блобов
БлочныеДля сценариев стриминга
Блоб состоит из последовательности блоковБлок идентифицируется Block ID
200 Гб
Оптимистичная конкуренция при помощи Etags
СтраничныеДля сценариев случайного доступа
Блоб состоит из набора страницСтраница идентифицируется сдвигом от начала блоба
1 Тб
Оптимистичная или Пессимистичная при помощи эксклюзивного доступа
![Page 24: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/24.jpg)
TheBlob.wmv
Загрузка блочного блоба
10 Гб Видео
Blo
ck I
d 1
Blo
ck I
d 2
Blo
ck I
d 3
Blo
ck I
d N
blobName = “TheBlob.wmv”;PutBlock(blobName, blockId1, block1Bits);PutBlock(blobName, blockId2, block2Bits);…………PutBlock(blobName, blockIdN, blockNBits);PutBlockList(blobName,
blockId1,…,blockIdN);
TheBlob.wmv
ПреимуществаПовторы и подгрузкиПараллельная и беспорядочная загрузка
Блоб
Windows AzureStorage
![Page 25: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/25.jpg)
Страничный блоб
Создание блобаУказание размера = 10 ГбПлата только за хранимые страницы
Размер страницы = 512 байтОперации случайного доступа
PutPage[512, 2048)PutPage[0, 1024)ClearPage[512, 1536)PutPage[2048,2560)
GetPageRange[0, 4096) возвращает валидные фрагменты:
[0,512) , [1536,2560)GetBlob[1000, 2048) возвращает
Нули для первых 536 байтСледующие 512 байт для фрагмента [1536,2048)
0
10 GB
512
1024
1536
2048
2560
Ад
ресн
ое п
рост
ран
ство
![Page 26: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/26.jpg)
Shared Access Signatures
Точечный доступ к контейнерам и блобамПодписывается URLОтменаИспользуется временной интервалИспользуется политика уровня контейнера
Два подходаAd-hocPolicy based
![Page 27: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/27.jpg)
Ad Hoc СигнатурыСоздается временная сигнатураSignedresource Блоб или КонтейнерAccessPolicy Start, Expiry and PermissionsСигнатура HMAC-SHA256
ЮзкейсыЕдиноразовые URLsНапример для предоставления единоразового права загрузки в контейнер
http://...blob.../pics/image.jpg?sr=c&st=2009-02-09T08:20Z&se=2009-02-10T08:30Z&sp=w
&sig= dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d
![Page 28: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/28.jpg)
Создание политики Специфицируются StartTime, ExpiryTime, Permissions
Создать подписанный URLSignedresource Блоб или КонтейнерSignedidentifier опциональный указатель на политикуСигнатура HMAC-SHA256 of above fields
ЮзкейсыПолитика для пользователей и групп с возможностью отмены
http://...blob.../pics/image.jpg?sr=c&si=MyUploadPolicyForUserID12345
&sig=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d
Policy Based Сигнатуры
![Page 29: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/29.jpg)
Сеть доставки контента(CDN)
Высокоэффективная сеть дистрибуции блобов24 глобальных узла (США, Европа, Азия, Австралия и Южная Америка)Неважно где находятся пользователи приложения
Blob URL vs CDN URL:Windows Azure Blob URL: http://images.blob.core.windows.net/
Windows Azure CDN URL: http://<id>.vo.msecnd.net/
Специфическое доменное имя: http://cdn.contoso.com/
![Page 30: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/30.jpg)
pic1.jpg
Windows Azure CDN
Для включения:Зарегистрировать на порталеУстановить контейнер публичным
pic1.jpg
GEThttp://guid01.vo.msecnd.net/images/pic.1jpg
http://sally.blob.core.windows.net/images/pic1.jpg
http://sally.blob.core.windows.net/ http://guid01.vo.msecnd.net/
pic1.jpg
404
TTL Сеть дистрибуции контента
Хранилище блобов
Узел
Узел
Узел
![Page 31: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/31.jpg)
Диски
![Page 32: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/32.jpg)
Windows Azure Drives
Постоянные NTFS разделы для Azure ComputeМожно использовать NTFS API для доступа к дискамМожно использовать System.IO
ПреимуществаПеремещение приложений использующих NTFS API значительно упрощаетсяПостоянство и надежность
Диск это страничный блобДля использования необходимо примонтировать к инстансуЛокальный кеш на инстансе для операций чтения
![Page 33: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/33.jpg)
Особенности дисков
Диск – это форматированный страничный блобДо 1 Тб в размере
Страничный блоб может монтироваться:На один инстанс для операций чтения и записи На множество инстансов в readonly режиме
![Page 34: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/34.jpg)
Особенности дисков
Инстанс может смонтировать до 16 дисковУдаленный доступ через BLOBUIНевозможно удаленно смонтироватьМожно загрузить VHD и примонтировать его к инстансуМожно загрузить VHD и примонтировать его локально
![Page 35: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/35.jpg)
Подробности дисковОперации выполняются через NTFS API а не через RESTОсновные операцииCreateDriveСоздает новый форматированный блоб в хранилище
MountDrive/UnmountDriveМонтирует диск к текущему инстансу
Демонтирует диск и снимает lock
Get Mounted DrivesВозвращает список смонтированных дисков
Snapshot DriveСоздает snapshot-копию диска
![Page 36: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/36.jpg)
VM
Как работают дискиДиск – форматированный блоб
Процесс монтирования получает эксклюзивный доступ
Процесс монтирования определяет размер кеша
Не буферизированные операции записи отправляются в блоб
NTFS чтения происходят из кеша или из блоба в случае промаха
DemoBlob
ОС
Приложение
Диск X:
Windows Azure Blob Service
Локальный кеш
![Page 37: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/37.jpg)
Пример• CloudStorageAccount account =
CloudStorageAccount.FromConfigurationSetting("CloudStorageAccount");
• //Инициализация локального кешаCloudDrive.InitializeCache(localCacheDir, cacheSizeInMB);
• //Создание диска(страничного блоба)CloudDrive drive = account.CreateCloudDrive(pageBlobUri);drive.Create(1024 /* sizeInMB */);
• //Монтирование дискаstring pathOnLocalFS = drive.Mount(cacheSizeInMB, DriveMountOptions.None);
• //Операции
• …
• //Создание снепшота дискаUri snapshotUri = drive.Snapshot();
• //Демонтирование дискаdrive.Unmount();
![Page 38: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/38.jpg)
Отказоустойчивость
Для сохранения необходимо использовать команду FlushSystem.IO.Stream.Flush()
Диски защищаются эксклюзивным доступом 1 минута таймаутОбрабатывается Windows Azure OS DriverПроцесс демонтирования при RoleEntryPoint.OnStop
При паденииЭксклюзивный доступ снимается в течение минутыМожно смонтировать на другой инстанс
![Page 39: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/39.jpg)
Таблицы
![Page 40: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/40.jpg)
Концепция
СущностьТаблицаАккаунт
contoso
Name =…Email = …
Name =…EMailAdd=
customers
Photo ID =…Date =…
photos
Photo ID =…Date =…
![Page 41: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/41.jpg)
Свойства сущностиДо 255 свойствДо 1 Мб на сущность
Обязательные свойстваPartitionKey & RowKey Уникально идентифицируют сущностьОпределяют порядок сортировки
Timestamp Оптимистичная конкуренцияОрганизовывается через HTTP Etag
Нет фиксированной схемы для других свойствСвойство хранится как <name, typed value> параНет схемы для таблицыСвойства могут быть стандартными типамиString, binary, bool, DateTime, GUID, int, int64, and double
![Page 42: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/42.jpg)
Нет фиксированной схемы
FIRST LAST BIRTHDATE
Wade Wegner 2/2/1981
Nathan Totten 3/15/1965
Nick Harris May 1, 1976
FAV SPORT
Canoeing
![Page 43: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/43.jpg)
Запросы
FIRST LAST BIRTHDATE
Wade Wegner 2/2/1981
Nathan Totten 3/15/1965
Nick Harris May 1, 1976
?$filter=Last eq ‘Wegner’
![Page 44: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/44.jpg)
Предназначение PartitionKeyЛокация сущностиСущности с одним PartitionKey будут храниться в одном физическом узлеЭффективные запросыСтремитесь включать PartitionKey в каждый запрос
Групповые транзакцииАтомарные множественные Insert/Update/Delete операции в пределах одного PartitionKey
Масштабируемость таблицWindows Azure мониторит процесс использования разделовАвтоматическая балансировка нагрузки между секциями
![Page 45: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/45.jpg)
Очереди
![Page 46: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/46.jpg)
Концепция
Сообщение
ТаблицаАккаунт
customer ID order ID http://…
adventureworks
order processing
customer ID order ID http://…
![Page 47: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/47.jpg)
Слабосвязанные сценарииПозволяют организовать поток данных между приложениямиЗагрузить работу в очередьПоставщик может забыть о работе как только она в очередиМножество потребителей работают с очередьюДля экстремальных нагрузокИспользуйте множество очередейЧитайте сообщения пакетамиНесколько задач в сообщении
Очередь
Web Role
Web Role
Web Role
Worker Role
Worker Role
Worker Role
Worker Role
![Page 48: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/48.jpg)
Подробности
Простой коммуникационный каналНет лимита на длину очереди64kb на сообщениеListQueues - список очередей в аккаунте
ОперацииCreateQueue DeleteQueueGet/Set MetadataClear Messages
![Page 49: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/49.jpg)
Подробности
Операции с сообщениямиPutMessage– Ставит сообщение в очередьGetMessages – Читает одно или более сообщений и скрывает ихPeekMessages – Читает одно или более сообщений без их сокрытияDeleteMessage – Навсегда удаляет сообщениеUpdateMessage – Клиент обновляет контент сообщения
![Page 50: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/50.jpg)
Гарантированная обработка
Гарантируется надежная обработка и доставка сообщений при соблюдении следующих шаговПотребитель опрашивает очередь на предмет появления новых сообщений. Как только они появляются потребитель начинает и обработку и делает их невидимыми для другихПотребитель удаляет сообщение по окончании обработкиЕсли потребитель аварийно завершается сообщение становится видимым для других потребителей
![Page 51: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/51.jpg)
Blobs and Queues
demo
![Page 52: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/52.jpg)
Подбивая итоги
Фундаментальные абстракции дляпостроения приложенийБлобы: Файлы и большие объектыДиски: NTFS разделы для миграции приложенийТаблицы: Масштабируемые структурированные хранилищаОчереди: Средства гарантированной доставки сообщений
Удобно использовать при помощи SDK
![Page 53: Windows Azure Storage](https://reader036.fdocuments.net/reader036/viewer/2022062514/558c9677d8b42aeb248b46d8/html5/thumbnails/53.jpg)
Спасибо!