Windows Azure Blob StorageとAmazon Simple Storage Service(S3)の比較–パートII、概要

Windows AzureとAmazonストレージサービスを比較する2番目と3番目の部分。 最後の部分-Windows Azure Blob StorageとGoogle Cloud Storageの比較。

この記事の最初の部分では、Windows Azure Blob StorageとAmazon Simple Storage Service(S3)の比較を開始し、基本概念を確認し、BLOBコンテナーとバスケットに関する価格設定と機能を比較しました。 最初の部分を読んでください
この記事のこの部分では、ブロブとオブジェクトに関連する機能を比較し、両方のシステムのストレージサービスの比較を終了して、結果のデータを1つの共通テーブルに取り込みます。

シリーズの最初の部分-Windows AzureテーブルストレージとAmazon DynamoDBの比較
パート2-Windows Azure Blob StorageとAmazon Simple Storage Service(S3)を比較する-パートI

略語: Windows Azure Blob Storage - WABSおよびAmazon Simple Storage Service - AS3

コンセプトの



関数の詳細な説明の前に、ブロブとオブジェクトの背後にある概念のいくつかを明確にすることが重要だと思います。

BLOB とオブジェクト :WABS BLOBとAS3オブジェクトは、BLOBコンテナーとバスケットにあるクラウドファイルシステム内のファイルです。

コメント:



最も重要な2つの機能はダウンロードとダウンロードです。最初にそれらについて説明し、次に他の機能を比較することをお勧めします。

BLOBとオブジェクトの読み込み



コンテナとバスケットにブロブとオブジェクトをロードすることについて話しましょう。 ロードメカニズムは2つあります。1つのリクエストのフレームワーク内でblobまたはオブジェクトを完全にダウンロードするか、またはAS3のブロックまたはWABSページとパーツに分割することができます。

1回のリクエストでダウンロード


ダウンロードしたデータが小さく、接続速度が良い場合、1回の要求でこのデータを完全にダウンロードできます。 WABSはこれにPut Blobを使用します。 AS3- オブジェクトを入れます。

ピースをロードする


単一のリクエストで完全にロードするには非効率的なビッグデータを共有できます。 どちらのシステムでも、データを断片(WABSのブロックまたはページ、AS3のパーツ)に分割し、徐々にロードすることができます。 WABSでは、ブロックBLOBの場合、ページBLOBのPut BlockおよびPut Block Listを使用する必要があります-Put Page 。 AS3では、 マルチ パート アップロード開始パートの アップロード 、およびマルチ パート アップロードの完了またはマルチ パート アップロードの 中止機能がこれに使用されます。

チャンクでデータをロードすることを決定する理由はたくさんあります。



次に、各システムにデータを断片的にロードする方法について説明します。 たとえば、100 MBのファイルをチャンクでアップロードしたいとします。 各プラットフォームを使用するときに何をする必要があるかを見てみましょう。

綿棒


各ピースのサイズが1 MBであり(同じサイズのピースを持つ必要はないにもかかわらず)、100個のピース​​をダウンロードする必要があるとします。 ブロックBLOBを取得します。各ブロック(ピース)には一意の識別子(BlockId)があります。 ロードするには、 Put Block関数を使用します。 BlockIdは、最大サイズが64バイトのBase64エンコード文字列です。 すべてのBlockId(この例では100)は同じ長さでなければなりません。 ブロックをロードする順番は関係ありません-並行してロードできます。 ブロックをロードした後、WABSはそれをリポジトリのどこかに置き、7日間保存します。 すべてのブロックをロードした後、 Put Block Listを呼び出してこれらのブロックを確認(コミット)します。 この関数が呼び出されるまでブロブに連絡することはできません。また、7日以内にブロックを確認しないと、システムによってブロックが削除されます。 BlockIdリストの順序に基づいて関数を呼び出した後、WABSはblobを再作成し、利用可能としてマークします。 BlockIdの値は関係ありません(すべてGUIDにすることができます)が、Putブロックリストを使用するときにBlockIdを送信する順序は重要です。

