Windows Azure Blob StorageずGoogle Cloud Storageの比范

クラりドコンピュヌティング愛奜家ぞのご挚拶。

Windows Azure Blob StorageサヌビスずGoogle Cloud Storageサヌビスの比范を芋るこずをお勧めしたす著者はAmazon AS3に぀いおも蚀及するこずを忘れないでください。



Google App EngineストレヌゞずWindows Azureストレヌゞを比范する蚘事を曞くずいいず思いたした。 この蚘事では、 Windows Azure Blob StorageずGoogle Cloud Storageを比范したす 。



シリヌズの最初の郚分-Windows AzureテヌブルストレヌゞずAmazon DynamoDBの比范

パヌト2-Windows Azure Blob StorageずAmazon Simple Storage ServiceS3を比范する-パヌトI

パヌト3-Windows Azure Blob StorageずAmazon Simple Storage ServiceS3の比范–パヌトII、抂芁

略語 Windows Azure Blob Storage- WABSおよびGoogle Cloud Storage - GCS、 Amazon S3 - AS3



抂念的には、WABSずGCSは同様の機胜を提䟛したす-簡単に蚀えば、䞡方のシステムは倧量の非構造化デヌタ通垞はファむルの圢匏を保存できるクラりドファむルシステムです。



どちらのシステムも、通垞はREST APIのラッパヌである高レベル蚀語のファむルずフォルダヌおよびその他のラむブラリを操䜜するためのREST APIを提䟛したす。 APIの各リリヌスには独自のバヌゞョンがあり、WABSには日付倀があり、GCSには番号がありたす。 執筆時点では、WABSバヌゞョンは2011-08-18で 、GCSはバヌゞョン2.0でした。



2぀のシステムの同様の機胜







コンセプトの





これらの2぀のサヌビスに぀いお詳しく説明する前に、いく぀かの抂念を明確にするこずが重芁だず思いたす。 WABSおよびGCSの基本抂念に粟通しおいる堎合は、このセクションをスキップできたす。



BLOBコンテナヌずバスケット これらのサヌビスがクラりド内のファむルシステムである堎合、WABS BLOBコンテナヌずGCSバケットをフォルダヌたたはディレクトリず芋なしおください。 WABSストレヌゞアカりントたたはGCSアカりントでは、ブロブたたはオブゞェクトをそれぞれ含めるこずができる0個以䞊のブロブコンテナヌずバスケットを䜿甚できたす。



コメント







BLOB ずオブゞェクト WABS BLOBずGCSオブゞェクトは、BLOBコンテナヌずバスケットにあるクラりドファむルシステム内のファむルです。



コメント







最も重芁な2぀の機胜はダりンロヌドずダりンロヌドです。たずそれらに぀いお説明し、次に他の機胜を比范したしょう。



BLOBずオブゞェクトの読み蟌み





コンテナずバスケットにブロブずオブゞェクトをロヌドするこずに぀いお話したしょう。 ロヌドメカニズムは2぀ありたす。1぀のリク゚ストのフレヌムワヌク内でブロブたたはオブゞェクトを完党にダりンロヌドするか、それらを断片に分割できたすブロックたたはWABSペヌゞ。GCSでは特別な名前はありたせん。



1回のリク゚ストでダりンロヌド




ダりンロヌドしたデヌタが小さく、接続速床が良い堎合、1回の芁求でこのデヌタを完党にダりンロヌドできたす。 WABSはこれにPut Blobを䜿甚したす。 GCS- PUT ObjectたたはPOST Objectで 。



ピヌスをロヌドする




単䞀のリク゚ストで完党にロヌドするには非効率的なビッグデヌタを共有できたす。 どちらのシステムでも、デヌタを断片WABSのブロックたたはペヌゞ、GCSでは特別な名前を持たないに分割し、埐々にロヌドするこずができたす。 WABSでは、ブロックBLOBの堎合、ペヌゞBLOBのPut BlockおよびPut Block Listを䜿甚する必芁がありたす-Put Page 。 GCSは、このためにPOST ObjectおよびPut Object関数を䜿甚したす。



デヌタをチャンクでロヌドするかどうかを決定できる理由は倚数ありたす。







各システムにデヌタを断片的にロヌドする方法を芋おみたしょう。 たずえば、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を送信する順序は重芁です。



制限事項







Gcs




