Добрый день, уважаемые коллеги.
Предлагаю вам ознакомиться с переводом очередной части сравнения сервисов хранилища двух известнейших облачных платформ. Остальные переводы будут выкладываться по мере оформления.
Первая часть цикла — Сравнение Windows Azure Table Storage и Amazon DynamoDB
В этом цикле статей я хочу сравнить основную функциональность Windows Azure Blob Storage Service и Amazon Simple Storage Service (S3). В этой части мы посмотрим на основные концепции, ценообразование и сравним функциональность контейнеров блобов и корзин. В части II мы будем сравнивать блобы и объекты. В части III я приведу выводы, в части IV — сравнение Windows Azure Blob Storage и Google Cloud Storage.
Аббревиатуры: Windows Azure Blob Storage — WABS, Amazon Simple Storage Service – AS 3.
Концептуально WABS и AS3 представляют из себя похожие по функциональности системы. Кратко говоря, обе системы можно рассматривать как файловую систему в облаке, в которой пользователь хранит большие объемы неструктурированных данных (обычно в виде файлов).
В обеих системах вы можете создать один или более контейнеров блобов или корзин, которые будут содержать ноль или более блобов или объектов.
Обе системы предоставляют REST API для работы с очередями и сообщениями и другими библиотеками высокоуровневых языков, которые обычно представляют из себя врапперы REST API. Обе системы имеют временную конвенцию именования версий – на момент написания этой статьи версия API WABS имеет версию 2011-08-18, AS3 — 2006-03-01.
В целом обе системы предоставляют похожие функции, некоторые из которых приведены ниже:
- Обе системы по сути являются файловыми системами в облаке с двумя уровнями иерархии.
- Обе системы позволяют осуществлять надежное и дешевое хранение больших объемов данных.
- Обе системы позволяют защищать содержимое от несанкционированного доступа.
- Обе системы позволяют хранить множество версий одного объекта, однако механизм версионирования работает в каждой системе по-своему.
- Обе системы позволяют выставлять содержимое контейнеров блобов и корзин через соответствующие сети доставки данных (CDN) для уменьшения задержек и кэширования содержимого.
- Обе системы предоставляют механизмы контроля доступа для защиты данных. AS3 имеет несколько опций (Amazon Identity and Access Management (IAM), Bucket Policies, ACLs and Query String Authentication), тогда как WABS предоставляет защиту на основе сигнатур — ACLs and Shared Access Signatures.
Есть, конечно же, и различия:
- WABS поддерживает только протокол HTTP (с использованием REST), AS3 – HTTP (REST, SOAP) и BitTorrent для распространения содержимого по методу точка-точка.
- AS3 имеет публичные механизмы для импортирования и экспортирования очень больших объемов (Amazon Import/Export) (когда вы предоставляете Amazon диски с огромным количеством данных, а вендор уже сам загружает данные в хранилище). В WABS это пока недоступно.
- В AS3 можно указать момент, когда объект будет самоуничтожен. В WABS это пока недоступно.
- AS3 позволяет выставлять счёт клиентам основываясь на их потреблении ресурсов с использованием Amazon DevPay. Это замечательная функциональность для построения SaaS-приложений, в WABS пока недоступная. Еще одна функция, недоступная в WABS, но доступная в AS3 — Requester Pay Buckets, где пользователи, получающие доступ к данным, хранившим в ваших корзинах, платят за потребление данных.
- AS3 позволяет шифровать данные, используя Server Side Encryption (SSE). В WABS это пока недоступно.
- AS3 поддерживает virtual-hosted-style (например, http://mybucket.s3.amazon.com/myobject) и path-style (например,. http://s3-eu-west-1.amazonaws.com/mybucket/myobject), тогда как WABS поддерживает только path-style (e.g. http://myaccount.blob.core.windows.net/myblobcontainer/myblob).
- AS3 предлагает Reduced Redundancy Storage (RRS) — клиентымогут принять решение хранить данные с меньшим уровнем избыточности (99.99% долговечности и 99.99% доступности) чем стандартный уровень избыточности, предоставляемый AS3 (99.999999999% долговечности и 99.99% доступности) для сокращения затрат. Я думаю, это удобно для того, чтобы сократить затраты на хранение данных в том случае, если они не очень критичны и легковоспроизводимы. WABS предоставляет один уровень избыточности.
Концепции
Перед тем, как мы поговорим подробнее об этих двух сервисах, я считаю важным пояснить некоторые концепции. Если вы знакомы с базовыми концепциями WABS и AS3, можете пропустить этот раздел.
Контейнеры блобов и корзины: Если эти сервисы – файловые системы в облаке, рассматривайте контейнер блобов WABS и корзину AS3 как папку или директорию. В аккаунте хранилища WABS или аккаунте AS3 вы можете иметь ноль и более контейнеров блобов и корзин, которые могут содержать блобы или объекты соответственно.
Комментарии:
- Такого понятия, как вложенные контейнеры блобов или корзины, нет. Оба сервиса предоставляют двухуровневую иерархию без вложенности. Однако обе системы позволяют создать иллюзию иерархии папок с использованием префиксов.
- Ограничений на количество контейнеров и корзин нет.
- Обе системы позволяют размещать статический вебсайт в контейнере или корзине, но AS3 позволяет еще определять корневой и документ-индекс и править страницы ошибок 4хх (например, страницу ошибки 404).
- Обе системы предоставляют возможность логировать запросы ресурсов – эта функция называется в AS “logging”, в WABS – “Storage Analytics”. Разница состоит в том, что в AS3 логирование работает на уровне корзины, в WABS же – на уровне аккаунта хранилища. В AS3 данные логирования кладутся в отдельную определенную пользователем корзину, в WABS же – в предопределенные таблицы и контейнеры, которые создаются автоматически при включении логирования.
Блобы и объекты: Блобы WABS и объекты AS3 – это файлы в вашей облачной файловой системе, расположенные в контейнерах блобов и корзинах.
Комментарии:
- Отсутствует ограничение на количество хранимых блобов и объектов, при этом в AS3 это количество просто неизвестно, в WABS же это количество ограничено размером аккаунта хранилища (100 Тб).
- Максимальный размер объекта в AS3 – 5 Тб, в WABS – 1 Тб.
- В WABS есть два типа блобов – блочные, удобные для стриминга (например, картинок, видео, документов) и имеющие максимальный размер в 200 Гб, и страничные, удобные для операций случайного доступа/записи и имеющие максимальный размер в 1 Тб. Общим случаем использование страничного блоба является монтирование VHD в качестве диска в роли Windows Azure. В AS3 подобного разделения нет.
- Обе системы предоставляют богатую функциональность по управлению блобами и объектами. Вы можете копировать, загружать, скачивать и совершать другие операции.
- Обе системы предоставляют возможность защиты содержимого от неавторизованного доступа, причем механизм списков контроля доступа более подробно настраиваем в AS3, где на каждый файл в корзине можно создать собственный ACL. В WABS все происходит на уровне контейнера блобов.
Ценообразование
При использовании обеих систем отсутствуют «капитальные» затраты. Модель ценообразования относительно проста и основана на потреблении. В обеих системах счет выставляется на основе использования и он может состоять из трех компонентов:
- Количество транзакций: Оплата производится согласно количеству произведенным транзакций – грубо говоря, одна транзакция – это один вызов функции в системе. Есть существенное различие между двумя системами – в WABS стоимость транзакции фиксирована ($0.01 за 10 000 транзакций), в AS3 она варьируется в зависимости от типа транзакции. Если вы совершаете операции PUT, COPY, POST, LIST, вы платите большую цену за транзакцию ($0.01 за 1000 транзакций в US Standard Region), за GET и другие платите меньшую ($0.01 за 10 000 транзакций в US Standard Region). Все запросы на удаление в AS3 бесплатны.
- Хранилище: Вы платите за количество данных, хранимое в каждой системе. В AS3 цена зависит от уровня избыточности.
- Траффик: Вы платите за количество переданных данных в и из системы. На момент написания поста обе системы предоставляют бесплатный входящий траффик. Данные, переносимые между ADDB и Amazon EC2 внутри одного региона бесплатны. Данные, переносимые между ADDB и Amazon EC2 в разных регионах оплачиваются согласно тарифам. В WATS оплачивается только исходящий траффик.
Доступна также специальная модель ценообразования и обе системы предоставляют различные пакеты оплаты. Подробнее про ценообразование — https://www.windowsazure.com/en-us/pricing/details/ для WABS и http://aws.amazon.com/s3/pricing/ для AS3.
Функции
Рассмотрим подробнее эти функции.
WABS | AS3 | |
Create Container/PUT Bucket | Да | Да |
Эта функция создает новый контейнер блобов или корзину.
Важным моментом, который необходимо помнить, является то, что контейнеры блобов ограничиваются аккаунтом хранилища, тогда как корзины AS3 ограничиваются аккаунтом Amazon. Когда вы создаете аккаунт хранилища WABS, вы определяете его расположение (датацентр), и ваши контейнеры блобов располагаются в конкретном датацентре в конкретной географической локации. Когда вы создаете корзину в AS3, вы определяете регион, в котором будет создана эта корзина, таким образом, можно распределить корзины по всем датацентрам в AS3, если есть такая необходимость. Для того, чтобы сделать то же самое в WABS, вам нужно создать по аккаунту хранилища в каждом датацентре, в котором вы хотите разместить контейнеры.
Есть несколько правил именования контейнеров блобов и корзин, они сведены в таблицу ниже.
WABS | AS3 | |
Минимальная/максимальная длина название | 3/63 | 3/63 |
Чувствительность к регистру | Нижний регистр | Нижний регистр |
Разрешенные символы | Alphanumeric, дефис (-) | Alphanumeric, дефис (-) и точка (.) |
Ещё правила по именованию:
- Имена контейнеров блобов должны начинаться с буквы или цифры, но не с дефиса, при этом после дефиса опять же должна идти буква или цифра, несколько последовательно идущих дефисов не разрешены.
- Имена корзин AS3 должны состоять из меток, разделенных точкой, где каждая метка должна начинаться и кончаться буквой в нижнем регистре или цифрой, и имя корзины не должно выглядеть как IP-адрес (например, 127.0.0.1).
- Если вы создаете корзину в регионе US Standard, AS3 позволяет использовать менее строгие конвенции именования, разрешая использовать длину имени корзины от 3 до 255 символов и использовать смешанный регистр, цифры, точки, дефисы и подчеркивания.
Примечания:
- Если не указано явно расположение корзины в AS3, корзина будет создана в регионе US Standard.
- При создании контейнера или корзины вы можете задать ACL (опционально), если же он не указан, то контейнер или корзина становятся приватными, то есть доступными только владельцу.
- WABS позволяет определить собственные метаданные для контейнера, которые являются коллекций значений ключ-значение и имеют максимальный размер в 8 Кб. В AS3 эта функциональность недоступна.
WABS | AS3 | |
List Containers/GET Service | Да | Да |
Функция возвращает список всех контейнеров блобов или корзин.
Комментарии:
- Один вызов этой функции в WABS возвратит максимально 5000 контейнеров, если же их в аккаунте хранилища больше, то будет возвращен также continuation token. По умолчанию WABS возвращает до 5000 контейнеров, но вы можете указать и меньшее количество.
- В WABS можно совершать фильтрацию на стороне сервера с использованием префикса, с которого должны начинаться имена контейнеров, которые попадут в выборку.
- В WABS можно указать, нужно ли возвращать метаданные для контейнера блобов вместе со списком.
WABS | AS3 | |
Delete Container/DELETE Bucket | Да | Да |
Функция удаляет контейнер блобов или корзину.
Комментарии:
- Может так выглядеть, что эта операция выглядит как синхронная, в реальности же она не такая. Когда вы отправляете запрос на удаление контейнера блобов, он помечается для удаления и становится недоступным, после чего удаляется в процессе сборки мусора, поэтому реальное время удаления контейнера может варьироваться в зависимости от размера данных в этом контейнере. По моему опыту удаление очень большого контейнера может занять часы, и в это время попытка создания контейнера с таким же именем приведет к ошибке (Conflict Error – HTTP 409). В связи с этим необходимо планировать, что делать в это время.
- В AS3 корзина должна быть пустой перед удалением. Сначала необходимо удалить все объекты из корзины, после чего удалить ее.
WABS | AS3 | |
List Blobs/GET Bucket (List Objects) | Да | Да |
Функция используется для получения списка блобов и объектов в контейнере или корзине. Функции в системах выполняют одно и то же, учитывая:
- Обе функции позволяют ограничить результирующую выборку нужным количеством объектов.
- Обе функции имеют максимальное количество объектов, которое они могут возвратить за один вызов функции – в WABS это 5000, в AS3 – 1000.
- Обе функции поддерживают разделители, которые представляют из себя символ, группирующий блобы или объекты. Наиболее используемый разделитель — /. Как указывалось выше, обе системы поддерживают двухуровневую иерархию, и использование разделителя может создать иллюзию иерархию типа папки. Например, у вас есть следующие объекты: images/a.png, images/b.png, images/c.png, logs/1.txt, logs/2.txt, files.txt. Когда вы хотите вызвать функцию и передаете ей разделитель /, обе системы возвратят следующие значения: images, logs, files.txt.
- Обе функции поддерживают фильтрацию на стороне сервера с использованием префиксов. Когда ваш запрос содержит префикс, обе системы возвратят объекты, которые имеют название, которое начинается с этого префикса. Используя пример выше, если мы передадим префикс “images” без разделителей, обе системы возвратят следующие значения: images/a.png, images/b.png, images/c.png.
- Обе функции могут использовать маркер, который является, по сути, continuation token, и используется для указания обеим системам, что надо начинать получать список объектов, начиная с этого маркера.
- Обе системы возвращают объекты в алфавитном порядке.
Различия:
- Один вызов функции в WABS возвратит максимум 5000 блобов, AS3 – 1000 объектов.
- При получении списка можно указать WABS, что необходимо возвращать также снапшоты блобов. В AS3 для этого есть отдельная функция (GET Bucket Object versions).
- При получении списка можно указать WABS, что необходимо возвращать метаданные для блобов. В AS3 метаданные для блобов не поддерживаются.
- При получении списка можно указать WABS, что необходимо возвращать список блобов, которые ещё не подтверждены (commited), т.е. частично загружены, AS3 же может возвращать только те объекты, которые уже полностью загружены.
WABS | AS3 | |
Set Blob Service Properties/PUT Bucket logging | Да | Да |
Обе системы предлагают возможности по логированию запросов, и эта функция не включена по умолчанию. В WABS эта функция называется Storage Analytics и используется для всех сервисов хранилища Windows Azure – таблиц, очередей, блобов.
Различия в логировании:
- В WABS логирование включается на уровне хранилища блобов, в AS3 же – на уровне корзин. Это значит, что, когда вы включаете логирование в WABS, оно включается для всех контейнеров блобов в аккаунте хранилища, если же вы включаете логирование в AS3, оно включается только для конкретной корзины. AS3 в этом случае предоставляет более «низкоуровневую» функциональность, позволяющую включать логирование для конкретных объектов, кроме этого, можно задавать префикс, и логирование включится только для тех объектов, название которых начинается с этого префикса. Например, если у вас есть корзина с названием data и она содержит объекты images и errors, и вы добавляете ещё один объект типа siteimages, вы можете включить логирование, используя прекфикс siteimages, только для объектов типа siteimages.
- В WABS логи хранятся в определенной системой таблице в хранилище таблиц ($MetricsTransactionsBlob) и контейнерах блобов ($logs), тогда как в AS3 логи хранятся в определенной пользователем корзине.
- В WABS можно хранить до 20 Тб логов, которые могут храниться до 365 дней, после чего будут удалены (это время можно настраивать). В AS3 нет ограничений.
- В WABS только владелец аккаунта имеет доступ к этим данным, тогда как в AS3 можно реализовать механизм доступа, который будет контролировать доступ и права пользователей (Full/Read/Write) к этим данным.
WABS | AS3 | |
Get Blob Service Properties/GET Bucket logging | Да | Да |
Функция используется для получения информации о логировании. В AS3 к этой информации может получить доступ любой разрешенный пользователь, и операция возвратит информацию об этом пользователе.
WABS | AS3 | |
Set Container ACL/PUT Bucket acl | Да | Да |
Функция используется для указания ACL для контейнеров или корзин, и в WABS можно также указать одну или более политик доступа.
Для контейнера блобов значения ACL могут быть:
- Full public read access (Контейнер): Контейнер и данные блобов могут быть прочитаны анонимно. Клиенты могут получать список блобов в контейнере в анонимном запросе, но не могут получать список контейнеров в аккаунте хранилища.
- Public read access for blobs only (Блоб): Данные блобов в контейнере с таким доступом могут быть прочитаны в анонимном запросе, но данные контейнера уже недоступны. Клиенты не могут получать список блобов внутри контейнера в анонимном запросе.
- No public read access (Личный): Данные контейнера и блобов могут быть получены только владельцем аккаунта.
Для корзин значения ACL могут быть равны:
- READ: Разрешено получение списка объектов в корзине.
- WRITE: Разрешено создание, перезапись и удаление объектов в корзине.
- READ_ACP: Разрешено получение ACL корзины.
- WRITE_ACP: Разрешена запись в ACL корзины.
- FULL_CONTROL: С этим значением предоставляются разрешения READ, WRITE, READ_ACP, WRITE_ACP.
Удобным в AS3 является то, что можно дать пользователям различные наборы разрешений, например, user1 может иметь READ ACL, user2 – WRITE ACL, в WABS такой гибкости нет, разрешения ставятся только на контейнер блобов.
Удобным в WABS является то, что помимо ACL можно задавать до 5 политик доступа к контейнеру, которые определяют временной набор разрешений к этому контейнеру. Например, можно создать политику доступа с разрешением на запись на контейнер блобов, которая будет действовать только день. Использование политик позволяет генерировать специальный URL с сигнатурой и выдавать его пользователям (гибкая функциональность Shared Access Signatures). Сигнатуры позволяют выдать права на доступ на контейнеры и блобы на более детальном уровне на определенное время.
WABS | AS3 | |
Get Container ACL/GET Bucket acl | Да | Да |
Функция используется для получения ACL для контейнера блобов или корзины, и в WABS эта функция также возвращает политики доступа, определенные для контейнера.
WABS | AS3 | |
List Blobs/GET Bucket Object versions | Да | Да |
Обе системы поддерживают версионирование – в WABS версионирование блобов (снапшоты), в AS3 – объектов, однако используют для этого различные механизмы. В AS3 функция возвращает только версионированные объекты, в WABS версионированные объекты можно также получить с использованием List Blobs (см. выше).
Полезный совет: Если вы хотите получить список только снапшотов или версии одного объекта в AS3, вы можете использовать эту функцию, передав ей полное имя объекта как префикс.
WABS | AS3 | |
List Blobs/List Multipart Uploads | Да | Да |
Обе системы поддерживают загрузку блобов и объектов по частям. В WABS при загрузке блоков блобов можно разделить блобы на блоки и загрузить эти блоки, после чего подтвердить их и сделать блоб доступным для использования. В AS3 вы можете загрузить объект, разделив его на множество частей и загрузив их, после чего подтвердить и сделать объект доступным для использования.
List Multipart Uploads в AS3 сообщает вам о том, какие из частей объекта загружаются, как они разделены и статус загрузки, однако не сообщает о том, какие были загружены, а какие нет. В WABS можно реализовать аналогичную функциональность, используя List Blobs (указав WABS, что вместе с подтвержденными блобами необходимо также возвращать и неподтвержденные.
WABS | AS3 | |
Set Container Metadata | Да | Нет |
Функция используется для указания словаря метаданных в виде коллекции записей ключ-значение для контейнера блобов в WABS.
Комментарии:
- Функция перезаписывает существующие метаданные, поэтому нельзя просто обновить одну пару ключ-значение.
- Максимальный размер метаданных равен 8 Кб.
- Имя метаданных должно быть разрешенным идентификатором C#.
WABS | AS3 | |
Get Container Metadata | Да | Нет |
Функция используется для получения метаданных, определенных для контейнера блобов.
WABS | AS3 | |
PUT Bucket versioning | Нет | Да |
Версионирование позволяет управлять несколькими копиями объекта. Эта функция позволяет включить версионирование на объектах в корзине и, если будет совершена одна из операций PUT, POST, COPY, DELETE, будет создана новая версия объекта. По умолчанию эта функциональность выключена.
WABS поддерживает похожую функциональность “Snapshot Blob”, вызов которой создает копию только для чтения текущей версии блоба.
Различия в версионировании в двух системах:
- В AS3 версионирование указывается на уровне корзины и после включения версионирования оно применяется ко всем объектам в этой корзине. В WABS функциональность Snapshot Blob работает на уровне блоба и необходимо явно вызывать ее на блобах, к которым необходимо включить версионирование. В этом смысле WABS предоставляет более гибкую систему версионирования, однако это налагает также на разработчика ответственность по созданию снапшотов блобов.
- В WABS при удалении блоба удаляются все его снапшоты. В AS3 это не так.
- В WABS вы платите только за блоки снапшота, которые отличаются от блоков в исходном блобе. В AS3 каждая версия объекта рассматривается как объект, и оплата производится за каждый из них.
WABS | AS3 | |
GET Bucket versioning | Нет | Да |
Функция используется для получения состояния версионирования (Enabled или Suspended) для корзины в AS3. Возвращает пустой результат, если состояние версионирования никогда не менялось.
WABS | AS3 | |
PUT Bucket lifecycle | Нет | Да |
В AS3 эта функция позволяет указать, необходимо ли удалять объекты из корзины автоматически по прошествии определенного времени. Например, вы храните логи как объекты в корзине, и хотите, чтобы они автоматически удалялись через 30 дней.
По умолчанию объекты хранятся в корзинах до момента их удаления пользователем.
Эта функция применяется на уровне папки. Например, вы храните логи доступа и ошибок в корзине «logs» в соответствующих папках «accesslogs» и «errorlogs». Используя эту функцию, вы можете определить, что объекты в папке «accesslogs» будут удаляться по прошествии определенного времени (используя префикс).
Нельзя использовать, если вы хотя бы раз включали версионирование на конкретной корзине.
WABS | AS3 | |
GET Bucket lifecycle | Нет | Да |
Функция возвращает информацию о конфигурации жизненного цикла (см. выше про автоматическое удаление).
WABS | AS3 | |
DELETE Bucket lifecycle | Нет | Да |
Функция удаляет конфигурацию жизненного цикла, привязанную к корзине.
WABS | AS3 | |
PUT Bucket policy | Нет | Да |
AS3 предоставляет несколько механизмов по защите корзин и объектов от несанкционированного доступа, одним из которых является политика корзины. Для этого просто необходимо воспользоваться этой функцией и положить политику корзины куда надо. С политикой корзины владелец корзины может:
- Указать любое из разрешений уровня корзины.
- Указать разрешения доступа на любых объектах в корзине.
Подробнее про политики корзин тут.
WABS | AS3 | |
GET Bucket policy | Нет | Да |
Функция возвращает политику, установленную на корзину.
WABS | AS3 | |
DELETE Bucket policy | Нет | Да |
Функция удаляет политику, установленную на корзину.
WABS | AS3 | |
PUT Bucket notification | Нет | Да |
AS3 может отправлять сообщения в Amazon Simple Notification Service (SNS), если случается какое-либо важное событие в жизни корзины. Подписчики SNS могут получать эти сообщения, которые могут доставляться на веб-сервер, e-mail, Amazon Simple Queue Service.
В текущей реализации можно использовать уведомления только для одного события: “s3:ReducedRedundancyLostObject”, которое возникает при потере всех реплик объекта и, соответственно, отсутствии возможности обращаться к этому объекту.
Функция используется для включения или выключения уведомлений об изменении состояния корзины.
WABS | AS3 | |
GET Bucket notification | Нет | Да |
Функция возвращает конфигурацию уведомлений корзины.
WABS | AS3 | |
PUT Bucket requestPayment | Нет | Да |
В обычной ситуации владелец корзины платит за скачивания из корзины, однако AS3 предлагает переложить эту обязанность на другого пользователя — владелец корзины может настроить так, чтобы за скачивание из корзины платил другой аккаунт. Эта функция используется для, в том числе, определения, что человек, запросивший скачивание, должен будет заплатить за это скачивание. Подробнее тут.
WABS | AS3 | |
GET Bucket requestPayment | Нет | Да |
Функция возвращает конфигурацию по запросу оплаты (см. выше) для корзины.
WABS | AS3 | |
PUT Bucket website | Нет | Да |
Ещё одной удобной функцией в AS3 является возможность размещения статических веб-сайтов в корзинах, что можно делать и в WABS, но в WABS нельзя определить страницу, которая будет открываться по умолчанию, страницу ошибки и привязать какое-либо доменное имя к размещаемому веб-сайту (что можно сделать в AS3). Подробнее тут.
Функция позволяет сконфигурировать корзину для использования в качестве статического веб-сайта и указать страницы по умолчанию и страницы ошибок (например, для ошибки 404).
WABS | AS3 | |
GET Bucket website | Нет | Да |
Функция возвращает конфигурацию корзины как статического веб-сайта.
WABS | AS3 | |
DELETE Bucket website | Нет | Да |
Функция удаляет конфигурацию корзины как статического веб-сайта.
WABS | AS3 | |
HEAD Bucket | Нет | Да |
Функция позволяет определить, существует ли корзина и имеет ли пользователь разрешения на доступ к этой корзине.
Резюме
Концептуально оба сервиса предоставляют аналогичную функциональность, но Amazon S3 является более «богатым» на функции, отчасти из-за того, что у Amazon было на 2+ года больше на разработку системы. Я очень надеюсь, что Windows Azure Blob Storage нагонит S3 и реализует отсутствующие очень нужные функции. Лично я люблю такие функции S3, как:
- Возможность размещения статических веб-сайтов.
- Гибкий контроль доступа.
- Автоматическое удаление содержимого.
- Более «богатое» версионирование – даже если удаляется исходник, его копии остаются.
- Что-то похожее на Reduced Redundant Storage.
Однако было бы замечательно увидеть и такие функции, как:
- Возможность удалить корзину без удаления объектов, хранящихся в ней. Мне кажется, это накладывает большой overhead.
- Объединение некоторых функций. Например, Get Bucket, Get Bucket versioning, и List Multipart Uploads можно было бы легко объединить в одну функцию.
Примечание от переводчика:
Насколько я знаю, для Windows Azure создан отдельный сайт, называющийся http://www.mygreatwindowsazureidea.com, где пользователи голосуют за разработку необходимых им фич, и Microsoft действительно реагирует на запросы пользователей. Для платформы Amazon, к сожалению, я не нашел подобной площадки, что не является хорошей практикой – в случае именно облачных платформ, которые являются гигантскими программными комплексами, ориентироваться на мнение пользователей очень важно. Если у Amazon есть подобные механизмы взаимодействия с пользователями, прошу указать в комментариях. В целом же спорить не с чем – в контексте первого уровня иерархии файловой системы (контейнеры блобов и корзины) Amazon выигрывает за счёт более богатой функциональности. Скоро я выложу переводы остальных статей, и из них станет понятно, что в остальных аспектах сравнения сохраняется относительный паритет.
Автор: ahriman