制限事項:



AS3


各ピースのサイズが5 MBだとします。 各ピースには一意の識別子(パーツ番号)が割り当てられます。これにより、ピースが識別され、元のオブジェクトでの位置が決まります。 この番号は1から10000までの任意の番号にすることができますが、並べ替える必要があります。つまり、状況に応じて、0〜5 MBの部分に1、5〜10 MB-2などの番号を付ける必要があります。 ただし、これらのパーツのダウンロードを開始する場合、最初にInitiate Multipart Upload関数を呼び出す必要がありますこれにより、オブジェクトを分割して転送するプロセスが開始されたことがAS3に通知されます。 この関数は、アップロードIDを返します。 次に、各ピースに対して、 Upload Part関数を呼び出して、 Upload Idとピースの番号を渡す必要があります。ピースがダウンロードされる順序は関係ありません(並行してアップロードできます)。 すべてのピースをロードした後、 Complete Multipart Upload関数を呼び出して、ピースを確認する必要があります。 プロセスをキャンセルするには、 マルチパートアップロードを中止します。

制限事項:



BLOBとオブジェクトをダウンロードする



BLOBとオブジェクトをダウンロードするには、2つのメカニズムがあります。BLOBまたはオブジェクトを1つのリクエストで、またはピース単位でダウンロードします。

各システムには、WABSでBlob取得し 、AS3でオブジェクト取得するダウンロード機能が1つだけあります。

1回のリクエストでダウンロード


データが小さく、接続速度が良い場合は、WABSのGet BlobとAS3のGet Objectを使用してオブジェクトを完全にダウンロードできます。

分割してダウンロードする


オブジェクトが大きく、一度にダウンロードできるかどうかわからない場合は、同じ機能を使用して、Rangeヘッダーを追加し、ダウンロードに必要なバイト範囲を決定して、ピースをダウンロードできます。

ダウンロードプロセス:

  1. オブジェクトのサイズを決定します。 たとえば、100 MBの「重さ」があります。
  2. ピースのサイズを決定します。 たとえば、1 MBのピースをダウンロードすると便利です。
  3. Get BlobまたはGet Objectを呼び出し、対応する値をRangeヘッダーに渡します。 連続してダウンロードする場合、最初のリクエストにはこのヘッダーの値「0-1048575」(0-1 Mb)、2番目のリクエスト-「1048576-2097151」(1-2 Mb)などが含まれます。
  4. ダウンロードしたら、作品をどこかに置きます。
  5. すべてのピースをダウンロードした後、空の100 MBファイルを作成し、このファイルにダウンロードしたピースを入力します。


機能



両方のシステムが提供する機能を下の表にまとめています。
綿棒
AS3
Blob / PUTオブジェクトを配置
はい
はい
POSTオブジェクト
いや
はい
Get Blob / GET Object
はい
はい
オブジェクトの急流を取得
いや
はい
オブジェクトACLの取得
いや
はい
PUTオブジェクトACL
いや
はい
Blobプロパティの取得/ HEADオブジェクト
はい
はい
BLOBプロパティを設定する
はい
いや
Blobメタデータ/ヘッドオブジェクトを取得する
はい
はい
BLOBメタデータを設定する
はい
いや
Blobの削除/オブジェクトの削除
はい
はい
複数のオブジェクトを削除する
いや
はい
Blobのコピー/オブジェクトの配置-コピー
はい
はい
スナップショットBLOB
はい
いや
リースブロブ
はい
いや
マルチパートアップロードの開始
いや
はい
ブロックの配置/パートのアップロード
はい
はい
ブロックリストの配置/マルチパートアップロードの完了
はい
はい
ブロックリスト/リストパーツの取得
はい
はい
マルチパートアップロードを中止する
いや
はい
パートのアップロード-コピー
いや
はい
ページを置く
はい
いや
ページ範囲を取得する
はい
いや



