अधिकांश वेब साइटों पर संदेश दृश्य मायने क्यों रखता है?


10

ध्यान दें कि YouTube वीडियो के दृश्य हमेशा कैसे आकर्षक होते हैं? उदाहरण के लिए, एक वीडियो में 1000 टिप्पणियां पसंद हैं और अभी भी 500 हिट हैं, और इसके 10000 घंटे बाद होंगे।

Youtube इसमें अकेला नहीं है। अधिकांश संदेश बोर्डों को उस तरह से लागू किया जाता है और प्रत्येक 10 मिनट या इसी तरह व्यू काउंट अपडेट किए जाते हैं।

क्या किसी को इसके पीछे का कारण पता है?

धन्यवाद।

जवाबों:


20

रिकॉर्डिंग दृश्य बहुत सरल है, बस "दृश्य" क्रिया का प्रतिनिधित्व करने वाली तालिका में एक पंक्ति जोड़ें। यह तेजी से है क्योंकि डेटाबेस में कोई लॉकिंग की आवश्यकता नहीं है, आप सिर्फ एक पंक्ति को ढेर के अंत में जोड़ रहे हैं।

यह देखते हुए कि विचारों की कुल संख्या में कुछ करने की आवश्यकता होती है, SELECT COUNT(*) FROM ...जिसका अर्थ है कि गणना की प्रगति के दौरान आपको तालिका को लॉक करना होगा। वैकल्पिक रूप से, UPDATE ... SET num_views = num_views + 1यह भी आवश्यक है कि आप उस विशेष पंक्ति को हर बार जब कोई व्यक्ति इसे देखता है तो उसे लॉक कर दें।

इसलिए देखने की क्षमता से, हर बार जब कोई वीडियो देखता है और SELECT COUNT(*) FROM ...हर दस मिनट या इसके बाद एक पंक्ति जोड़ना बहुत अधिक कुशल होता है।

नोट मुझे वास्तव में YouTube की वास्तुकला का पता नहीं है, या वे अपने डेटा को संग्रहीत करने के लिए एक संबंधपरक डेटाबेस का उपयोग करते हैं या नहीं, लेकिन वे जो भी उपयोग करते हैं, सिद्धांत समान है: डेटा सम्मिलित करना सस्ता है, मानों को एकत्रित करना (अपेक्षाकृत) महंगा है ।


4
क्या यह शेष Google के साथ BigTable का उपयोग नहीं करता है?
TheLQ

@ हार्ड हार्डिंग धन्यवाद, लेकिन क्या इसका मतलब यह नहीं है कि टेबल में अरबों होंगे, अगर खरब नहीं, तो मध्यम यातायात के साथ एक वेब साइट के लिए रिकॉर्ड भी बहुत कम youtube? इस तरह के बड़े रिकॉर्ड के साथ, मुझे संदेह है कि SELECT COUNT (*) का DB पर प्रदर्शन प्रभाव होगा, भले ही वह हर 10 मिनट पर चलता हो। यह भी डेटाबेस और बैकअप के लिए अधिक डिस्क स्थान की आवश्यकता होगी। मैं यह नहीं कह रहा हूं कि हर पेज के हिट होने पर टेबल को लॉक करना बेहतर है, लेकिन मुझे यह समझना मुश्किल है कि बड़ी वेब साइट्स इतने बड़े डेटा को कैसे संभालेंगी।
टॉम टकर

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

2
@ टकर टकर: हाँ, लेकिन हम यहां Google के बारे में बात कर रहे हैं, याद रखें :-) एक तरह से जो मैंने इस समस्या को छोटे स्तर पर हल किया है, वह यह है कि एक बार जब मैंने एकत्रीकरण समाप्त कर लिया है, तो मैं उस तालिका को छोटा कर दूंगा जो एकत्रित है से डेटा की गणना की गई थी। इसलिए आपको "रॉ" डेटा से कभी भी एक घंटे (या आप जो भी अंतराल को अपडेट करते हैं) से अधिक नहीं मिलता है।
डीन हार्डिंग

