Comparing Windows Azure Blob Storage and Amazon Simple Storage Service (S3)–Part I

Good afternoon, ladies and gentlemen.
I suggest you read the translation of the next part of the comparison of the services of the storage of two well-known cloud platforms. Other translations will be posted as registration.
the First part of a cycle — Comparing of Windows Azure Table Storage and Amazon DynamoDB
In this series I want to compare the basic functionality of Windows Azure Blob Storage Service and Amazon Simple Storage Service (S3). In this part we will look at basic concepts, pricing and compare the functionality of BLOB containers and baskets. In part II we will compare the blobs and objects. In part III I will give the conclusions in part IV — comparing of Windows Azure Blob Storage and Google Cloud Storage.

Abbreviations: Windows Azure Blob Storage — WABS, Amazon Simple Storage Service – AS 3.
Conceptually WABS and AS3 are similar in the functionality of the system. In short, both systems can be viewed as a file system in the cloud, in which the user stores large amounts of unstructured data (usually as files).
In both systems you can create one or more BLOB containers or baskets that will contain zero or more blobs or objects.
Both systems provide a REST API for working with queues and messages and other libraries of high-level languages, which are usually wrappers of the REST API. Both systems have a temporary Convention of naming versions – at the time of this writing, the version of the API WABS has a version 2011-08-18, AS3 — 2006-03-01.

In General, both systems provide similar functionality, some of which are given below:
the
    the
  • Both systems are essentially file systems in the cloud with two levels of hierarchy.
  • the
  • Both systems allow for reliable and cheap storage of large volumes of data.
  • the
  • Both systems allow you to protect content from unauthorized access.
  • the
  • Both systems allow you to store multiple versions of the same object, but the versioning mechanism works in each system on its own.
  • the
  • Both systems allow to set the contents of the container blobs and baskets through relevant content delivery networks (CDNs) to reduce latency and caching of content.
  • the
  • Both systems provide access control mechanisms to protect data. AS3 has several options (Amazon Identity and Access Management (IAM), Bucket Policies, ACLs and Query String Authentication), whereas WABS provides protection on the basis of the signature ACLs and Shared Access Signatures.

