2015-05-15 13 views
6

में एक प्रश्न की जटिलता मेरे पास एक एंड्रॉइड ऐप है जहां उपयोगकर्ता एक-दूसरे को निजी संदेश भेज सकेंगे। (उदाहरण के लिए: ए बी और सी को एक संदेश भेजता है और उनमें से तीन संदेश को टिप्पणी कर सकते हैं)Google डेटास्टोर

मैं Google ऐप इंजन और जावा के साथ Google डेटास्टोर का उपयोग करता हूं। (ढांचा ऑब्जेक्टिफ़ाई) मैंने Member इकाई और Message इकाई बनाई है जिसमें ArrayList<String> फ़ील्ड है, जो प्राप्तकर्ताओं की सूची का प्रतिनिधित्व करता है। (Member इकाई का मुख्य क्षेत्र कहना है)

उपयोगकर्ता को सभी संदेशों को प्राप्त करने के लिए जहां वह प्राप्तकर्ताओं में से एक है, मैं डेटास्टोर पर प्रत्येक Message इकाई को लोड करने की योजना बना रहा था और फिर उन्हें चुनें यह जांचकर कि ArrayList<String> फ़ील्ड में उपयोगकर्ता का आईडी है या नहीं। हालांकि, विचार कर रहे हैं कि हजारों संदेश संग्रहीत किए जा सकते हैं, मैं सोच रहा था कि यह भी संभव है और यदि इसमें अधिक समय नहीं लगेगा?

+2

क्या 'yy() लोड() टाइप (Message.class) .filter ('प्राप्तकर्ता =', myMemberId) 'आप जो चाहते हैं वह नहीं करते? सदस्य के 'संदेश' वास्तव में कितने प्राप्तकर्ता होंगे? – tx802

+0

मुझे लगता है कि यह काम करना चाहिए, धन्यवाद। मुझे लगता है कि औसतन 'संदेश' में 8 सदस्यों की प्राप्तकर्ता सूची होगी। क्या आपको अभी भी विश्वास है कि आपकी क्वेरी सुविधाजनक होगी? – Gannicus

उत्तर

1

डेटास्टोर से परिणाम प्राप्त करने का समय केवल निकाली गई संस्थाओं की संख्या से संबंधित है, न कि प्रविष्टियों की कुल संख्या के लिए, क्योंकि प्रत्येक क्वेरी को इंडेक्स का उपयोग करना चाहिए। यह वही है जो डेटास्टोर को इतना स्केलेबल बनाता है।

आपको प्रति कॉल पुनर्प्राप्त संदेशों की संख्या सीमित करना होगा और अगले बैच को लाने के लिए Cursor का उपयोग करना होगा। आप कर्सर को एंड्रॉइड क्लाइंट को websafe string में परिवर्तित करके भेज सकते हैं, इसलिए ग्राहक अगले अनुरोध के लिए शुरुआती बिंदु इंगित कर सकता है।

+0

वास्तव में एक सदस्य के पास उस संदेश को संबोधित नहीं किया जाएगा जो उसे संबोधित किया जाता है। असल में उसके पास 50 से अधिक संदेश नहीं हो सकते हैं क्योंकि मैं उन्हें हर हफ्ते या तो हटाने की योजना बना रहा हूं। डेटास्टोर में संदेशों की कुल संख्या केवल एकमात्र आकार-समस्या का सामना कर सकती है, जो काफी बड़ी हो सकती है। मुझे यकीन है कि "प्रत्येक क्वेरी को इंडेक्स का उपयोग करना चाहिए" के बारे में आप निश्चित नहीं हैं, लेकिन टीएक्स 802 (ऑफी() लोड() टाइप (संदेश.क्लास) .filter ('प्राप्तकर्ता =', myMemberId द्वारा सुझाई गई क्वेरी होगी) और जोड़ने के लिए @Index जोड़ना सूची फ़ील्ड उस आवश्यकता के अनुरूप है? – Gannicus

+0

हां, सदस्य आईडी (या कुंजी) की सूची को इस तरह की क्वेरी में उपयोग करने के लिए '@ इंडेक्स 'एनोटेशन की आवश्यकता होगी। – tx802

+0

@ tx802 वास्तव में आपकी क्वेरी एक खाली संग्रह। क्या आप सुनिश्चित हैं कि यह 'yy() लोड() प्रकार (संदेश। क्लास)। प्रकार ('प्राप्तकर्ता है', myMemberId) '? – Gannicus

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