Как стать автором
Обновить

Сравнение Windows Azure Blob Storage и Amazon Simple Storage Service (S3)–Часть II, резюме

Время на прочтение19 мин
Количество просмотров3.3K
Автор оригинала: Gaurav Mantri (Cerebrata)
Вторая и третья части сравнения сервисов хранилищ Windows Azure и Amazon. Остаётся последняя часть — сравнение Windows Azure Blob Storage и Google Cloud Storage.

В первой части этой статьи мы начали сравнение Windows Azure Blob Storage and Amazon Simple Storage Service (S3), посмотрели на базовые концепции и сравнили ценообразование и функциональность, касающуюся контейнеров блобов и корзин. Читать первую часть.
В этой части статьи мы сравним функциональность, касающуюся блобов и объектов, и закроем сравнение сервисов хранилищ обеих систем, сведя получившиеся данные в одну общую таблицу.

Первая часть цикла — Сравнение Windows Azure Table Storage и Amazon DynamoDB
Вторая часть цикла — Сравнение Windows Azure Blob Storage и Amazon Simple Storage Service (S3) — ч. I

Аббревиатуры: Windows Azure Blob Storage WABS и Amazon Simple Storage ServiceAS3.

Концепции



Перед подробным обсуждением функций я считаю важным пояснить некоторые концепции, стоящие за блобами и объектами.

Блобы и объекты: Блобы WABS и объекты AS3 – это файлы в вашей облачной файловой системе, расположенные в контейнерах блобов и корзинах.

Комментарии:

  • Отсутствует ограничение на количество хранимых блобов и объектов, при этом в AS3 это количество просто неизвестно, в WABS же это количество ограничено размером аккаунта хранилища (100 Тб).
  • Максимальный размер объекта в AS3 – 5 Тб, в WABS – 1 Тб.
  • В WABS есть два типа блобов – блочные, удобные для стриминга (например, картинок, видео, документов) и имеющие максимальный размер в 200 Гб, и страничные, удобные для операций случайного доступа/записи и имеющие максимальный размер в 1 Тб. Общим случаем использование страничного блоба является монтирование VHD в качестве диска в роли Windows Azure. В AS3 подобного разделения нет.
  • Обе системы предоставляют богатую функциональность по управлению блобами и объектами. Вы можете копировать, загружать, скачивать и совершать другие операции.
  • Обе системы предоставляют возможность защиты содержимого от неавторизованного доступа, причем механизм списков контроля доступа более подробно настраиваем в AS3, где на каждый файл в корзине можно создать собственный ACL. В WABS все происходит на уровне контейнера блобов.


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

Загрузка блобов и объектов



Давайте поговорим о загрузке блобов и объектов в контейнеры и корзины. Есть два механизма загрузки – можно загружать блоб или объект полностью в рамках одного запроса или разделить их на куски (блоки или страницы WABS и части в AS3).

Загрузка в одном запросе


Если загружаемые данные имеют небольшой размер и у вас хорошая скорость подключения, вы можете полностью загрузить эти данные в одном запросе. В WABS для этого используется Put Blob. В AS3 — Put Object.

Загрузка кусками


Можно разделять большие данные, которые неэффективно загружать в одном запросе полностью. Обе системы позволяют разбивать данные на куски (блоки или страницы в WABS и части в AS3) и загружать постепенно. В WABS для блочных блобов необходимо использовать PutBlock и Put Block List, для страничных — Put Page. В AS3 для этого используются функции Initiate Multipart Upload, Upload Part и Complete Multipart Upload либо Abort Multipart Upload.

Есть много причин, по которым можно решить загружать данные кусками:

  • Необходимо загрузить весьма большие данные. Обратите внимание, что в WABS один блочный блоб ограничен размером 200 Гб, страничный – 1 Тб, в AS3 же можно иметь один объект до 5 Тб. Такие объемы непрактично загружать в одном запросе.
  • Невысокая скорость подключения.
  • Обе системы являются облачными сервисами, предназначенными для обработки запросов сотен и тысяч пользователей одновременно, и обе системы ограничат ваши запросы, если они выполняются дольше установленного лимита – в WABS это 10 минут на загрузку 1 Мб данных.
  • Разделение больших данных на куски позволяет выполнять параллельную загрузку (соответственно, более быстро загружать данные).
  • В случае обрыва загрузки куска вы можете повторить его загрузку, если же оборвется загрузка больших данных, загружающихся в одном запросе, придется загружать всё заново, что очень неэффективно.
  • Ограничения системы: WABS не позволяет в одном запросе загружать данные, если их размер превышает 64 Мб. В AS3 такого ограничения нет, но компания рекомендует делить данные на куски, если их размер превышает 100 Мб.