これらの機能について詳しく説明します。
綿棒
AS3
Blob / PUTオブジェクトを配置
はい
はい

この関数は、ブロブをブロブコンテナーに、オブジェクトをバスケットに追加します。

コメント:


綿棒
AS3
POSTオブジェクト
いや
はい

この関数は、HTMLフォームを使用して、指定されたバスケットにオブジェクトを追加します。 POSTはPUTの代替であり、ブラウザを使用してオブジェクトをロードできます。 HTTPヘッダーを使用してPUTに渡されるパラメーターは、POSTの場合、暗号化されたmultipart / form-dataメッセージの本文として渡されます。
綿棒
AS3
Get Blob / GET Object
はい
はい

この機能により、コンテナまたはバスケットからblobをダウンロードできます。

コメント:


綿棒
AS3
オブジェクトの急流を取得
いや
はい

AS3では、BitTorrentプロトコルを使用してオブジェクトを使用できます。これにより、送信されるトラフィックの量を減らすこともできます。 BitTorrentとAS3の使用の詳細については、 こちらをご覧ください

この関数は、サイズが5 GB未満のオブジェクトでのみ呼び出すことができます。
綿棒
AS3
オブジェクトACLの取得
いや
はい

AS3では、個々のオブジェクトレベルでACLを指定できます(WABSでは、blobコンテナーレベルでのみACLを指定できます)。 この関数は、オブジェクトに指定されたACLに関する情報を取得するために使用されます。

興味深い点は、オブジェクトの異なるバージョンを使用する場合、各バージョンには個別のACLがあるということです。 オブジェクトの特定のバージョンのACLを取得するには、バージョンIDバージョン関数を関数に渡す必要があります。
綿棒
AS3
PUTオブジェクトACL
いや
はい

この関数を使用すると、オブジェクトのACLを指定できます。 前述のように、オブジェクトの各バージョンには独自のACLがあります。 オブジェクトの特定のバージョンのACLを指定するには、そのバージョンのバージョンIDを渡す必要があります。
綿棒
AS3
Blobプロパティの取得/ HEADオブジェクト
はい
はい

この関数は、BLOBプロパティとオブジェクトメタデータを取得するために使用されますが、BLOBコンテンツを返しません。

コメント:


綿棒
AS3
BLOBプロパティを設定する
はい
いや

この関数は、WABSのブロブシステムプロパティを決定します。 AS3では使用できません。 オブジェクトを作成するときは、システムプロパティのみを指定できます。

定義に使用できるプロパティには、キャッシュ制御、コンテンツタイプ、コンテンツMD5、コンテンツエンコーディング、コンテンツ言語が含まれます。 これらのプロパティをblobスナップショット用に再定義する権利はないことに注意してください。

WABSでは、この関数が正常に完了するために満たす必要がある前提条件を決定できます( If- Modified- SinceIf- Unmodified- SinceIf- MatchIf- None- Match )。
綿棒
AS3
Blobメタデータ/ヘッドオブジェクトを取得する
はい
はい

この関数は、ユーザー定義のメタデータを返します。 この関数を使用して、特定のバージョンのblobまたはオブジェクトのプロパティを取得できます。 この情報を取得するには、WABSのスナップショットBLOBの日付と時刻、およびAS3の必要なバージョンのバージョンIDを指定する必要があります。 これらのパラメーターを省略すると、現在のバージョンに関する情報が返されます。
綿棒
AS3
BLOBメタデータを設定する
はい
いや

この関数は、WABSのBLOBのキーと値のエントリのコレクションとしてメタデータディクショナリを指定するために使用されます。

コメント:


綿棒
AS3
Blobの削除/オブジェクトの削除
はい
はい

この関数は、BLOBまたはオブジェクトをリポジトリから削除します。

コメント:



・WABSでは、この機能を正常に完了するために満たす必要がある前提条件を決定できます( If- Modified- SinceIf- Unmodified- SinceIf- MatchIf- None- Match )。


