2017-04-05 20 views
13

Google Cloud Storage'a bir dosya yüklerken, metadata özel bir veri alanı var. Oraya katran ve zip dosyaları, ya da birkaç yüz KB manifestoyu saklamak isterseniz, Google Cloud Storage'da meta veri değerlerinin uzunluğu için bir sınır var mı?

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

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

GCS meta nesne için izin verecektir ne kadar büyük bir maksimum var mı:

Google's example oldukça kısadır ? GCS'de set meta verilerini yüklemek için aşağıdaki komutu kullanarak

+0

Denemeyi deneyebilirsiniz, ancak meta veri depolama her halükarda normal hızda sayılır ve faturalandırılır. –

+0

Buradaki nokta, 3 Gig dosyası isteyip istemediğimi bilmeme izin veren bir şey koymaktır ... – Paul

+0

Bu belgelenmemiş ve yalnızca deneyen veya mühendislerin bildiği. Neden 3GB koymayı denemiyorsun? –

cevap

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 

Ben 2097KB başlığın üstünde hizmet verir "HTTP 413 İstek Çok Büyük" ve meta ayarlanmadığını bulun. Bu seviyenin altında beklendiği gibi ayarlanır. Daha fazla sıkıştırılabilir giriş (ör. yes çıktısı) kullanırsam, daha fazla veri alabilirim, ancak kesim aynı içerik uzunluk değerinde (sıkıştırma sonrası). 2097KB == 2MiB neredeyse tam olarak, gerçek sınırlamanın tüm HTTP isteğinin 2MiB'e sığması gerektiği umuyorum.


Ancak Brandon'ın açıklama doğrudur: Bu ortaya yepyeni katalog için harika bir fikir değil: Bu, (ilişkili performans ve maliyet cezası ile birlikte) daha fazla bant genişliği tüketen neden olacaktır

  1. Depolama maliyetlerinde para biriktirmeyeceksiniz (meta veriler hala ücretlendirildiği için).
  2. Herhangi bir bildirimde bulunmaksızın Google tarafından değiştirilebilecek belgesiz davranışa dayanır.
  3. Gerçek nesne verilerinden farklı olarak, yükleme sırasında devam ettirilemez davranış yoktur, bu nedenle hatalar sizi daha da kötüleştirir.
  4. Yükleme işlemi sırasında bütünlüğü doğrulamak için sağlama toplamı yoktur.
  5. Birçok istemci kütüphanesinin disk yerine metadata bellekte depolaması veya birden fazla kopya tutması olasıdır; bu nedenle uygulamanızda bellek baskısı görmeniz daha olasıdır.

Bildirimi ayrı bir nesnede saklamak, tüm bu sorunları çözer. Metadatadaki manifestin konum konumunu saklayabilir ve her iki seçeneğin de faydasını alabilirsiniz.

+0

"ABC" harfinin tekrar tekrar tekrar tekrar yazılması, oldukça güzel bir şekilde gzip olacaktır. Gzip'in 1 MB "ABC" değeri sadece 1 KB olur. Veriler biraz daha rasgele ise ne olur? – Paul

+0

'tr -dC 'kullanma [: print:]' David

+0

Bu benim için yeterince iyi. Yine de ödül başkası tarafından yerleştirildi. – Paul