Теперь что касается того, как загрузить данные кусками в каждой из систем. Например, вы хотите загрузить кусками файл размером 100 Мб. Посмотрим, что нужно будет сделать при использовании каждой из платформ.

WABS


Допустим, каждый кусок имеет размер в 1 Мб (несмотря на то, что нет необходимости иметь куски одинакового размера) и вам необходимо совершить загрузку 100 кусков. Берем блочный блоб, каждый из блоков (кусков) которого имеет уникальный идентификатор (BlockId). Для его загрузки используем функцию Put Block. BlockId – строка, зашифрованная Base64, максимальный размер которой ограничен 64 байтами. Все BlockId (100 в нашем случае) должны быть одной длины. При этом неважно, в каком порядке вы будете загружать блоки – вы можете загружать их и параллельно. После загрузки блока WABS кладет его куда-то в хранилище, и хранит 7 дней. После загрузки всех блоков вызываем Put Block List, подтверждая (commit) эти блоки. До момента вызова этой функции к блобу обратиться нельзя и, если вы не подтвердили блоки в течение 7 дней, они будут удалены системой. После вызова функции, основываясь на порядке списка BlockId, WABS воссоздаст блоб и пометит его как доступный. Нет разницы, какие значения будут иметь BlockId (все они могут быть GUID), но важно, в каком порядке вы отправите список BlockId при использовании Put Block List.

Ограничения:

  • Блоб можно разделить максимум на 50000 блоков.
  • Блоб может иметь максимум 100000 неподтвержденных блоков в любой момент времени.
  • Набор неподтвержденных блоков не может иметь размер, больший 400 Гб.
  • Все BlockId блоков одного блоба должны быть одной длины, т.е. недопустима ситуация, когда их значения будут равны block8, block9, block11.
  • Максимальная длина BlockId – 64 байт.


AS3


Допустим, размер каждого куска – 5 Мб. Каждому куску назначается уникальный идентификатор (Part Number), идентифицирующий кусок и определяющий его позицию в исходном объекте. Этот номер может быть любым номером от 1 до 10000, но они должны быть отсортированы, т.е., если брать нашу ситуацию, то кусок 0-5Мб должен иметь номер 1, кусок 5-10 Мб – 2, и так далее. Но, когда вы начнете загружать эти части, сначала необходимо вызвать функцию Initiate Multipart Upload, которая скажет AS3, что начат процесс передачи объекта по кускам. Функция возвратит Upload Id. Далее для каждого куска надо вызвать функцию Upload Part и передать Upload Id и номер куска, причем неважно, в каком порядке будут загружены куски (можно загружать параллельно). После загрузки всех кусков нужно вызвать функцию Complete Multipart Upload, подтвердив таким образом куски. Для отмены процесса можно вызвать Abort Multipart Upload.

Ограничения:

  • Судя по тому, что номер куска должен быть от 1 до 10000, я предполагаю, что объект может быть разделен максимум на 10000 частей.
  • Так как номер определяет позицию куска в объекте, его значение важно.
  • Каждый кусок должен иметь размер минимум 5 Мб за исключением последнего куска в последовательности, для которого нет ограничений по размеру.


Скачивание блобов и объектов



Для скачивания блобов и объектов существует два механизма – либо скачивание блоба или объекта целиком в одном запросе либо кусками.

В каждой системе есть только одна функция для скачивания — Get Blob в WABS и Get Object в AS3.

Скачивание в одном запросе


Если данные имеют небольшой размер и у вас хорошая скорость подключения, вы можете скачать объект полностью, используя Get Blob в WABS и Get Object в AS3.

