आप किस प्रकार के व्यापार की तलाश में हैं? यदि आप इन इकाइयों को डालने पर एक छोटे से प्रदर्शन हिट के साथ तैयार करने के इच्छुक हैं, तो आप उनमें से एन को बहुत जल्दी प्राप्त करने के लिए एक समाधान बना सकते हैं।
जब आप अपने संस्थाओं डालें, कुंजी निर्दिष्ट करें:
यहाँ आप क्या करने की जरूरत है। आप 1 से शुरू होने और वहां से ऊपर जाने के क्रम में अपनी संस्थाओं को चाबियाँ देना चाहते हैं। (इसके लिए कुछ प्रयासों की आवश्यकता होगी, क्योंकि ऐप इंजन में ऑटोइनक्रिएशन() नहीं है, इसलिए आपको किसी अन्य इकाई में उपयोग की जाने वाली अंतिम आईडी का ट्रैक रखना होगा, चलिए इसे एक आईडीजनेटर कहते हैं)
अब जब आपको आवश्यकता हो एन यादृच्छिक संस्थाएं, 1 के बीच एन यादृच्छिक संख्याएं उत्पन्न करती हैं और आपके द्वारा जेनरेट की गई अंतिम आईडी जो भी थी (आपका आईडीजीनरेटर यह जानता होगा)। फिर आप एन चाबियों का उपयोग करके कुंजी द्वारा एक बैच प्राप्त कर सकते हैं, जिसे केवल डेटास्टोर के लिए एक यात्रा की आवश्यकता होगी, और एक क्वेरी से भी तेज़ होगा, क्योंकि कुंजी आमतौर पर पूछताछ से तेज होती है, AFAIK।
इस विधि में कुछ कष्टप्रद विवरण के साथ काम की आवश्यकता होती है:
- आपका IdGenerator अड़चन बन सकता है अगर आप मक्खी (अधिक कुछ एक सेकंड से भी) पर इन वस्तुओं की बहुत सारी डालने कर रहे हैं, जो आवश्यकता होगी कुछ प्रकार के sharded IdGenerator कार्यान्वयन।यदि यह सब डेटा प्रीलोड किया गया है, या उच्च मात्रा नहीं है, तो आपके पास यह आसान है।
- आपको लगता है कि कुछ आईडी में वास्तव में इसके साथ कोई इकाई नहीं है, क्योंकि आपने इसे हटा दिया है या क्योंकि एक put() कहीं विफल रहा है। यदि ऐसा हुआ तो आपको एक और यादृच्छिक इकाई पकड़नी होगी। (आप कल्पना हो और इस की संभावना को कम करना चाहता है तो आप "छेद को भरने के लिए" पुन: उपयोग करने IdGenerator को यह ईद उपलब्ध कर सकता है)
तो सवाल यह कितनी तेजी से आप इन एन जरूरत के लिए नीचे आता है आइटम बनाम आप कितनी बार जोड़ रहे होंगे और उन्हें हटा देंगे, और क्या प्रदर्शन की बढ़ोतरी के लिए थोड़ा अतिरिक्त जटिलता लायक है या नहीं।
स्रोत
2009-07-09 18:49:10
मैं इस के लिए एक मुद्दा बना लिया है, आप मदद करने के लिए यह तय मिल इसे तारांकित कर सकते हैं: https://code.google.com/p/googleappengine/issues/detail?id=9044 –