Objectify kullanılarak devam etmek istediğim bu sınıfa sahip olduğum için, bu sınıf 1MB'den büyük bir veriyi temsil edecek, böylece depolanan bayt dizisinin bir parçasını temsil eden Blob nesneleri listesi var. büyüklüğü 1 MB:Büyük bloğu Objectify Appengine ile depolama
@Entity
public class BigBlob {
@Id
private Long id;
public static final int FRAGMENT_LIMIT = 777 * 1024;
@Serialized
private List<Blob> fragments = new ArrayList<Blob>();
...
}
Yine, "fragmanları" @Serialized olup, bu BigBlob sınıfının/boyutunu verecek 1 MB daha büyük nesne.
Cannot place array or collection properties inside @Embedded arrays or collections
nasıl "fragmanları" ayrı bir varlık olarak depolanır emin olun: Ben bu hatayı alıyorum @Embedded ek açıklama kullanırsanız
com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large.
:
bu hatayı mu çıkartıyor?
BTW, bayt dizisi mantığına sahiptüm ve bu bayt dizisini List
Blob
içine koyun, bu nedenle bu soru baytların nasıl kesileceğiyle ilgili değildir.
Çoğunlukla bilmek istediğim şey daha çok ısrarcı tarafta.
"Öte yandan, özellikle 1M kenarına yakın verileri depolıyorsanız, blobları depolamak için bölünmüş öğeleri kullanma konusunda bazı iyi nedenler var" - aslında, küçük harfleri depolayabileceğiniz için hiçbir neden yok Blob mağazasında da 1MB'den daha fazla. –
Kesinlikle yapabilirsiniz, ancak blobstore ile ilgili API'lar çalışmak için bir acıdır ve diğer veri deposu çalışmaları ile kolayca işlem yapamazlar. Bazen, çok varlıklı hack ile bile veri deposunu kullanmak çok daha kolay. Diğer taraftan, blobstore depolama alanı veri deposu depolamasından daha ucuzdur, bu nedenle bu seçenek anlamsız bir şekilde yapılmamalıdır. – stickfigure
Blobstore API'ları hakkında çalışmak zor mu? Ve neden Blobstore'u ve veri mağazasını kapsayan bir işleme ihtiyacın var? –