There are, of course, different:
the
    the
  • WABS only supports HTTP (using REST), AS3 – HTTP (REST, SOAP) and BitTorrent for content distribution by the method of point-to-point.
  • the
  • AS3 has public mechanisms to import and export very large volumes (Amazon Import/Export) (when you provide Amazon drives with huge amounts of data, and vendor data already loaded in the repository). In WABS it while are inaccessible.
  • the
  • In AS3 you can specify the time when the object will self-destruct. In WABS it while are inaccessible.
  • the
  • AS3 allows to invoice the clients based on their resource consumption with the use of Amazon DevPay. This is a wonderful functionality to build SaaS applications in WABS yet available. Another feature that is not available in WABS, but available in AS3 — Requester Pay Buckets, where users who access the data stored in your basket, pay for data consumption.
  • the
  • AS3 allows you to encrypt data using Server Side Encryption (SSE). In WABS it while are inaccessible (now available — Trust Services).
  • the
  • AS3 supports virtual-hosted-style (for example, http://mybucket.s3.amazon.com/myobject) and path-style (for example,. http://s3-eu-west-1.amazonaws.com/mybucket/myobject)whereas WABS supported only path-style (e.g. http://myaccount.blob.core.windows.net/myblobcontainer/myblob).

the Concept


Before we talk more about these two services, I think it is important to clarify some concepts. If you are familiar with basic concepts of WABS and AS3, you can skip this section.
the Containers and blobs basket: If these services – file systems in the cloud, consider the container blobs WABS and AS3 as the trash folder or directory. In the account vault or WABS account AS3 you can have zero or more BLOB containers and buckets, which can contain blobs or objects respectively.
Comments:
the
    the
  • Such thing as nested containers or blobs basket, no. Both services provide a two-level hierarchy without nesting. However, both systems can create the illusion of folder hierarchy using prefixes.
  • the
  • Restrictions on the number of containers and baskets.
  • the
  • Both systems allow you to host a static website in the container or basket, but AS3 allows you to define the root and the document-index and rule of 4хх error pages (e.g. 404 error page).
  • the
  • Both systems provide the ability to log resource requests – this function is called in AS “logging”, in WABS – “Storage Analytics”. The difference is that in AS3 logging works at the level of the basket, in WABS – in the account level of the storage. In AS3 the data logging placed in a separate user-defined basket, in WABS – in predefined tables and containers that are created automatically when you enable logging.

the Blobs and objects: Blobs WABS and AS3 objects are files in your cloud file system, located in the blobs containers and baskets.
Comments:
the
    the
  • has no limit to the number of stored blobs and objects in AS3 is the number simply not known, in WABS is the number limited by the size of the storage account (100 TB).
  • the
  • Maximum size of an object in AS3 – 5 TB, in WABS is 1 TB.
  • the
  • IN WABS there are two types of blobs – block, convenient for streaming (e.g., images, video, documents) and having a maximum size of 200 GB, and page, convenient for random access/write and a maximum size of 1 TB. Generally, the use of a page BLOB is a VHD mounted as a disk in an Azure role. In AS3 this separation.
  • the
  • Both systems provide rich functionality for managing blobs and objects. You can copy, upload, download and perform other operations.
  • the
  • Both systems provide the ability to protect content from unauthorized access, and the mechanism of access control lists in more detail the custom in AS3 where each file in the basket you can create your own ACL. In WABS all happens at the container level blobs.

Pricing


If both systems are no capital costs. The pricing model is relatively simple and based on consumption. Both systems are billed based on usage and it may consist of three components:
    the
  1. Number of transactions: the Payment is made according to the number of completed transactions – roughly speaking, one transaction is one function call in the system. There is a significant difference between the two systems – in WABS the cost of the transaction is fixed ($0.01 for 10 000 transactions), in AS3 it varies depending on the type of transaction. If you are doing transactions PUT, COPY, POST, LIST, you pay a big price for transaction ($0.01 for 1000 transactions in US Standard Region), for GET and others pay a smaller ($0.01 for 10 000 transactions in US Standard Region). All removal requests in AS3 free.
  2. the
  3. Storage: You pay for the amount of data stored in each system. In AS3 the price depends on the level of redundancy.
  4. the
  5. Traffic: You pay for the amount of data transferred in and out of the system. At the time of writing this post, both systems provide free incoming bandwidth. Data transferred between ADDB and Amazon EC2 within a single region is free. Data transferred between ADDB and Amazon EC2 in different regions are paid according to the tariffs. In WATS you pay only for outgoing traffic.
  6. Also available special pricing model and the two systems provide different packages of payment. Read more about pricing — https://www.windowsazure.com/ru-ru/pricing/details/ for WABS and http://aws.amazon.com/s3/pricing/ for AS3.

    Options


    the the the the the the the the the the the the the the the the the the the the the the the the the the the the the
    WABS
    AS3
    Create Container/Bucket PUT
    Yes
    Yes
    List Containers/GET Service
    Yes
    Yes
    Container Delete/DELETE Bucket
    Yes
    Yes
    List Blobs/GET Bucket (List Objects)
    Yes
    Yes
    Set Blob Service Properties/PUT Bucket logging
    Yes
    Yes
    Get Blob Service Properties/GET Bucket logging
    Yes
    Yes
    Set Container ACL/PUT Bucket acl
    Yes
    Yes
    Get Container ACL/GET Bucket acl
    Yes
    Yes
    List Blobs/GET Bucket Object versions
    Yes
    Yes
    List Blobs/List Multipart Uploads
    Yes
    Yes
    Set Container Metadata
    Yes

    Get Container Metadata
    Yes

    PUT Bucket versioning
    No
    UDA
    GET Bucket versioning
    No
    Da
    PUT Bucket lifecycle
    No
    Yes
    GET Bucket lifecycle
    No
    Yes
    DELETE Bucket lifecycle
    No
    Da
    PUT Bucket policy
    No
    Yes
    GET Bucket policy
    No
    Yes
    DELETE Bucket policy

    Yes
    PUT Bucket notification
    No
    Da
    GET Bucket notification
    No
    Da
    PUT Bucket requestPayment
    No
    Yes
    GET Bucket requestPayment
    No
    Yes
    PUT Bucket website
    No
    Yes
    GET Bucket website
    No
    Yes
    DELETE Bucket website
    No
    Yes
    Bucket HEAD
    No
    Yes

    Let us consider these functions.
    the the

    WABS
    AS3
    Create Container/Bucket PUT
    Yes
    Yes

    This function creates a new BLOB container or basket.
    An important point to keep in mind is that the containers of the blobs are limited to the account of storage whereas baskets of AS3 are limited to the Amazon account. When you create an account store WABS, you define its location (data center), your containers and blobs are located in specific data centers in specific geographic locations. When you create a shopping cart in AS3, you can determine the region in which to create this basket, so you can distribute the baskets on all data-centers in AS3 if there is such a need. In order to do the same in WABS, you need to create the storage account in each datacenter in which you want to place the containers.
    There are a few rules of naming containers, blobs and baskets, they are summarized in the table below.
    the the the the
    WABS
    AS3
    min/max length name
    3/63
    3/63
    case Sensitivity
    Lower case
    Lower case
    Allowed characters
    Alphanumeric, hyphen (-)
    Alphanumeric, hyphen (-) and dot (.)

    More rules for naming:
    the
      the
    • container Names of the blobs must begin with letters or numbers, but not with the hyphen after hyphen should be a letter or digit, multiple consecutive dashes are not allowed.
    • the
    • the names of the baskets AS3 should consist of labels separated by a point where each label should begin and end with a lowercase letter or a digit, and the name of a basket should not look as the IP address (e.g. 127.0.0.1).
    • the
    • If you create a bin in the US Standard region, AS3 allows you to use a less strict naming conventions, allowing you to use the name of the basket from 3 to 255 characters and use mixed case, numbers, periods, hyphens, and underscores.

    Notes:
    the
      the
    • Unless specified explicitly the location of the basket in AS3, cart will be created in the US Standard region.
    • the
    • When creating a container or basket you can set the ACL (optional) if not specified, the container or basket be private, i.e. accessible only to the owner.
    • the
    • WABS allows you to define custom metadata for a container, which are collections of values of key-value and have a maximum size of 8 KB. In AS3 this functionality is not available.

    the the
    WABS
    AS3
    List Containers/GET Service
    Yes
    Yes

    The function returns a list of all BLOB containers or baskets.
    Comments:

    the
      the
    • a Single call to this function in WABS will return a maximum of 5,000 containers, if they are in the account store more, it will be also returned continuation token. By default WABS will return up to 5,000 containers, but you may specify fewer.
    • the
    • IN WABS, you can make filtering on the server side using the prefix to begin the names of the containers that fall into the sample.
    • the
    • IN WABS, you can specify whether to return the metadata for the container blobs.

    the the

    WABS
    AS3
    Container Delete/DELETE Bucket
    Yes
    Yes

    The function removes the blobs container or basket.
    Comments:
    the
      the
    • May look like that this looks like a synchronous operation, in reality she is not. When you send a request to remove the container's blobs, it is marked for deletion and is not available, then removed in the garbage collection process, so the real time removal of the container may vary depending on the size of the data in this container. In my experience, deleting a very large container can take hours, and during this time an attempt to create a container with the same name will result in an error (Conflict Error – HTTP 409). In this connection, you need to plan what to do at this time.
    • the
    • In AS3 basket must be empty before deleting. you must First remove all objects from the recycle bin, then delete it.

    the the

    WABS
    AS3
    Yes
    Yes

    Function is used to retrieve a list of blobs within the container or cart. Functions the systems perform the same, given:
    the
      the
    • Both functions allow you to limit the resulting sample of the desired number of objects.
    • the
    • Both functions have a maximum number of objects they can return in one function call – in WABS it 5000, AS3 – 1000.
    • the
    • Both functions support separators which are a symbol grouping of the blobs or objects. The most used delimiter is /. As mentioned above, both systems support two-level hierarchy, and the use of a separator can create the illusion of the type hierarchy of folders. For example, you have the following objects: images/a.png, images/b.png, images/c.png, logs/1.txt, logs/2.txt, files.txt. When you want to call the function and pass it the delimiter /, both systems will return the following values: images, logs, files.txt.
    • the
    • Both functions support filtering on the server side using prefixes. When your query has a prefix, both systems will return objects that have a name starting with this prefix. Using the example above, if we transfer the prefix “images” without the separators, both systems will return the following values: images/a.png, images/b.png, images/c.png.
    • the
    • Both functions can use the token, which is, in fact, a continuation token, used to indicate both operating systems, you need to start to get a list of objects starting with this token.
    • the
    • Both systems return objects in alphabetical order.

    Differences:

    the
      the
    • Single function call in WABS will return a maximum of 5000 blobs, AS3 – 1000 objects.
    • the
    • When listing you can specify WABS that it is necessary to return also snapshots of blobs. In AS3 there is a specific function (GET Bucket Object versions).
    • the
    • When listing you can specify WABS that it is necessary to return the metadata for the blobs. In AS3 metadata for blobs are not supported.
    • the
    • When listing you can specify WABS that it is necessary to return the list of blobs that have not yet committed (commited), i.e., partially loaded, AS3 can return only those objects that are already fully loaded.


    the the

    WABS
    AS3
    Set Blob Service Properties/PUT Bucket logging
    Yes
    Yes


    Both systems offer opportunities for logging requests, and this feature is not enabled by default. In WABS this function is called Storage Analytics and is used for all services Windows Azure storage tables, queues, blobs.

    The differences in the logs:

    the
      the
    • IN WABS the logging is enabled at the store level blobs, in AS3 the same – at the level of the baskets. This means that when you turn on logging in WABS, it is enabled for all BLOB containers in a storage account, if you include logging in AS3, it is only enabled for specific baskets. AS3 in this case provides a more "low-level" functionality that allows you to turn on logging for specific sites, in addition, you can define a prefix, and logging will be enabled only for those objects which name starts with this prefix. For example, if you have a basket called data and it contains objects and images errors, and you add another object of type siteimages, you can enable logging using prefix siteimages, only for objects of type of siteimages.
    • the
    • IN WABS logs are stored in a system table in table storage ($MetricsTransactionsBlob) containers and blobs ($logs), whereas in AS3 logs are stored in a user-defined basket.
    • the
    • IN WABS only the account owner has access to this data, while in AS3 it is possible to realize an access mechanism that will control access and user rights (Full/Read/Write) to this data.


    the the

    WABS
    AS3
    Get Blob Service Properties/GET Bucket logging
    Yes
    Yes


    Function is used to retrieve information about the logging. In AS3 this information can be accessed by any permitted user, and the operation will return information about that user.
    the the

    WABS
    AS3
    Set Container ACL/PUT Bucket acl
    Yes
    Yes


    Function is used to specify the ACL for containers or baskets, and in WABS it is also possible to specify one or more access policies.
    For the container blobs ACL values can be:
    the
      the
    • Full public read access (Container): a Container and data blobs can be read anonymously. Clients can obtain a list of blobs in the container in anonymous request, but are unable to list containers in the account storage.
    • the
    • Public read access for blobs only (BLOB): the Data of the blobs in the container can be read in the anonymous request, but container data is no longer available. Clients are unable to list the blobs within the container in anonymous request.
    • the
    • No public read access (Private): the Data of the container and the blobs can be obtained only by the account owner.

    For basket values of ACL can be equal to:

    the
      the
    • READ: Allow to retrieve a list of objects in the basket.
    • the
    • WRITE: Allow create, overwrite, and delete objects in the basket.
    • the
    • READ_ACP: allows receiving of ACL of a basket.
    • the
    • WRITE_ACP is Allowed entry in the ACL of the basket.
    • the
    • FULL_CONTROL: With this meaning grants permission to READ, WRITE, READ_ACP, WRITE_ACP.


    Easy to AS3 is that you can give users different sets of permissions, for example, user1 could to have READ ACL, user2 – WRITE ACL, in WABS of such flexibility, no resolution shall be put only on the container blobs.

    Easy to WABS is that in addition to the ACL, you can specify up to 5 access policies on the container that define a temporal permission set to this container. For example, create access policy with write permission on a container of blobs, which will operate only the day. The use of policies allows you to generate a special URL with the signature and give it to the users (functionality flexible Shared Access Signatures). Signatures allow you to give access rights to containers and blobs at a more granular level for a certain time.
    the the
    WABS
    AS3
    Get Container ACL/GET Bucket acl
    Yes
    Yes


    The function is used to retrieve the ACL for a BLOB container or baskets, and in WABS, this function also returns the access policy defined for the container.
    the the

    WABS
    AS3
    List Blobs/GET Bucket Object versions
    Yes
    Yes


    Both systems support versioning in WABS versioning of blobs (snapshots), in AS3 objects, but use different mechanisms. In AS3, the function returns only versiononline objects in WABS versiononline objects can also be obtained using the List Blobs (see above).
    the Helpful hint: If you want to list only snapshots or versions of the same object in AS3, you can use this function, passing it the full name of the object as the prefix.

    the the

    WABS
    AS3
    List Blobs/List Multipart Uploads
    Yes
    Yes


    Both systems support the uploading of blobs and objects in parts. In WABS when you download block blobs can be split blobs into blocks and load these blocks, and then confirm and make the BLOB available for use. In AS3 you can load an object by dividing it into many parts and downloading them, and then confirm and make the object available for use.
    List Multipart Uploads in AS3 gives you an indication of which parts of the object are loaded as they are separated and the status of the download, but does not report on what was uploaded and what not. In WABS, you can implement similar functionality using the List Blobs (in WABS putting that together with proven blobs must also return unconfirmed.
    the the

    WABS
    AS3
    Set Container Metadata
    Yes


    Function is used to specify the dictionary metadata in a collection of records a key value for the container blobs in WABS.

    Comments:

    the
      the
    • Function overwrites the existing metadata, so you can't just upgrade one pair key-value.
    • the
    • Maximum metadata size is 8 KB.
    • the
    • metadata Name must be authorized by C# identifier.

    the the

    WABS
    AS3
    Get Container Metadata
    Yes


    Function is used to retrieve metadata defined for the container blobs.
    the the

    WABS
    AS3
    PUT Bucket versioning

    Da

    Versioning allows you to manage multiple copies of the object. This feature allows you to enable versioning for the objects in the basket and, if you have committed one of the operations PUT, POST, COPY, DELETE, create a new version of the object. By default this functionality is turned off.

    WABS supports similar functionality “Snapshot Blob”, which creates a read-only copy of the current version of the BLOB.

    The difference in versioning in two systems:

    the
      the
    • In AS3 versioning is specified on the level of the basket and after you enable versioning, it applies to all objects in this basket. In WABS the functionality of Snapshot Blob runs on BLOB level and you must explicitly call it on the blobs to which you want to enable versioning. In this sense, WABS also provides a more flexible versioning system, but it also imposes on the developer the responsibility for creating snapshots of blobs.
    • the
    • IN WABS when you delete the BLOB deletes all its snapshots. In AS3 it is not.
    • the
    • IN WABS, you only pay for the snapshot blocks that differ from blocks in the source BLOB. In AS3, every object is considered as an object, and you pay for each of them.

    the the
    WABS
    AS3
    GET Bucket versioning

    Da

    Function used to get the versioning state (Enabled or Suspended) for a basket in AS3. Returns an empty result if versioning has never changed.
    the the

    WABS
    AS3
    PUT Bucket lifecycle

    Yes

    In AS3 this function allows you to specify whether you want to remove objects from the trash automatically after a certain period of time. For example, you store the logs as objects in the recycle bin and want them automatically deleted after 30 days.

    By default, objects are stored in bins prior to their removal by the user.
    This function is applied at the folder level. For example, you store the access logs and error in the basket of "logs" in the respective folders "accesslogs" and "errorlogs". Using this function, you can specify that the objects in the folder "accesslogs" will be deleted after a certain time (using a prefix).
    You cannot use if you have ever turned on versioning for a specific basket.
    the the
    WABS
    AS3
    GET Bucket lifecycle

    Yes

    The function returns information about the configuration of the life cycle (see above about auto-delete).
    the the

    WABS
    AS3
    DELETE Bucket lifecycle

    Da

    The function removes the configuration lifecycle, tied to the cart.
    the the

    WABS
    AS3
    PUT Bucket policy

    Yes

    AS3 provides several mechanisms to protect the baskets and objects from unauthorized access, one of which is the policy basket. Just need to use this function and put a basket policy where necessary. Policy basket owner basket can:

    the
      the
    • to Specify any of the permissions level of the basket.
    • the
    • to Specify access permissions on any objects in the recycle bin.


    Read more about policies basket here.

    the the

    WABS
    AS3
    GET Bucket policy

    Yes

    The function returns a policy that is installed on the cart.
    the the
    WABS
    AS3
    DELETE Bucket policy

    Yes

    The function deletes the policy application installed on the cart.
    the the
    WABS
    AS3
    PUT Bucket notification

    Da

    AS3 can send messages in Amazon Simple Notification Service (SNS), when some important event in the life of the basket. The SNS subscribers can receive these messages Article based on information from habrahabr.ru

Комментарии

Популярные сообщения из этого блога

Why I left Google Zurich

2000 3000 icons ready — become a sponsor! (the table of orders)

New web-interface for statistics and listen to the calls for IP PBX Asterisk