4
यह भी ध्यान रखें कि आपके "कार्यों" तालिका में डेटा का उपयोग "विचारों की संख्या" की गणना से अधिक के लिए किया जा सकता है। आप इसका उपयोग आईपी ब्लॉक (यानी "समान आईपी से हर 10 सेकंड में 1 से अधिक टिप्पणी नहीं") को लागू करने के लिए भी कर सकते हैं। आप समय के साथ विचारों की संख्या और अन्य प्रकार की चीज़ों को दिखाने वाले ग्राफ़ भी उत्पन्न कर सकते हैं जो एक सरल num_views = num_views + 1अनुमति नहीं देता है।
डीन हार्डिंग

8

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


4

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

पृष्ठ दृश्य मापने के कई तरीके हैं:

  • डेटाबेस में इसे रिकॉर्ड के रूप में संग्रहीत करें: सम्मिलित करना आसान है, हालांकि यह रिकॉर्ड के लिए एक प्रमुख रखरखाव ओवरहेड है जो केवल एक गिनती प्रदान कर रहे हैं।
  • डेटाबेस में इसे रिकॉर्ड के रूप में संग्रहित करें और समय-समय पर गिनती को रोल करें: सम्मिलित करने के लिए आसान, बैच प्रोसेसिंग जिसे आप चाहते हैं, उसे इकट्ठा करने के लिए और उसके बाद खुद को साफ करें।
  • डेटाबेस में एक गणना कॉलम अपडेट करें: अपडेट करने के लिए महंगा (पंक्ति लॉकिंग मानकर), कोई रखरखाव ओवरहेड नहीं, एक ही समय में एक ही पृष्ठ का अनुरोध करने वाले कई लोगों के साथ काम करते समय नकारात्मक प्रदर्शन।
  • जब यह रोल हो जाए तो एक्सेस लॉग फ़ाइल को प्रोसेस करें: डेटाबेस में कोई अतिरिक्त डेटा नहीं है, सभी प्रसंस्करण बैच-ऑफ-लाइन में किया जाता है, और जो सारांश आँकड़े आप चाहते हैं, वह समय होने पर अपडेट किए जाते हैं।

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


अंतिम समाधान के बारे में कभी नहीं सोचा - बहुत चालाक! वह अकेले ही लायक है।
टॉम टकर

1
दिन / सप्ताह / महीने के लिए "सबसे लोकप्रिय" पृष्ठ सूचियों को संभालने के लिए हमने उस दृष्टिकोण का उपयोग किया। हमने दिनों, सप्ताह और महीनों के लिए एक साधारण गुण फ़ाइल तक की संख्याएँ रोल कीं। वर्तमान दिन हर घंटे पुनर्प्राप्त हो जाएगा, और शेष सारांश फ़ाइलों को दादा / पिता / पुत्र बैकअप टेप की तरह व्यवहार किया गया। अनिवार्य रूप से हमें 8 से अधिक सारांश फ़ाइलों (साप्ताहिक सारांश, और चालू सप्ताह के प्रत्येक दिन के लिए सारांश फ़ाइल) की आवश्यकता नहीं थी।
बेरिन लोरिट्श

यह उसी तरह है जैसे RRDTool कैसे काम करता है, हालांकि RRDTool अपने सुरुचिपूर्ण सादगी के साथ आपके समाधान की तुलना में बहुत अधिक जटिल है।
जोर्ग डब्ल्यू मित्तग

0

यह कई कारणों से हो सकता है। यह सभी प्रत्येक संबंधित वेबसाइट द्वारा उपयोग किए गए एल्गोरिदम को उबालता है। जब तक यहां कोई व्यक्ति वास्तव में YouTube डेवलपर नहीं है, मुझे संदेह है कि आपके यहां सटीक उत्तर प्राप्त होने जा रहा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.