19

मैं यह तय करने की कोशिश कर रहा हूं कि मुझे ऐप-इंजन कनेक्ट एपीआई या डेटास्टोर को ऐप-इंजन कनेक्टेड एंड्रॉइड प्रोजेक्ट के लिए उपयोग करना चाहिए या नहीं। Google प्रलेखन का एकमात्र भेदAppengine खोज एपीआई बनाम डेटास्टोर

... एक अनुक्रमणिका खोज 10,000 से अधिक मिलान दस्तावेज़ नहीं ढूंढ सकती है। ऐप इंजन डेटास्टोर उन अनुप्रयोगों के लिए अधिक उपयुक्त हो सकता है जो को बहुत बड़े परिणाम सेट पुनर्प्राप्त करने की आवश्यकता है।

यह देखते हुए कि मैं डेटास्टोर से पहले से ही परिचित हूं: क्या कोई मेरी मदद कर सकता है, मुझे लगता है कि मुझे 10,000 परिणामों की आवश्यकता नहीं है?

  • वहाँ हैं मेरे प्रश्नों के लिए डेटास्टोर का उपयोग कर बनाम Search API का उपयोग कर के लिए किसी भी लाभ (उपर्युक्त उद्धरण प्रति, यह समझदार एक या अन्य उपयोग करने के लिए लगता है)? मेरे मामले में अंतिम उपयोगकर्ता खोज करने, मौजूदा प्रविष्टियों को अपडेट करने और नई संस्थाओं को बनाने में सक्षम होना चाहिए। उदाहरण के लिए यदि मेरा ऐप एक किताबों की दुकान है, तो उपयोगकर्ता नई किताबें जोड़ने, मौजूदा पुस्तकों में समीक्षा जोड़ने, एक विशिष्ट पुस्तक की खोज करने में सक्षम होना चाहिए।
  • मेरी डेटा संरचना ऐसी है कि सामग्री अंतिम उपयोगकर्ता द्वारा प्रदान की जाएगी। दस्तावेज़ बनाम डेटास्टोर इकाई: जो अद्यतन करने के लिए सस्ता है? $$, आदि
  • क्या वे एक-दूसरे को पूरक कर सकते हैं: डेटास्टोर और खोज एपीआई? क्या फायदा है? क्यों कोई दो जोड़ों पर विचार करेगा? पकड़/लागत क्या है?
+1

यह एक अच्छा सवाल है। लेकिन चयनित उत्तर उपपर है। मैं इस सवाल को वोट दूंगा, लेकिन एक बेहतर उत्तर की आवश्यकता है जो प्रश्न के बिंदुओं को संबोधित करे। – learner

उत्तर

5

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

+3

अधिक सटीक रूप से, डेटास्टोर में आप 'शामिल' द्वारा खोज नहीं कर सकते हैं इस प्रकार आप खोज के लिए यहां दो शब्दों के साथ उदाहरण खोज सकते हैं। डेटास्टोर में अन्य सीमाएं हैं जैसे कि केवल दो असमानताओं की अनुमति है। –

+0

उत्तर के लिए बहुत बहुत धन्यवाद। यह वास्तव में बहुत मदद करता है। तो क्या मुझे लगता है कि अन्यथा मैं अपने डेटा को स्टोर करने के लिए डेटास्टोर के खोज एपीआई और दस्तावेज़ ** के बजाय ** का उपयोग कर सकता हूं? अर्थात। क्या मैं समझता हूं कि डेटास्टोर का एकमात्र लाभ 10,000 सीमा है? अन्यथा, खोज एपीआई दस्तावेज़ कुछ भी कर सकते हैं जो डेटास्टोर कर सकता है? –

+1

आपको अभी भी डेटास्टोर की आवश्यकता है। यह वह जगह है जहां आप अपना डेटा स्टोर करते हैं, जैसे कि बुक आईडी/आईएसबीएन, लेखक, मूल्य, श्रेणी इत्यादि। आप पुस्तक शीर्षक और समीक्षाओं को स्टोर करने के लिए खोज एपीआई का उपयोग कर सकते हैं, लेकिन आपको इन रिकॉर्ड को डेटास्टोर में इकाइयों से जोड़ने की आवश्यकता है। –