綿棒
AS3
複数のオブジェクトを削除する
いや
はい

この関数を使用すると、1つのHTTPリクエストでゴミ箱から複数のオブジェクトを削除できます。このためには、削除するオブジェクトのキーを知る必要があります。 1つ以上のオブジェクトの特定のバージョンを削除することもできます。 1回のリクエストで最大1000個のオブジェクトを削除できます。
綿棒
AS3
Blobのコピー/オブジェクトの配置-コピー
はい
はい

この関数は、ブロブを元の場所からコピーします。

コメント:

・両方のシステムでは、この機能を正常に完了するために満たす必要がある前提条件を決定できます( If- Modified- SinceIf- Unmodified- SinceIf- MatchIf- None- Match )。 これらの条件は、WABSのソースと最終コピー、およびAS3のソースの両方で定義できます。

・WABSでは、1つのストレージアカウント内でのみ、コンテナーからコンテナーにオブジェクトをコピーできます。 AS3にはそのような制限はありません。 交換が行われるバスケットが同じアカウントに属している場合、オブジェクトがコピーされます。 ただし、APIを使用してチャンクをロードするオブジェクトを作成した場合、オブジェクトをリージョン間でコピーすることはできません。

・両方のシステムでは、既存のメタデータをコピーするか、最終コピーのメタデータを指定できます。

・AS3は、 GET ObjectPUT Objectの組み合わせとしてこの機能を実装します。



役に立つヒント:


綿棒
AS3
スナップショットBLOB
はい
いや

この関数は、blobの読み取り専用コピーを作成します-これがWABSのバージョン管理の実装方法です。 前の記事で述べたように、AS3はバージョン管理を独立して実装しています。 WABSでは、バージョニングは特定のblobのレベルで実装されており、このblobのバージョニングは開発者の責任です。

コメント:



・WABSでは、この機能を正常に完了するために満たす必要がある前提条件を決定できます( If- Modified- SinceIf- Unmodified- SinceIf- MatchIf- None- Match )。


綿棒
AS3
リースブロブ
はい
いや

この関数を使用すると、ブロブを1分間ロックして、変更できないようにすることができます。 この機能は、多くのワーカーが同じ操作を実行しようとしている状況では非常に便利ですが、そのうちの1人だけが変更を加えたいと考えています。 詳細: http : //blog.smarx.com/posts/managing-concurrency-in-windows-azure-with-leases


綿棒
AS3
マルチパートアップロードの開始
いや
はい

この関数は、データのロードを断片的に開始するために使用されます。
綿棒
AS3
ブロックを入れる/パートをアップロードする
はい
はい

この関数は、データの一部(WABSのブロックとAS3のパーツ)をロードするために使用されます。
綿棒
AS3
ブロックリストの配置/マルチパートアップロードの完了
はい
はい

この関数は、対応するストア内のBLOBまたはオブジェクトを確認するために使用されます。 関数は、すべてのブロックまたはパーツをロードした後に呼び出すことができます。
綿棒
AS3
ブロックリスト/リストパーツの取得
はい
はい

この関数は、ロードされたブロックまたはパーツのリストを返します。

コメント:



・WABSでは、この機能を正常に完了するために満たす必要がある前提条件を決定できます( If- Modified- SinceIf- Unmodified- SinceIf- MatchIf- None- Match )。

綿棒
AS3
マルチパートアップロードを中止する
いや
はい

この機能は、進行中の起動プロセスをキャンセルするために使用されます。

この機能がWABSに実装されているフォームでは、必要ありません。 WABSでは、起動プロセスを中断することはできません。 塊の断片のダウンロードを開始し、7日以内にPut Block Listを呼び出さなかった場合、ダウンロードされたブロックは削除されます。
綿棒
AS3
パートのアップロード-コピー
いや
はい

