2009-12-22 15 views
8

मैं जावा एपेंगेन के लिए नए प्रयोगात्मक टास्क्यूयू का उपयोग कर रहा हूं और मैं अपने डेटास्टोर में कुल आंकड़े बनाने की कोशिश कर रहा हूं। मैं अपने डेटास्टोर में सभी अधिकारों (एक निश्चित प्रकार के) के भीतर अद्वितीय मूल्यों की संख्या गिनने की कोशिश कर रहा हूं। अधिक ठोस रूप से, टाइप एक्स की इकाई में फ़ील्ड ए है। मैं अपने डेटास्टोर में ए के अद्वितीय मानों की संख्या गिनना चाहता हूं।एपेंगीन कार्य पेलोड कितना बड़ा हो सकता है?

मेरा वर्तमान दृष्टिकोण एक ऐसा कार्य बनाना है जो टाइप एक्स की पहली 10 इकाइयों के लिए पूछताछ करता है, जो ए के अद्वितीय मूल्यों को स्टोर करने के लिए हैशटेबल बना रहा है, फिर इस हैशटेबल को अगले कार्य में पेलोड के रूप में पास कर रहा है। यह अगला कार्य अगले 10 इकाइयों की गिनती करेगा और इतने आगे और आगे तक जब तक कि मैं सभी संस्थाओं से गुज़र जाऊंगा। अंतिम कार्य के निष्पादन के दौरान, मैं ए

के अद्वितीय मूल्यों की कुल संख्या को खोजने के लिए अपने हैशटेबल (जो कि कार्य से कार्य करने के लिए सभी को पास किया गया है) में कुंजी की संख्या गिनती है। यह एक छोटे से काम करता है मेरे डेटा स्टोर में इकाइयों की संख्या। लेकिन मुझे चिंता है कि मेरे पास बहुत सारे अद्वितीय मूल्य होने के बाद यह हैशटेबल बहुत बड़ा हो जाएगा। एक एपेंगेन कार्य के पेलोड के लिए अधिकतम स्वीकार्य आकार क्या है ?????

क्या आप कोई वैकल्पिक दृष्टिकोण सुझा सकते हैं?

धन्यवाद।

उत्तर

14

दस्तावेज़ों के अनुसार, the maximum task object size is 100K

+2

+1 ठंड कठिन तथ्यों के लिए +1। – Kredns

+0

ऑब्जेक्ट आकार = पेलोड आकार करता है? – aloo

+4

आपको किसी भी तरह अपनी ऑब्जेक्ट को क्रमबद्ध करने की आवश्यकता है। वह पेलोड है। यदि आप 10k से अधिक होने की अपेक्षा करते हैं, तो आप वास्तविक डेटा वाले डेटास्टोर इकाई की कुंजी को क्रमबद्ध करने के स्थगित लाइब्रेरी की चाल का उपयोग कर सकते हैं। –

1

"क्या आप कोई वैकल्पिक दृष्टिकोण सुझा सकते हैं?"।

मूल्य पर आधारित कुंजी बनाने और Model.get_or_insert का उपयोग करके प्रत्येक अद्वितीय मान के लिए एक इकाई बनाएं। फिर Query.count 1000 के बैचों में इकाइयों को ऊपर रखें (या फिर भी आप अपने अनुरोध समय से पहले गिन सकते हैं - 10 से अधिक), सामान्य पेजिंग चाल का उपयोग करके।

या get_or_insert के लिए डॉक्स में दिए गए कोड के समान कोड का उपयोग करने के लिए गिनती रखने के लिए - ऐप इंजन लेन-देन एक से अधिक बार चलाया जा सकता है, इसलिए लेनदेन में वृद्धि की गई एक memcached गणना अविश्वसनीय होगी। इसके आस-पास कुछ चाल हो सकती है, हालांकि, या आप डेटास्टोर में गिनती रख सकते हैं बशर्ते कि आप इकाई माता-पिता के साथ बहुत अप्रिय नहीं कर रहे हैं।

0

यह बहुत देर हो सकती है, लेकिन शायद इसका उपयोग किया जा सकता है। सबसे पहले, किसी भी समय आपके पास इकाइयों के एक समूह के माध्यम से क्रमशः चलने की इच्छा रखने का एक दूरस्थ मौका है, तो किसी भी दिनांक_क्रेटेड या डेट_मोडाइफाइड ऑटो_अपडेट फ़ील्ड का उपयोग करने का सुझाव दें जो अनुक्रमित है। इस बिंदु से आप json.dumps() का उपयोग करके अपनी हैश तालिका को स्टोर करने के लिए टेक्स्टप्रॉपर्टी के साथ एक मॉडल बना सकते हैं। आपको बस इतना करना है कि संसाधित अंतिम तिथि, और हैश तालिका इकाई के लिए मॉडल आईडी पास करें। अंतिम तिथि, json_load() टेक्स्टप्रोपर्टी के बाद डेट_क्रेटेड के साथ एक क्वेरी करें, और अगले 10 रिकॉर्ड जमा करें। थोड़ी अधिक परिष्कृत हो सकती है (उदाहरण के लिए पारित पैरामीटर का उपयोग करके डेट_क्रेटेड टकराव संभाल लें और थोड़ा अलग प्रश्न दृष्टिकोण)। हैश टेबल इकाई को अद्यतन करने के साथ किसी भी समस्या से बचने के लिए अगले कार्य में 1 सेकंड का उलटी गिनती जोड़ें। एचटीएच, -स्टवेप

संबंधित मुद्दे