15

कुछ अन्य जानकारी:

  1. डेटासंग्रह एक लेन-देन संबंधी प्रणाली है, जो कई उपयोग के मामलों में महत्वपूर्ण है। खोज एपीआई नहीं है। उदाहरण के लिए, आप एक लेनदेन में एक खोज अनुक्रमणिका में डाल और हटा नहीं सकते हैं और दस्तावेज नहीं कर सकते हैं।
  2. डेटास्टोर में कैसंड्रा जैसे नोएसक्ल डीबी के साथ बहुत आम है, जबकि खोज एपीआई वास्तव में एक टेक्स्टुअल सर्च इंजन है, जो ल्यूसीन की तरह कुछ है। यदि आप समझते हैं कि रिवर्स इंडेक्स कैसे काम करता है, तो आपको खोज एपीआई कैसे काम करती है, इसकी बेहतर समझ मिल जाएगी।
  3. डेटास्टोर एपीआई और खोज एपीआई के उपयोग को गठबंधन करने का एक बहुत अच्छा कारण यह है कि डेटास्टोर कुछ प्रकार के प्रश्नों (जैसे मुफ्त टेक्स्ट प्रश्न, भू-स्थानिक प्रश्न) करना बहुत मुश्किल बनाता है, जो खोज एपीआई बहुत आसानी से संभालती है। इस प्रकार, आप डेटास्टोर में अपनी मुख्य इकाइयां स्टोर कर सकते हैं, लेकिन फिर खोज एपीआई का उपयोग करें यदि आपको डेटास्टोर की अनुमति नहीं देता है। सड़क के नीचे, मुझे लगता है कि डेटास्टोर और सर्च एपीआई अधिक कड़े रूप से एकीकृत किए जाने पर यह बहुत अच्छा होगा, उदाहरण के लिए आप अनुक्रमित टेक्स्ट फ़ील्ड के खिलाफ मुफ्त टेक्स्ट खोज कर सकते हैं, जहां ऐप इंजन स्वचालित रूप से आपके लिए दृश्यों के पीछे एक खोज दस्तावेज़ अनुक्रमणिका बना देगा । https://developers.google.com/appengine/docs/java/search/#Java_Consistency

    इसका मतलब यह है कि जब आप जोड़ सकते हैं या खोज API के साथ एक रिकॉर्ड अद्यतन करें, इसे तुरंत परिवर्तन प्रतिबिंबित नहीं कर सकते:

2

खोज API के सबसे गंभीर चोर अंततः संगति के रूप में यहां कहा गया है। एक ऐसे मामले की कल्पना करें जहां कोई उपयोगकर्ता कोई पुस्तक अपलोड करता है या उसकी खाता सेटिंग अपडेट करता है, और कुछ भी नहीं बदलता है क्योंकि परिवर्तन अभी तक सभी सर्वरों पर नहीं गया है।

मुझे लगता है कि खोज एपीआई केवल एक चीज़ के लिए अच्छा है: खोजें। यह मूल रूप से डेटास्टोर में आपके डेटा के लिए एक खोज इंजन के रूप में कार्य करता है।

तो मेरी सलाह डेटा को डेटास्टोर में रखना है कि उपयोगकर्ता तत्काल परिणाम की अपेक्षा करता है, और उस डेटा को खोजने के लिए खोज एपीआई का उपयोग करें जिसे उपयोगकर्ता तत्काल परिणाम की उम्मीद नहीं करेगा।

0

डेटास्टोर केवल कुछ क्वेरी ऑपरेटरों (=,! =, <,>), नेस्ट फिल्टर और कई असमानताओं कर या तो महंगा या असंभव (समय समाप्ति) होगा और खोज परिणाम प्रदान करता False Positives का एक बहुत दे सकते हैं। आप टोकनिंग द्वारा आंशिक स्ट्रिंग खोज कर सकते हैं लेकिन यह आपकी इकाई को फहराएगा। इन सीमाओं को प्राप्त करने का सबसे अच्छा तरीका Structured Properties और/या Ancestor Queries का उपयोग कर रहा है।

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

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

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