2017-04-05 10 views
13

Google Cloud Storageにファイルをアップロードするときには、カスタムデータフィールドmetadataがあります。Google Cloud Storageのメタデータ値の長さに制限はありますか?

Google's exampleはかなり短いです:

var metadata = { 
    contentType: 'application/x-font-ttf', 
    metadata: { 
    my: 'custom', 
    properties: 'go here' 
    } 
}; 

file.setMetadata(metadata, function(err, apiResponse) {}); 

は、GCSは、メタデータオブジェクトのためにできるようになりますどのように大きなための最大値があり、私はそこにtarとのzipファイルのマニフェストを保存したい、あるいは数百KB必要があります? GCSにセットメタデータをアップロードするには、以下のコマンドを使用して

+0

試してみることはできますが、メタデータの格納はカウントされ、とにかく通常の料金で請求されます。 –

+0

3ギグファイルを必要とするかどうかを知ることができるのは、そこに何かを入れることです。 – Paul

+0

これは文書化されておらず、誰が試みたのか、エンジニアだけが知っています。なぜ3GBを入れてみませんか? –

答えて

9

$ echo '{"metadata": {"large": "' > body ; tr -dC '[:print:]' < /dev/urandom | tr -d '\\"' | head -c SIZE_OF_METADATA_IN_BYTES >> body ; echo '"}}' >> body; curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH -H "Content-type: application/json" -d @body -o return_body https://www.googleapis.com/storage/v1/b/manifest-geode-357/o/empty 

私は2097キロバイトヘッダーの上にサービスが戻る「HTTP 413要求が大きすぎます」とメタデータが設定されていないことがわかります。そのレベルの下では、期待どおりに設定されます。より圧縮可能な入力(例えば、yesの出力)を使用すると、より多くのデータを取得できますが、カットオフは同じ内容長の値(圧縮後)になります。 2097KB == 2MiBとほぼ同じですが、私は真の限界が2MiBに収まる必要があることを期待しています。


しかしブランドンさんのコメントは正しいです:これは、理由の全体のカタログのための素晴らしいアイデアではありません:これは、あなたが(関連するパフォーマンスとコストのペナルティで)より多くの帯域幅を消費するようになります

  1. (メタデータは依然として請求されているので)ストレージコストを節約できません。
  2. Googleは通知されていない動作に依存しており、これは予告なしに変更される可能性があります。
  3. 実際のオブジェクトデータとは異なり、アップロード時に再開可能な動作がないため、エラーが発生します。
  4. アップロードプロセス中に整合性を確認するチェックサムはありません。
  5. 多くのクライアントライブラリは、ディスク上ではなくメモリ内にメタデータを格納したり、複数のコピーを保持している可能性が高いため、アプリケーションでメモリが圧迫される可能性が高くなります。

マニフェストを個別のオブジェクトに格納するだけで、これらの問題がすべて解決されます。マニフェストのの場所をメタデータに格納して、両方のオプションの利点を得ることができます。

+0

"ABC"という文字を何度も何度も何度も何度も何度も繰り返しています。 gzipに挿入された1MBの "ABC"は1KBになります。データが少しランダムな場合はどうなりますか? – Paul

+0

'tr -dC '[:print:]'を使う David

+0

これは私にとっては十分です。しかし、その賞金は誰か他の人に譲られました。 – Paul

関連する問題