मेरे पास निम्न इकाई है (गैर-प्रासंगिक फ़ील्ड/विधियां हटा दी गई हैं)।Google के डेटास्टोर (उच्च प्रतिकृति) के लिए एक ही लेनदेन में "बहुत अधिक" कितनी वस्तुएं हैं?
public class HitsStatsTotalDO
{
@Id
transient private Long targetId;
public Key<HitsStatsTotalDO> createKey()
{
return new Key<HitsStatsTotalDO>(HitsStatsTotalDO.class, targetId);
}
}
तो ... मैं बैच 10 वस्तुओं है जिसके लिए मैं HitsStatsTotalDO.createKey()
का उपयोग कर कुंजी निर्माण के लिए प्राप्त करने के लिए कोशिश कर रहा हूँ। मैं इस तरह के लेनदेन में उन्हें लाने के लिए प्रयास कर रहा हूँ:
final List<Key<HitsStatsTotalDO>> keys = ....
// This is being called in transaction..
Map<Key<HitsStatsTotalDO>, HitsStatsTotalDO> result = DAOBase.ofy().get(keys);
जो अपवाद निम्नलिखित थ्रो:
java.lang.IllegalArgumentException: operating on too many entity groups in a single transaction.
आप कृपया विस्तार से बताएं किया जा सका है कि कितने भी कई है और यह कैसे तय करने के लिए? मुझे दस्तावेज़ीकरण में सटीक संख्या नहीं मिली।
धन्यवाद!
हाँ, मैं उस हिस्से को लगभग 5 इकाइयों से चूक गया। – expert
कम से कम पायथन एसडीके 1.7.3 में, BadRequestError में दो अलग-अलग त्रुटि संदेश हैं: "क्रॉस-ग्रुप लेनदेन को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता है, TransactionOptions.Builder.withXG देखें" और "एकल में बहुत से इकाई समूहों पर परिचालन करना लेन-देन "। आपका उत्तर पूर्व को हल करता है, लेकिन बाद वाला एक्सजी लेनदेन में हो सकता है, अगर यह 5 से अधिक इकाई समूहों पर चलता है। –
अब एक्सजी लेनदेन के लिए, सीमा 25 इकाई समूह प्रतीत होती है। Https://cloud.google.com/appengine/docs/standard/java/datastore/transactions?csw=1#What_Can_Be_Done_In_a_Transaction देखें – rimsky