コピーしようとしているオブジェクトのサイズが5 GBを超える場合、オブジェクトの配置-コピー機能を使用できません。 チャンクをロードしてこのオブジェクトをコピーする必要がありますが、この関数はそのためだけのものです。 この関数とアップロードパートの違いは、リクエスト本文でデータを送信する代わりに、 source_bucket / source_objectの形式でソースオブジェクトを指定し、コピーするバイト範囲を指定することです。 したがって、コピーされたオブジェクトのすべての部分を処理する必要があります。 この関数を呼び出す前に、ダウンロードを分割して開始し、関数に渡す必要があるアップロードIDを取得する必要があります。 コピーを完了するには、「Complete Multipart Upload」または「Abort Multipart Upload」を呼び出す必要があります。

綿棒
AS3
ページを置く
はい
いや

Put Blobを使用してページBLOBを作成する場合、その作成を開始するだけです。 コンテンツのない空のページBLOBを作成します。 この関数を使用すると、ページBLOBにデータを挿入/更新できます。データを確認する必要はありません。この関数を呼び出した後、データは自動的に確認されます。

コメント:



・WABSでは、この機能を正常に完了するために満たす必要がある前提条件を決定できます( If- Modified- SinceIf- Unmodified- SinceIf- MatchIf- None- Match )。

綿棒
AS3
ページ範囲を取得する
はい
いや

ブロックBLOBとページBLOBの重要な違いは価格設定です。フルBLOBに対して支払いますが、ページBLOBの場合は、ビジーな(ゼロ以外の)ページに対してのみ支払います。 たとえば、2 GBのブロックBLOBと2 GBのページBLOBを作成し、両方が空(0バイトを含む)の場合、2 GBのBLOB BLOBの料金はかかりますが、ページBLOBの料金はかかりません。 次に、Putページを使用して1024バイトをページBLOBに書き込み、それらの1024バイトの支払いを開始します。

この関数は、ゼロ以外のページのソートされたリストを返します。

この関数にはもう1つの利点があります-ページBLOBをダウンロードするときにこの関数を呼び出すと、データがBLOBのどこに保存されているかが保証されます。その後、BLOB全体をダウンロードできなくなりますBlobを取得します。

まとめ



どちらのシステムも同様の機能セットを提供します。 各システムには、別のシステムでは使用できない独自の機能セットがありますが、一般に、機能の違いは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 Service - AS3

