मैं इस वर्ग के जो मैं objectify का उपयोग कर बनाए रखना चाहते, इस वर्ग तो वहाँ जो बाइट सरणी का एक टुकड़ा का प्रतिनिधित्व करता है ब्लॉब वस्तुओं की एक सूची है एक डेटा 1 एमबी से बड़ा प्रतिनिधित्व होगा संग्रहीत तुलना में कम है आकार में 1 एमबी:objectify AppEngine के साथ बड़े ब्लॉब भंडारण
@Entity
public class BigBlob {
@Id
private Long id;
public static final int FRAGMENT_LIMIT = 777 * 1024;
@Serialized
private List<Blob> fragments = new ArrayList<Blob>();
...
}
फिर भी, "टुकड़े" @Serialized है, जो इस BigBlob वर्ग/के आकार प्रदान करेगा 1 एमबी से बड़ा आपत्ति है। अगर मैं @Embedded एनोटेशन का उपयोग मैं इस त्रुटि मिलती है
com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large.
:
Cannot place array or collection properties inside @Embedded arrays or collections
कैसे मुझे यकीन है कि "टुकड़े" एक अलग इकाई के रूप में जमा हो जाती है कर सकता हूँ
इस त्रुटि के कारण?
बीटीडब्ल्यू, मेरे पास पहले से बाइट चंकिंग तर्क है जो पूरे बाइट सरणी को चॉप करता है और List
Blob
में टुकड़े डालता है, इसलिए यह प्रश्न बाइट्स को काटने के तरीके से संबंधित नहीं है।
अधिकतर जो मैं जानना चाहता हूं वह स्थायी पक्ष पर अधिक है।
"दूसरी ओर, वहाँ धब्बे भंडारण, खासकर यदि आप डेटा कि 1M किनारे के करीब है भंडारण कर रहे हैं के लिए विभाजन संस्थाओं उपयोग करने के लिए कुछ अच्छे कारण हैं" - वास्तव में, वहाँ कोई कारण नहीं तुम धब्बे छोटे संग्रहीत नहीं कर सकता है ब्लॉबस्टोर में 1 एमबी से भी ज्यादा। –
आप निश्चित रूप से कर सकते हैं, लेकिन ब्लॉबस्टोर से संबंधित एपीआई के साथ काम करने के लिए दर्द होता है और अन्य डेटास्टोर काम के साथ आसानी से लेनदेन नहीं किया जा सकता है। कभी-कभी कई-इकाई हैक के साथ भी डेटास्टोर का उपयोग करना काफी आसान होता है। दूसरी ओर, ब्लॉस्टस्टोर स्टोरेज डाटास्टोर स्टोरेज से सस्ता है, इसलिए इस विकल्प को बेकार ढंग से नहीं बनाया जाना चाहिए। – stickfigure
ब्लॉबस्टोर एपीआई के साथ काम करना मुश्किल है? और आपको एक लेनदेन की आवश्यकता क्यों है जो ब्लॉबस्टोर और डेटास्टोर को फैलाता है? –