Скачивание кусками


Если объект имеет большой размер и вы не уверены, сможете ли скачать его за один раз, вы можете качать кусками, используя ту же функцию с добавлением заголовка Range и определив диапазон байт, необходимый для скачивания.

Процесс скачивания:

  1. Определить размер объекта. Например, он «весит» 100 Мб.
  2. Определить размер кусков. Например, вам удобно качать куски по 1 Мб.
  3. Вызывать Get Blob или Get Object и передавать им соответствующие значения в заголовке Range. Если вы качаете последовательно, ваш первый запрос будет иметь значение этого заголовка “0 – 1048575” (0 – 1 Мб), второй запрос — “1048576 – 2097151” (1 – 2 Мб) и так далее.
  4. После скачивания положить кусок куда-либо.
  5. После скачивания всех кусков создать пустой файл размером 100 Мб и заполнить этот файл скачанными кусками.


Функции



Функции, предоставляемые обеими системами, сведены в таблицу ниже.
  WABS
AS3
Put Blob/PUT Object
Да
Да
POST Object
Нет
Да
Get Blob/GET Object
Да
Да
GET Object torrent
Нет
Да
GET Object ACL
Нет
Да
PUT Object ACL
Нет
Да
Get Blob Properties/HEAD Object
Да
Да
Set Blob Properties
Да
Нет
Get Blob Metadata/Head Object
Да
Да
Set Blob Metadata
Да
Нет
Delete Blob/DELETE Object
Да
Да
Delete Multiple Objects
Нет
Да
Copy Blob/Put Object – Copy
Да
Да
Snapshot Blob
Да
Нет
Lease Blob
Да
Нет
Initiate Multipart Upload
Нет
Да
Put Block/Upload Part
Да
Да
Put Block List/Complete Multipart Upload
Да
Да
Get Block List/List Parts
Да
Да
Abort Multipart Upload
Нет
Да
Upload Part – Copy
Нет
Да
Put Page
Да
Нет
Get Page Ranges
Да
Нет



Обсудим поподробнее эти функции.
  WABS
AS3
Put Blob/PUT Object
Да
Да

Функция добавляет блоб в контейнер блобов и объект в корзину.

Комментарии:

  • В обеих системах функция перезапишет существующий объект с указанным именем. В AS3 с включенным на корзине версионированием будет создана копия объекта. В WABS нужно обрабатывать версионирование собственными силами, используя Snapshot Blob.
  • Обе системы позволяют определить свойства для объектов (cache control, тип содержимого и т.д.)
  • Обе системы позволяют послать хэш MD5 содержимого для проверки консистентности данных.
  • В AS3 можно при создании объекта задать на него ACL, чего нельзя сделать в WABS.
  • AS3 позволяет хранить объекты с ограниченной избыточностью. Когда вы вызываете эту функцию, вы определяете опциональным параметром, нужно ли хранить объект с ограниченной избыточностью. Если же параметр опущен, объект сохраняется со стандартной избыточностью.
  • Обе системы позволяют указывать метаданные для блобов и объектов в форме коллекции пар ключ-значение. В обеих системах максимальный размер этих метаданных – 8 Кб.
  • При создании страничного блоба с использованием этой функции вы только инициируете страничный блоб, но не кладете в него данные. Для вставки данных необходимо использовать функцию Put Page.
  • При создании блочного блоба или объекта в AS3 данные отправляются в запросе.
  • Максимальный размер блочного блоба, созданного с использованием этой функции, равен 64 Мб. Если размер больше, блоб должен быть разделен на блоки и загружен с помощью Put Block и Put Block List.
  • WABS позволяет определить предусловия, которые должны быть удовлетворены для успешного завершения этой функции (If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match).
  • AS3 поддерживает шифрование объектов на стороне сервера, соответственно вы можете определить, необходимо ли шифровать объект, при запросе. WABS не поддерживает шифрование на стороне сервера, поэтому шифровать объекты необходимо самостоятельно.

  WABS
AS3
POST Object
Нет
Да