この表は、WABSとAS3の機能を比較した結果をまとめたものです。
綿棒
AS3
サービスの現在のバージョン
2011-08-18
2006-03-01
保管制​​限
最大100TB
無制限
クラウドファイルシステム
はい
はい
ドライブを転送して大量のデータを転送する機能
いや
はい
サポートされているプロトコル
HTTP / HTTPS
HTTP / HTTPS / BitTorrent
データに対して顧客に請求する機能
いや
はい
サーバー側の暗号化サポート
いや
はい
限定冗長サポート
いや
はい
サポートされている階層レベル
2
2
ブロブ容器とバスケット
BLOBコンテナーとバスケットの作成
はい
はい
コンテナの数blobovとバスケット
無制限
無制限
バスケットまたはブロブコンテナーの名前の最小/最大長
3/63
3/63
BLOBおよびバスケットコンテナー名の大文字と小文字の区別
小文字
小文字
BLOBおよびバスケットコンテナー名に使用できる文字
英数字、ハイフン(-)
英数字、ハイフン(-)、ピリオド(。)
共有ホスティングサポート
いや
はい
ホスティングサポートパススタイル
はい
はい
作成時にACLを定義する機能
はい
はい
デフォルトACL
プライベート
プライベート
独自のメタデータの指定
はい
いや
BLOBコンテナーとバスケットのリストを取得する
はい
はい
単一の関数呼び出しによって返されるblobまたはバスケットコンテナーの最大数
5000
指定なし
プレフィックスフィルタリングを使用してBLOBおよびバスケットコンテナーのリストの一部を返す
はい
はい
BLOBコンテナーとバスケットの削除
はい
はい
ブロブコンテナまたはバスケットは、削除する前に空にする必要があります
いや
はい
BLOBまたはオブジェクトのリストを取得する
はい
はい
1回の関数呼び出しで返されるBLOBまたはオブジェクトの最大数
5000
1000
1回の関数呼び出しで返されるBLOBまたはオブジェクトの数の上限を指定する機能
はい
はい
フォルダー階層の錯覚を作成するためのセパレーターのサポート
はい
はい
返されたブロブまたはオブジェクトのリストをプレフィックスでフィルタリングする
はい
はい
バージョン管理されたブロブまたはオブジェクトのリストを取得する
はい
はい
未確認のblobまたはオブジェクトのリストを取得する
はい
はい
BLOBまたはオブジェクトへのリクエストのロギング
はい
はい
特定のBLOBまたはオブジェクトへの要求を記録する
いや
はい
BLOBまたはオブジェクトへのロギングリクエストの設定を取得する
はい
はい
BLOBコンテナーまたはバスケットのACL定義
はい
はい
可能なACL値
コンテナ、ブロブ、プライベート
読み取り、書き込み、READ_ACP、WRITE_ACP、FULL_CONTROL
ユーザーごとに異なるACLを定義する
いや
はい
BLOBコンテナーまたはバスケットの独自のメタデータを定義する
はい
いや
BLOBコンテナーまたはバスケットのユーザー定義メタデータの取得
はい
いや
バージョン管理オブジェクト
はい
はい
システムによって制御されるバージョン管理
いや
はい
BLOBコンテナーまたはバスケットのバージョン管理セットアップ
いや
はい
BLOBコンテナーまたはバスケットのバージョニング構成の取得
いや
はい
一定期間後のBLOBコンテナーまたはバスケットの内容の自動削除
いや
はい
一定期間後にBLOBコンテナーまたはバスケットの内容を自動的に削除する設定
いや
はい
一定期間後のBLOBコンテナーまたはバスケットのコンテンツの自動削除の設定を取得する
いや
はい
一定期間後のBLOBコンテナーまたはバスケットの内容の自動削除の設定の削除
いや
はい
不正アクセスを防ぐためのBLOBコンテナまたはバスケットのアクセスポリシーの定義
いや
はい
不正アクセスを防止するためのBLOBコンテナーまたはバスケットへのアクセスポリシーの取得
いや
はい
不正アクセスを防止するためのBLOBコンテナーまたはバスケットへのアクセスポリシーの削除
いや
はい
BLOBコンテナまたはごみ箱イベントに何が起こったかについての通知を受け取る
いや
はい
BLOBコンテナーまたはごみ箱で何が起こったかに関する通知を構成する
いや
はい
BLOBコンテナまたはごみ箱イベントに何が起こったかについての通知を受け取る
いや
はい
コンテナからブロブまたはバスケットをダウンロードするために別のユーザーが支払うことができます
いや
はい
コンテナからブロブまたはバスケットをダウンロードするために支払うユーザーの決定
いや
はい
,
いや
はい

いや
はい

いや
はい

いや
はい

いや
はい


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は最善を尽くしました-2つのプラットフォームの機能は比較的同等であり、これは朗報です。両方のプラットフォームの開発を観察することは私にとって非常に興味深いものであり、さらに興味深いものになると思います。ちなみに、6月7日にマイクロソフトはグローバルアップデートを公開します。お見逃しなく、非常にクールです。クラウドプラットフォームの競争が新しいラウンドを獲得しているように思えますが、すべては、開発ベクトルがAmazonとMicrosoftによってどのように選択されるかにかかっています。待って、見て。次の翻訳では、Windows Azure Blob ServicesとGoogle Cloud Serviceの比較に焦点を当てます。

UPDは: WindowsのAzureのための信託サービスの外観を逃した:今では、サーバー側で暗号化することが可能である- 以上

Source: https://habr.com/ru/post/J145122/


All Articles