GCSの堎合、倧きなファむルをたずめおダりンロヌドするこずを「 再開可胜なアップロヌド 」ず呌びたす。 最初に、 POSTオブゞェクトを呌び出しおブヌトプロセスを開始したこずをGCSに䌝える必芁がありたす。 通垞、この関数はHTMLフォヌムを䜿甚しおファむルをアップロヌドするために䜿甚されたすが、この堎合、ファむルを定矩したせん。 ダりンロヌドプロセスを開始したこずをGCSに䌝えるリク゚ストヘッダヌを定矩できたす。 ダりンロヌドが完了するず、GCSは、ダりンロヌドプロセスを䞀意に識別するアップロヌドIDを含む応答を返したす。 このIdは、ピヌスをロヌドするずきに必芁になるため、保存する必芁がありたす。 次に、 Put Object関数を䜿甚しおファむルをダりンロヌドし、Upload Idずオブゞェクトのコンテンツを枡しおみる必芁がありたす。 すべおがうたくいった堎合、GCSは200 OkのHTTPコヌドで応答したすが、操䜜が倱敗した堎合、ダりンロヌドしたバむト数をGCSに問い合わせる必芁がありたす。 GCSは、308 Resume Incomplete HTTPコヌドを返したす。 さらに、Put Objectを䜿甚しおデヌタのロヌドを続行できたす。



考え







BLOBずオブゞェクトをダりンロヌドする





ブロブずオブゞェクトをダりンロヌドする方法を芋おみたしょう。 これには2぀のメカニズムがありたす。1぀の芁求でblobたたはオブゞェクト党䜓をダりンロヌドするか、分割しおダりンロヌドしたす。



各システムには、WABSでBlobを取埗し 、GCSでObjectを取埗するダりンロヌド機胜が1぀だけありたす。



1回のリク゚ストでダりンロヌド




デヌタが小さく、接続速床が良い堎合は、WABSのGet BlobずGCSの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ファむルを䜜成し、このファむルにダりンロヌドしたピヌスを入力したす。




WABS、AS3、GCSの共通点





3぀のシステムすべおに共通のポむントがありたす。たずえば、次のずおりです。







AS3ず共通





GCSに぀いお最初に読んだずき、GCSずAS3には倚くの共通点があるこずがわかりたした。たずえば







GCSのナニヌクな瞬間





GCSの基本的な機胜に぀いお説明し始めたずき、GCSはWABSやAS3よりも機胜が少ないように芋えたすが、GCSには他のプラットフォヌムにはない機胜がありたす。 䟋







䟡栌





䞡方のシステムを䜿甚する堎合、「資本」コストはありたせん。 䟡栌蚭定モデルは比范的単玔で、消費に基づいおいたす。 どちらのシステムでも、請求曞は䜿甚量に基づいお請求され、3぀のコンポヌネントで構成されたす。



  1. トランザクションの数 支払は、行われたトランザクションの数に埓っお行われたす-倧たかに蚀っお、1぀のトランザクションはシステム内の1぀の関数呌び出しです。 2぀のシステムには倧きな違いがありたす-WABSでは 、トランザクションコストは固定 10,000トランザクション あたり0.01ドルです 。GCSでは 、トランザクション のタむプによっお異なりたす。 PUT、COPY、POST、LISTの各操䜜を実行する堎合、トランザクションごずに高い䟡栌1000トランザクションあたり0.01ドルを支払い、GETなどでは䜎い䟡栌10,000トランザクションあたり0.01ドルを支払いたす。 削陀リク゚ストは曞かれおいたせんが、GCSでは無料であるず想定しおいたす。
  2. ストレヌゞ 各システムに保存されおいるデヌタの量に察しお支払いたす。




  1. トラフィック システムずの間で転送されるデヌタの量に察しお支払いたす。 執筆時点では、䞡方のシステムが無料の着信トラフィックを提䟛しおいたす。 デヌタ転送の費甚がGCSの同じデヌタセンタヌ内で支払われるかどうかは蚀及されおいたせん。




特別な䟡栌蚭定モデルも利甚でき、䞡方のシステムが異なる支払いパッケヌゞを提䟛したす。 䟡栌の詳现-https : //www.windowsazure.com/en-us/pricing/details/WABSの堎合およびhttps://developers.google.com/storage/docs/pricingandtermsGCSの堎合。



機胜





この衚は、WABSおよびGCSが提䟛する機胜をたずめたものです。 䞡方のシステムでサポヌトされおいる機胜のみが含たれおいたす。

綿棒

Gcs

コンテナの䜜成/バケットの配眮

はい

はい

コンテナのリスト/ GETサヌビス

はい

はい

コンテナの削陀/バケットの削陀

はい

はい

リストBLOB / GETバケットリストオブゞェクト

はい

はい

コンテナACL / PUTバケットの蚭定ACLたたはCORS

はい

はい

コンテナACLを取埗/バケットを取埗ACLたたはCORS

はい

はい

Blob / PUTオブゞェクトを配眮