Функция добавляет объект в указанную корзину, используя HTML-форму. POST является альтернативой PUT и позволяет реализовать загрузку объекта с помощью браузера. Параметры, переданные PUT с помощью HTTP-заголовков, передаются в случае POST как тело зашифрованного сообщения multipart/form-data.
  WABS
AS3
Get Blob/GET Object
Да
Да

Функция позволяет скачать блоб из контейнера или корзины.

Комментарии:

  • Можно качать кусками, указав количество байт в заголовке Range.
  • В WABS функция также возвращает метаданные для скачиваемого блоба.
  • WABS позволяет определить предусловия, которые должны быть удовлетворены для успешного завершения этой функции (If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match).
  • В AS3 можно переопределять значения конкретных заголовков ответа, используя параметры запроса (кроме анонимных запросов). Запрос должен быть подписан с заголовком Authorization или использовать преподписанный URL.
  • Можно использовать эту функцию для получения версий блобов и объектов – для получения версии блоба нужно указать дату/время снапшота блоба, для получения версии объекта в AS3 – указать Version Id. Если эти параметры опущены, возвращается текущая версия объекта.

  WABS
AS3
GET Object torrent
Нет
Да

AS3 позволяет использовать объекты с помощью протокола BitTorrent, который также может сократить количество передаваемого траффика. Подробнее про использование BitTorrent и AS3 — здесь.

Функцию можно вызывать только на объектах, имеющих размер менее 5 Гб.
  WABS
AS3
GET Object ACL
Нет
Да

В AS3 можно указать ACL на уровне отдельного объекта (в WABS ACL можно указать только на уровне контейнера блобов). Эта функция используется для получения информации об ACL, указанном для объекта

Интересным моментом является то, что если вы используете разные версии объекта, каждая версия будет иметь отдельный ACL. Для получения ACL конкретной версии объекта необходимо передать функции Version Id версии.
  WABS
AS3
PUT Object ACL
Нет
Да

Функция позволяет указать ACL для объекта. Как указывалось выше, каждая версия объекта имеет собственный ACL. Для указания ACL для конкретной версии объекта функции необходимо передать Version Id этой версии.
  WABS
AS3
Get Blob Properties/HEAD Object
Да
Да

Функция используется для получения свойств блоба и метаданных объекта, но не возвращает содержимое блоба.

Комментарии:

  • Get Blob Properties в WABS возвращает набор определенных пользователем метаданных, стандартных свойств HTTP и системных свойств для блоба, тогда как HEAD Object в AS3 возвращает только метаданные объекта.
  • WABS позволяет определить предусловия, которые должны быть удовлетворены для успешного завершения этой функции (If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match).
  • Эту функцию можно использовать для получения свойств конкретной версии блоба или объекта. Для получения этой информации необходимо указать дату/время снапшота блоба в WABS и Version Id необходимой версии в AS3. Если эти параметры опущены, возвращается информация о текущей версии.

  WABS
AS3
Set Blob Properties
Да
Нет

Функция определяет системные свойства блоба в WABS. Недоступна в AS3. При создании объекта можно указать только системные свойства.

Свойства, доступные для определения, включают в себя: Cache Control, Content Type, Content MD5, Content Encoding, Content Language. Обратите внимание, что вы не имеете права переопределять эти свойства для снапшота блоба.

WABS позволяет определить предусловия, которые должны быть удовлетворены для успешного завершения этой функции (If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match).
  WABS
AS3
Get Blob Metadata/Head Object
Да
Да

Функция возвращает определенные пользователем метаданные. Эту функцию можно использовать для получения свойств конкретной версии блоба или объекта. Для получения этой информации необходимо указать дату/время снапшота блоба в WABS и Version Id необходимой версии в AS3. Если эти параметры опущены, возвращается информация о текущей версии.  
  WABS
AS3
Set Blob Metadata
Да
Нет

Функция используется для указания словаря метаданных в виде коллекции записей ключ-значение для блобов в WABS.

Комментарии:

  • Функция перезаписывает существующие метаданные, поэтому нельзя просто обновить одну пару ключ-значение.
  • Максимальный размер метаданных равен 8 Кб.
  • Имя метаданных должно быть разрешенным идентификатором C#.

  WABS
AS3
Delete Blob/DELETE Object
Да
Да

