2016-09-26 12 views
11

एक नोड 100 मिलियन बच्चे हैं, तो उसके लिए प्रदर्शन प्रभाव हो सकता है अगर मैं:फायरबेस प्रदर्शन: प्रति नोड कितने बच्चे हैं?

एक) क्वेरी है, लेकिन 10 से सीमा परिणाम

ख) बच्चों में से एक देखो केवल

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

+2

आप इस https://firebase.google.com/docs/database/web/structure-data –

+1

और यह भी https://firebase.google.com/docs/database/web/retrieve-data – Kato

+1

मैं पढ़ना चाहिए एक समान समस्या थी (एक RecyclerView में एक बड़ी सूची प्रस्तुत करना), यहां देखें: http://stackoverflow.com/questions/36401332/firebase-android-offline-performance आप यहां अपना समाधान ढूंढ सकते हैं: http://stackoverflow.com/ए/37772597/6155664 – Niels

उत्तर

12

यदि किसी नोड में बहुत से बच्चे हैं, तो किसी भी तरह से नोड तक पहुंचने से समस्याओं के लिए नुस्खा होता है। एक व्यक्तिगत बच्चे तक पहुंच कभी भी एक समस्या नहीं है।

अपने बच्चों के उप-समूह के लिए नोड क्वेरी करने के लिए अभी भी आवश्यक है कि डेटाबेस उन सभी बच्चों पर विचार करें। यदि आप 100 मिलियन वस्तुओं में से अंतिम 10 में से अनुरोध करते हैं, तो आप डेटाबेस को 999,999, 9 0 9 आइटमों पर विचार करने के लिए कह रहे हैं, जिन्हें आप स्पष्ट रूप से रुचि नहीं रखते हैं।

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

फ़ायरबेस (और अधिकतर नोएसक्यूएल समाधान) में आपका सबसे अच्छा तरीका डेटा को मॉडल करने के लिए है जो आपके ऐप को उस डेटा का उपयोग करने के तरीके के साथ फिट करता है। तो उदाहरण के लिए: यदि आपको अपने उपयोगकर्ताओं को नवीनतम 10 आइटम दिखाना है, तो उन नवीनतम 10 आइटमों को एक अलग सूची में (कुंजी) की स्टोर करें।

items 
    -K........0 
     title: "Firebase Performance: How many children per node?" 
     body: "If a node has 100 million children, will there be a performance impact if I:..." 
    -K........1 
     title: "Firebase 3x method won't working in real device but worked in simulator swift 3.0" 
     body: "Hi we are working with google firebase 3x version and we faced..." 
    . 
    . 
    . 
    -K999999998 
    -K999999999 
recent 
    -K999999990: true 
    -K999999991: true 
    -K999999992: true 
    -K999999993: true 
    -K999999994: true 
    -K999999995: true 
    -K999999996: true 
    -K999999997: true 
    -K999999998: true 
    -K999999999: true 

मुझे यकीन है कि अगर मैं वहाँ में नौ की सही संख्या मिल नहीं कर रहा हूँ, लेकिन मुझे आशा है कि आप विचार मिलता है।

+2

और "केवल बच्चों में से एक को देखना" के रूप में सरल है 'ref.child (childId) .on (' value ', ...) ' – Kato

+0

धन्यवाद! यदि आप किसी विशिष्ट अनुक्रमित फ़ील्ड से पूछताछ कर रहे हैं, तो मैं ओ (लॉग (एन)) प्राप्त करने में सक्षम होने की अपेक्षा करता हूं। क्या आपको ऐसा प्रदर्शन मिलता है? (इसमें 100 मिलियन के डेटासेट के साथ ~ 26 प्रयास किए जाएंगे) – CalM

+0

उपर्युक्त उदाहरण में, 'आइटम' की बढ़ती सूची चिंता का विषय है, भले ही मुझे 'आइटम' नोड पर कोई प्रत्यक्ष पढ़ा न जाए? क्या आपने कुछ प्रकार के संग्रहण तंत्र को लागू किया होगा? 'आइटम/जून 20147', 'आइटम/अगस्त 2014', आदि जैसे? या जब आइटम सक्रिय रूप से उपयोग नहीं किया जाता है तो हो सकता है कि आइटम को सभी नए नोड पर एक साथ ले जाएं। – Atu

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