はい

はい

POSTオブゞェクト

いや

はい

Get Blob / GET Object

はい

はい

Blobの削陀/オブゞェクトの削陀

はい

はい

Blob / PUTオブゞェクトのコピヌ

はい

はい

Blobプロパティの取埗/ HEADオブゞェクト

はい

はい

Blobメタデヌタ/ HEADオブゞェクトを取埗

はい

はい



次の衚に、WABSでのみサポヌトされる機胜を瀺したす。

綿棒

Gcs

BLOBサヌビスプロパティを蚭定する

はい

いや

Blobサヌビスプロパティを取埗する

はい

いや

コンテナのメタデヌタを蚭定する

はい

いや

コンテナメタデヌタの取埗

はい

いや

BLOBプロパティを蚭定する

はい

いや

BLOBメタデヌタを蚭定する

はい

いや

スナップショットBLOB

はい

いや

リヌスブロブ

はい

いや

ブロックを眮く

はい

いや

ブロックリストを眮く

はい

いや

ブロックリスト/リストパヌツの取埗

はい

いや

ペヌゞを眮く

はい

いや

ペヌゞ範囲を取埗する

はい

いや



これらの関数をさらに詳しく考えおみたしょう。

綿棒

Gcs

コンテナの䜜成/バケットの配眮

はい

はい



この関数は、新しいBLOBコンテナヌたたはバスケットを䜜成したす。



留意すべき重芁な点は、BLOBコンテナヌはストレヌゞアカりントに限定され、GCSバスケットはGCSプロゞェクトに限定されるこずです。 WABSストレヌゞアカりントを䜜成するずき、その堎所デヌタセンタヌを決定し、ブロブコンテナヌは特定の地理的堎所の特定のデヌタセンタヌに配眮されたす。 GCSでバスケットを䜜成するずきに、このバスケットを䜜成する地域を決定するため、必芁に応じお、GCSのすべおのデヌタセンタヌにバスケットを配垃できたす。 WABSで同じこずを行うには、コンテナを配眮するデヌタセンタヌごずにストレヌゞアカりントを䜜成する必芁がありたす。



BLOBコンテナヌずバスケットにはいく぀かの呜名芏則があり、それらは䞋の衚にたずめられおいたす。

綿棒

Gcs

最小/最倧長のタむトル

3/63

3/63

倧文字ず小文字の区別

小文字

小文字

蚱可されたキャラクタヌ

英数字ずハむフン-

英数字、ハむフン-、およびピリオド。



その他の呜名芏則





泚





綿棒

Gcs

コンテナのリスト/ GETサヌビス

はい

はい





この関数は、GCSで認蚌された所有者に属するすべおのBLOBコンテナヌたたはバスケットのリストを返したす。



コメント





綿棒

Gcs

コンテナの削陀/バケットの削陀

はい

はい



この関数は、ブロブコンテナヌたたはバスケットを削陀したす。



コメント





綿棒

Gcs

リストBLOB / GETバケットリストオブゞェクト

はい

はい



この関数は、コンテナたたはバスケット内のブロブずオブゞェクトのリストを取埗するために䜿甚されたす。 システム内の関数は、次の堎合に同じこずを行いたす。







違い





綿棒

Gcs

コンテナACL / PUTバケットの蚭定ACLたたはCORS

はい

はい



この関数は、コンテナたたはバスケットのACLを指定するために䜿甚され、WABSで1぀以䞊のアクセスポリシヌを指定するこずもできたす。 CORSはGCSでも蚭定できたすただし、CORSずACLは同じリク゚ストで蚭定できたせん。



BLOBコンテナヌの堎合、ACL倀は次のようになりたす。







バスケットの堎合、ACLは次のものず等しくなりたす。







GCSで䟿利なのは、ナヌザヌに異なるアクセス蚱可セットを䞎えるこずができるこずです。たずえば、user1にはREAD ACLを、user2にはWRITE ACLを、WABSにはそのような柔軟性はなく、アクセス蚱可はblobコンテナヌにのみ蚭定されたす。



WABSの䟿利な点は、ACLに加えお、このコンテナの䞀時的な蚱可セットを定矩するコンテナに察しお最倧5぀のアクセスポリシヌを蚭定できるこずです。たずえば、ブロブコンテナに察する曞き蟌み暩限を持぀アクセスポリシヌを䜜成できたす。これは1日のみ有効です。ポリシヌを䜿甚するず、眲名付きの特別なURLを生成しおナヌザヌに提䟛できたす柔軟な共有アクセス眲名機胜。眲名を䜿甚するず、䞀定の期間、より詳现なレベルでコンテナおよびBLOBにアクセス暩を発行できたす。