Функция удаляет блоб или объект из хранилища.

Комментарии:

  • В AS3 функция удаляет null-версию (если таковая была) объекта и вставляет маркер на удаление, который затем становится версией объекта. Если не было null-версии, никакие из объектов не удаляются.
  • В WABS можно использовать эту функцию для удаления только снапшотов без удаления исходника. Если исходник удаляется, все его снапшоты также удаляются.
  • Как я понимаю, в AS3 при удалении объекта все его версии остаются нетронутыми, что мне кажется достаточно удобной защитой от случайных операций удаления.
  • Эту функцию можно использовать для удаления конкретных версий блоба или объекта – для этого нужно указать дату/время снапшота блоба в WABS и Version Id необходимой версии в AS3.


· WABS позволяет определить предусловия, которые должны быть удовлетворены для успешного завершения этой функции (If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match).

  • В AS3 можно использовать Multi Factor Authentification (MFA) Delete, что предоставляет дополнительный уровень безопасности. Подробнее про MFA — здесь.

  WABS
AS3
Delete Multiple Objects
Нет
Да

Эта функция позволяет удалить в одном HTTP-запросе несколько объектов из корзины – для этого необходимо знать ключи удаляемых объектов. Можно удалять также конкретные версии одного или нескольких объектов. В одном запросе можно удалить до 1000 объектов.
  WABS
AS3
Copy Blob/Put Object – Copy
Да
Да

Функция копирует блоб куда-либо из исходного расположения.

Комментарии:

· Обе системы позволяют определить предусловия, которые должны быть удовлетворены для успешного завершения этой функции (If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match). Эти условия можно определить как на исходнике, так и на конечной копии в WABS и на исходнике в AS3.

· WABS позволяет копировать объекты из контейнера в контейнер только в пределах одного аккаунта хранилища. В AS3 подобного ограничения нет. Если корзины, между которыми происходит обмен, принадлежат к одному аккаунту, объект будет скопирован. Однако, если вы создали объект, используя API для загрузки кусками, вы не сможете копировать объект из региона в регион.

· Обе системы позволяют вам скопировать существующие метаданные или указать метаданные для конечной копии.

· AS3 реализует эту функцию как комбинацию GET Object и PUT Object.

  • Использовать эту функцию можно с объектами не более 5 Гб в размере. Если размер превышает 5 Гб, необходимо совершить загрузку кусками.
  • В AS3 при копировании удаляется определенный ACL и на объект ставится разрешение как private.


Полезные советы:

  • Обе системы не поддерживают переименование объекта. Переименование объекта можно реализовать, сначала скопировав объект, после чего удалив его.
  • Можно также «повысить» версию блоба или объекта до «текущей» версии. Для этого нужно указать как исходник для копирования версионированный блоб (указав на его снапшот) или объект (указав на его Version Id) и конечную копию как неверсионированный блоб или объект.

  WABS
AS3
Snapshot Blob
Да
Нет

Функция создает read-only копию блоба – так реализуется версионирование WABS. Как я упоминал в предыдущих статьях, AS3 самостоятельно реализует версионирование. В WABS же версионирование реализовано на уровне конкретного блоба и версионирование этого блоба переходит в ответственность разработчика.

Комментарии:

  • Функция создает Read-only копию блоба – снапшот. Снапшоты могут быть загружены, скопированы или удалены, но не модифицированы.
  • В отличие от AS3, где версии объекта назначается Version Id, каждому снапшоту назначается значение дату/времени, уникально идентифицирующее данный снапшот.


· WABS позволяет определить предусловия, которые должны быть удовлетворены для успешного завершения этой функции (If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match).

  • Можно «повысить» снапшот до версии блоба-исходника, используя функцию Copy Blob.

  WABS
AS3
Lease Blob
Да
Нет

Функция позволяет поставить одноминутный лок на блоб, чтобы его не могли модифицировать. Функция очень удобна в ситуации с множеством worker-ов, пытающихся совершить одну и ту же операцию, вы же хотите, чтобы только один из них всё-таки сделал изменение. Подробнее: http://blog.smarx.com/posts/managing-concurrency-in-windows-azure-with-leases.


WABS
AS3
Initiate Multipart Upload
Нет
Да

Функция используется для инициирования загрузки данных кусками.
  WABS
AS3
Put Block/Upload Part
Да
Да

Функция используется для загрузки кусков (блоков в WABS и частей в AS3) данных.
  WABS
AS3
Put Block List/Complete Multipart Upload
Да
Да

Функция используется для подтверждения блобов или объектов в соответствующем хранилище. Функцию можно вызывать после загрузки всех блоков или частей.
  WABS
AS3
Get Block List/List Parts
Да
Да

Функция возвращает список загруженных блоков или частей.

Комментарии:

  • WABS имеет два списка блоков для блоба – список успешно подтвержденных блоков и список неподтвержденных блоков, которые были загружены, но не были подтверждены.
  • В одном запросе функции AS3 возвратит до 1000 номеров частей. Если останутся ещё части, AS3 возвратит continuation token. Можно указывать, сколь много номеров будет возвращено.


· WABS позволяет определить предусловия, которые должны быть удовлетворены для успешного завершения этой функции (If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match).

  WABS
AS3
Abort Multipart Upload
Нет
Да

Функция используется для отмены выполняющегося процесса загрузки.

В таком виде, в каком реализована эту функциональность в WABS, она вам не нужна. В WABS вы не можете прервать процесс загрузки. Если вы начали загрузку блобов кусками и не вызвали Put Block List в течение 7 дней, загруженные блоки будут удалены.
  WABS
AS3
Upload Part – Copy
Нет
Да

Если объект, который вы пытаетесь скопировать, имеет размер, больший 5 Гб, вы не сможете использовать функцию Put Object – Copy. Вам придется копировать этот объект с помощью загрузки кускам, и эта функция предназначена как раз для этого. Различие между этой функцией и Upload Part состоит в том, что вместо передачи данных в теле запроса вы указываете объект-источник в формате source_bucket/source_object и диапазон байт, который нужно скопировать. Таким образом нужно поступить со всеми частями копируемого объекта. Перед вызовом этой функции вам необходимо инициировать загрузку кусками и получить Upload Id, который и необходимо передать функции. Для завершения копирования нужно вызвать “Complete Multipart Upload” либо “Abort Multipart Upload”.

WABS
AS3
Put Page
Да
Нет

Когда вы создаете страничный блоб, используя Put Blob, вы только инициируете его создание, т.е. создаете пустой страничный блоб без содержания. С помощью этой функции можно вставить/обновить данные в страничный блоб, причем подтверждать данные не надо – после вызова этой функции они будут автоматически подтверждены.

Комментарии:

  • Для помещения данных в блоб необходимо указать значение заголовка диапазона байт “Byte Range”. Начальный сдвиг диапазона должен быть абсолютным значением 512-1. Примеры разрешенных диапазонов байт – 0-511, 512-1023 и так далее.
  • С помощью этой функции можно либо записать данные в страничный блоб, либо очистить от данных конкретный диапазон байт.


· WABS позволяет определить предусловия, которые должны быть удовлетворены для успешного завершения этой функции (If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match).

  WABS
AS3
Get Page Ranges
Да
Нет

Важным различием между блочным и страничным блобом является ценообразование – вы платите за блочный блоб полностью, но в случае страничного блоба – только за занятые (ненулевые) страницы. Например, если вы создали блочный блоб на 2 Гб и страничный блоб на 2 Гб и оба из них незаполнены (содержат 0 байт), вы заплатите за 2 Гб блочного блоба, за страничный же блоб плата взиматься не будет. Потом вы запишите 1024 байта в страничный блоб, используя Put Page, и начнете платить за эти 1024 байта.

Эта функция возвращает отсортированный список ненулевых страниц.

У этой функции есть еще одно преимущество – если вы при скачивании страничного блоба вызовете эту функцию, вы будете гарантированно знать, где в блобе хранятся ваши данные, после чего вы сможете скачать не весь блоб, а только занятые страницы, с использованием заголовка Range в функции Get Blob.

Резюме



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

Сравнение Windows Azure Blob Storage и Amazon Simple Storage Service (S3)–Резюме