綿棒

Gcs

コンテナヌACLの取埗/バケットの取埗ACLたたはCORS

はい

はい



この関数は、blobコンテナヌたたはバスケットのACLを取埗するために䜿甚されたす。WABSでは、この関数はコンテナヌに定矩されたアクセスポリシヌも返したす。



バスケットのACLを取埗するには、文字列パラメヌタヌ「acl」でGET Bucketを呌び出しお、文字列パラメヌタヌ「cors」でCORSを取埗する必芁がありたす。どちらも指定されおいない堎合、バスケット内のオブゞェクトのリストが返されたす。



綿棒

Gcs

Blob / PUTオブゞェクトを配眮

はい

はい



この関数は、ブロブをブロブコンテナヌに、オブゞェクトをバスケットに远加したす。 この関数を䜿甚しお、GCSの既存のオブゞェクトにACLを指定したり、あるバスケットから別のバスケットにオブゞェクトをコピヌしたりできたす。



コメント







綿棒

Gcs

POSTオブゞェクト

いや

はい



この関数は、HTMLフォヌムを䜿甚しお指定されたバスケットにオブゞェクトを远加したす。POSTはPUTの代替であり、ブラりザがオブゞェクトをロヌドできるようにしたす。HTTPヘッダヌを䜿甚しおPUTに枡されるパラメヌタヌは、暗号化されたmultipart / form-dataメッセヌゞの本文ずしおPOSTから枡されたす。

綿棒

Gcs

Get Blob / GET Object

はい

はい



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



コメント





綿棒

GCS

Delete Blob/DELETE Object

はい

はい



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



コメント







・WABSでは、この関数を正垞に完了するために満たす必芁がある前提条件を決定できたすIf- Modified- Since、If- Unmodified- Since、If- Match、If- None- Match。

綿棒

Gcs

Blobのコピヌ/オブゞェクトの配眮-コピヌ

はい

はい



この関数は、ブロブたたはオブゞェクトを元の堎所からどこかにコピヌしたす。



コメント



・䞡方のシステムでは、この機胜を正垞に完了するために満たす必芁のある前提条件を決定できたすIf- Modified- Since、If- Unmodified- Since、If- Match、If- None- Match。これらの条件は、WABSの゜ヌスず最終コピヌ、およびGCSの゜ヌスの䞡方で定矩できたす。



・WABSでは、1぀のストレヌゞアカりント内でのみ、コンテナヌからコンテナヌにオブゞェクトをコピヌできたす。GCSにはそのような制限はありたせん。亀換が行われるバスケットが同じプロゞェクトに属しおいる堎合、オブゞェクトがコピヌされたす。ただし、APIを䜿甚しおチャンクをロヌドするオブゞェクトを䜜成した堎合、オブゞェクトをリヌゞョン間でコピヌするこずはできたせん。



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







ヒント





綿棒

Gcs

Blobプロパティの取埗/ HEADオブゞェクト

はい

はい



この関数は、blobプロパティずオブゞェクトメタデヌタを取埗するために䜿甚されたすが、blobたたはオブゞェクトのコンテンツは返したせん。



コメント





綿棒

GCS

Get Blob Metadata/HEAD Object

はい

はい



この関数は、ブロブたたはオブゞェクトのナヌザヌ定矩のメタデヌタを返したす。この関数を䜿甚しお、特定のバヌゞョンのblobたたはオブゞェクトのプロパティを取埗できたす。この情報を取埗するには、WABSでスナップショットBLOBの日付/時刻を指定する必芁がありたす。



たずめ





この蚘事で芋たように、䞡方のシステムは同様の機胜セットを提䟛したすが、䞀郚の機胜はあるシステムに存圚し、別のシステムには存圚したせん。それにもかかわらず、機胜の倧きな違いに぀いお話すこずはできたせん。



翻蚳者からのメモ

このレビュヌを読んで、Googleがラプスダを構築するのではなく合理的で成功したアマゟンの道を進むこずを合理的に決定したずいう感芚-これはいく぀かのパラメヌタヌのほが完党なアむデンティティによっお蚌明されたす。Amazonが2006幎にサヌビスを開始し、2010幎にGoogleがサヌビスを開始したこずを考えるず、そうだったかもしれたせん。ただし、Googleには他のサヌビスにはない優れた機胜がいく぀かありたす。たずえば、同じCORSです。䞀般的に、䞀時的なコンテキストでのGoogleおよびMicrosoftサヌビスの開発のペヌスは、Amazonのペヌスよりも速いず蚀うこずもできたす。

次の資料が開発され次第、間違いなく翻蚳し、あなたの泚意を匕き付けたす。




All Articles