Подробные статьи по сравнению Windows Azure Blob Storage и Amazon Simple Storage Service (S3 можно почитать здесь и здесь. В этой заметке я подведу итоги.

Аббревиатуры: Windows Azure Blob Storage - WABS иAmazon Simple Storage ServiceAS3.

В таблицу сведены итоги сравнения функций WABS и AS3.
WABS
AS3
Текущая версия сервиса
2011-08-18
2006-03-01
Ограничение хранилища
До 100Тб
Неограничено
Облачная файловая система
Да
Да
Возможность пересылки дисков для передачи огромных объемов данных
Нет
Да
Подерживаемые протоколы
HTTP / HTTPS
HTTP / HTTPS / BitTorrent
Возможность выставлять счет клиентам за потребленные ими данные
Нет
Да
Поддержка шифрования на стороне сервера
Нет
Да
Поддержка ограниченной избыточности
Нет
Да
Поддерживаемый уровень иерархии
2
2
Контейнеры блобов и корзины
Создание контейнеров блобов и корзин
Да
Да
Количество контейнеров блобов и корзин
Неограничено
Неограничено
Минимальная/максимальная длина названия корзины или контейнера блобов
3/63
3/63
Чувствительность к регистру в именах контейнеров блобов и корзин
Нижний регистр
Нижний регистр
Разрешенные в именах контейнеров блобов и корзин символы
Alphanumeric, дефис (-)
Alphanumeric, дефис (-), точка (.)
Поддержка виртуального хостинга
Нет
Да
Поддержка хостинга path-style
Да
Да
Возможность определения ACL в момент создания
Да
Да
ACL по умолчанию
Private
Private
Указание собственных метаданных
Да
Нет
Получение списка контейнеров блобов и корзин
Да
Да
Максимальное количество возвращенных одним вызовом функции контейнеров блобов или корзин
5000
Не указано
Возвращение части списка контейнеров блобов и корзин с использованием фильтрации по префиксу
Да
Да
Удаление контейнеров блобов и корзин
Да
Да
Контейнер блобов или корзина должна быть пустой перед удалением
Нет
Да
Получение списка блобов или объектов
Да
Да
Максимальное количество блобов или объектов, возвращенное одним вызовом функции
5000
1000
Возможность указания верхнего лимита количества возвращаемых блобов или объектов в одном вызове функции
Да
Да
Поддержка разделителя для создания иллюзии иерархии в виде папок
Да
Да
Фильтрация возвращаемого списка блобов или объектов по префиксу
Да
Да
Получение списка версионированных блобов или объектов
Да
Да
Получение списка неподтвержденных блобов или объектов
Да
Да
Логирование запросов к блобам или объектам
Да
Да
Логирование запросов к конкретным блобам или объектам
Нет
Да
Получение конфигурации логирования запросов к блобам или объектам
Да
Да
Определение ACL на контейнер блобов или корзину
Да
Да
Возможные значения ACL
Container, Blob, Private
READ, WRITE, READ_ACP, WRITE_ACP, FULL_CONTROL
Определение различных ACL для различных пользователей
Нет
Да
Определение собственных метаданных для контейнера блобов или корзины
Да
Нет
Получение определенных пользователем метаданных для контейнера блобов или корзины
Да
Нет
Версионирование объектов
Да
Да
Версионирование управляется системой
Нет
Да
Настройка версионирования для контейнеров блобов или корзин
Нет
Да
Получение конфигурации версионирования контейнера блобов или корзины
Нет
Да
Автоматическое удаление содержимого контейнера блобов или корзины по истечении определенного срока
Нет
Да
Настройка автоматического удаления содержимого контейнера блобов или корзины по истечении определенного срока
Нет
Да
Получение настроек автоматического удаления содержимого контейнера блобов или корзины по истечении определенного срока
Нет
Да
Удаление настроек автоматического удаления содержимого контейнера блобов или корзины по истечении определенного срока
Нет
Да
Определение политик доступа на контейнер блобов или корзины для предотвращения несанкционированного доступа
Нет
Да
Получение политик доступа на контейнер блобов или корзины для предотвращения несанкционированного доступа
Нет
Да
Удаление политик доступа на контейнер блобов или корзины для предотвращения несанкционированного доступа
Нет
Да
Получение уведомлений о произошедшем с контейнером блобов или корзиной событии
Нет
Да
Настройка уведомлений о произошедшем с контейнером блобов или корзиной событии
Нет
Да
Получение уведомлений о произошедшем с контейнером блобов или корзиной событии
Нет
Да
Может ли другой пользователь платить за скачивание из контейнера блобов или корзины
Нет
Да
Определение пользователя, который будет платить за скачивание из контейнера блобов или корзины
Нет
Да
Получение конфигурации пользователя, который будет платить за скачивание из контейнера блобов или корзины
Нет
Да
Размещение статического вебсайта в контейнере блобов или корзине с поддержкой страниц по умолчанию и ошибок
Нет
Да
Настройка размещения статического вебсайта в контейнере блобов или корзине с поддержкой страниц по умолчанию и ошибок
Нет
Да
Получение настройки размещения статического вебсайта в контейнере блобов или корзине с поддержкой страниц по умолчанию и ошибок
Нет
Да
Удаление настройки размещения статического вебсайта в контейнере блобов или корзине с поддержкой страниц по умолчанию и ошибок
Нет
Да
Блобы и объекты
Максимальный размер блоба или объекта
200 Гб / 1 Тб
5 Тб
Типы блобов или объектов
Блочный, страничный
-
Загрузка блобов или объектов
Да
Да
Максимальный размер блоба или объекта, который можно загрузить без разделения его на куски
64 Мб
Ограничения отсутствуют
Загрузка блобов или объектов кусками
Да
Да
Максимальное количество кусков для загрузки
50000
10000
Минимальный размер куска
Нет
5 Мб
Определение метаданных в момент загрузки
Да
Да
Определение ACL в момент загрузки
N/A
Да
Определение, нужно ли использовать ограниченную избыточность, в момент загрузки
N/A
Да
Загрузка с условием
Да
Нет
Загрузка блобов или объектов с использованием HTML-форм и POST
Нет
Да
Скачивание блобов или объектов
Да
Да
Скачивание блобов или объектов кусками
Да
Да
Переопределение заголовков ответа при скачивании блобов или объектов
Нет
Да
Скачивание и распространение блобов или объектов через Torrent
Нет
Да
Получение ACL для блобов или объектов
Нет
Да
Определение ACL для блобов или объектов
Нет
Да
Получение свойств блобов или объектов
Да
Да
Определение свойств блобов или объектов
Да
Нет
Получение определенных пользоваетелем метаданных для блобов или объектов
Да
Да
Определение собственных метаданных для блобов или объектов
Да
Нет
Удаление блобов или объектов
Да
Да
Поддержка Multi Factor Authentication (MFA) delete
Нет
Да
Удаление по условию
Да
Нет
Удаление нескольких блобов или объектов одним запросом
Нет
Да
Копирование блобов или объектов
Да
Да
Копирование по условию
Да
Да
Создание read-only снапшота блоба или объектов
Да
Нет
Получение эксклюзивного лока (lock) на блобе или объекте
Да
Нет


Примечание от переводчика
Несмотря на молодость (по отношению к конкуренту) платформы Windows Azure, Microsoft постарались на славу — между двумя платформами сохраняется относительное равенство в функциональности, и это не может не радовать. Мне очень интересно наблюдать за развитием обеих платформ, и я думаю, что дальше будет ещё интереснее. Кстати, 7 июня Microsoft выкатят глобальные обновления — не пропустите, будет очень классно, как знакомый с нововведениями вам говорю! Мне кажется, что соревнование облачных платформ набирает новый виток, и дальше всё будет зависеть от того, насколько верный вектор развития будет выбран Amazon и Microsoft. Поживем — увидим. Следующий перевод будет посвящён сравнению Windows Azure Blob Services и Google Cloud Service.

UPD: упустил появление Trust Services для Windows Azure: уже сейчас есть возможность шифрования на стороне сервера — подробнее.
Теги:
Хабы:
Всего голосов 18: ↑17 и ↓1+16
Комментарии4

Публикации

Истории

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань