Google इतना तेज़ कैसे हो सकता है?


89

वे कौन सी प्रौद्योगिकियाँ और प्रोग्रामिंग निर्णय हैं जो Google को इतनी तेज़ी से एक क्वेरी परोसने में सक्षम बनाते हैं?

जब भी मैं कुछ खोजता हूं (प्रति दिन कई बार में से एक) यह हमेशा मुझे आश्चर्यचकित करता है कि वे परिणामों को लगभग दूसरे समय से कम या कम कैसे परोसते हैं। किस तरह का कॉन्फ़िगरेशन और एल्गोरिदम उनके पास हो सकता है जो इसे पूरा करता है?

साइड नोट: यह एक तरह से भारी सोच है कि भले ही मुझे डेस्कटॉप एप्लिकेशन डालना था और अपनी मशीन पर इसका उपयोग करना था, शायद Google जितना तेज़ नहीं होगा। मैं कहता हूं सीखते रहो।


यहाँ कुछ बेहतरीन जवाब और संकेत दिए गए हैं:

जवाबों:


47

डिस्क एक्सेस द्वारा लेटेंसी को मार दिया जाता है। इसलिए यह मानना ​​उचित है कि प्रश्नों का उत्तर देने के लिए उपयोग किए जाने वाले सभी डेटा को स्मृति में रखा जाता है। इसका मतलब है हजारों सर्वर, प्रत्येक में कई शार्प की प्रतिकृति है। इसलिए खोज के लिए महत्वपूर्ण पथ उनके किसी भी प्रमुख वितरित सिस्टम प्रौद्योगिकियों GFS, MapReduce या BigTable को हिट करने की संभावना नहीं है। क्रॉलर परिणामों को क्रूडली प्रोसेस करने के लिए इनका उपयोग किया जाएगा।

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

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

ध्यान दें कि यह संभवतः एक लंबा रास्ता है जो Google वास्तव में करता है - उन्होंने इस प्रणाली से जीवन को प्रभावित किया होगा ताकि अन्य अजीब अंतरों में अजीब क्षेत्रों, अजीब अनुक्रमित और कुछ प्रकार के फंकी लोड-बैलेंसिंग योजना में अधिक कैश हो सकें। ।



22

एक तथ्य यह है कि मैंने अजीब पाया है कि Google वास्तव में जैव सूचना विज्ञान द्वारा संचालित है ('का, मुझे लगता है कि क्योंकि मैं एक जीविका हूँ ... अजीब बात है)। मुझे समझाने दो।

जैव सूचना विज्ञान की शुरुआत में बहुत तेजी से छोटे ग्रंथों को खोजने की चुनौती थी। हमारे लिए, "विशाल स्ट्रिंग" निश्चित रूप से डीएनए है। अक्सर एक डीएनए नहीं बल्कि विभिन्न प्रजातियों / व्यक्तियों के कई डीएनए का एक डेटाबेस। छोटे ग्रंथ प्रोटीन या उनके आनुवंशिक समकक्ष, एक जीन हैं। जीन के बीच समरूपता खोजने के लिए कम्प्यूटेशनल जीवविज्ञानी के पहले काम का अधिकांश हिस्सा प्रतिबंधित था। यह पहले से ही ज्ञात जीनों की समानता को ध्यान में रखते हुए नए पाए गए जीनों के कार्य को स्थापित करने के लिए किया जाता है।

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

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

लेकिन संक्षेप में, तथाकथित q-gram index निरंतर समय में देखने की अनुमति देता है। एकमात्र नुकसान: डेटा संरचना हास्यास्पद रूप से बड़ी हो जाती है। मूल रूप से, क्ष वर्णों (इसलिए नाम) के साथ तार की खोज के लिए अनुमति देने के लिए , इसमें एक तालिका की आवश्यकता होती है जिसमें q अक्षरों के प्रत्येक संभावित संयोजन के लिए एक क्षेत्र होता है (यानी, q S , जहां S वर्णमाला के आकार का होता है। , 36 (= 26 + 10) कहते हैं। इसके अतिरिक्त, स्ट्रिंग में प्रत्येक अक्षर की स्थिति के लिए एक फ़ील्ड होना चाहिए जो अनुक्रमित किया गया था (या प्रत्येक वेब साइट के लिए Google के मामले में)।

सरासर आकार को कम करने के लिए, Google संभवतः कई सूचकांकों का उपयोग करेगा (वास्तव में, वे करते हैं , वर्तनी सुधार जैसी सेवाओं की पेशकश करने के लिए)। सर्वोच्च व्यक्ति चरित्र स्तर पर नहीं बल्कि शब्द स्तर पर काम करेंगे। इससे q कम हो जाता है लेकिन यह S को असीम रूप से बड़ा बनाता है इसलिए उन्हें विभिन्न शब्दों की अनंत संख्या का सामना करने के लिए हैशिंग और टकराव तालिकाओं का उपयोग करना होगा।

अगले स्तर पर, ये हैशेड शब्द अन्य सूचकांक डेटा संरचनाओं की ओर इशारा करेंगे, जो बदले में, वेबसाइटों को इंगित करने वाले हैश वर्ण होंगे।

लंबी कहानी छोटी, ये q -ग्राम सूचकांक डेटा संरचनाएं यकीनन Google के खोज एल्गोरिदम का सबसे केंद्रीय हिस्सा हैं। दुर्भाग्य से, कोई अच्छा गैर-तकनीकी पेपर नहीं है जो यह बताता है कि q -gram indices कैसे काम करता है। एकमात्र प्रकाशन जो मुझे पता है कि इस तरह का एक सूचकांक कैसे काम करता है, इसका वर्णन है ... अफसोस, मेरे स्नातक थीसिस


4
मैं 5 वर्षों के लिए जैव सूचना विज्ञान में था, और उसके बाद खोज इंजन - और क्यू-ग्राम उतना महत्वपूर्ण नहीं हैं जितना आपको लगता है कि वे हैं। Google जिस तरह के लुकअप (एक बहुत, बहुत बुनियादी स्तर पर) करता है, उसके लिए मूलभूत डेटा संरचना उल्टा सूचकांक है।
स्क्वायरकॉच

जो गलत लगता है। Google एक उल्टे सूचकांक पर चल रहा है या चल रहा है। क्यू-ग्राम वाक्यांशों के लिए उपयोगी होगा, लेकिन सामान्य रूप से नहीं
स्टीफन सेवव

@ सफ़्फ़ान: वही टिप्पणी स्क्वायरकॉग ने पहले ही कर दी थी - और मैं इस बात से इनकार नहीं करता कि उल्टे सूचकांक एक बड़ी भूमिका निभाते हैं (और शायद n-ग्राम सूचकांकों की तुलना में बहुत बड़ी)। मैंने यह एक तकनीक निकाली क्योंकि n- ग्राम मेरा एक पालतू पशु संरचना है, और मुझे लगता है कि महत्वपूर्ण अंतर्दृष्टि - Google तेज़ है क्योंकि इसे वास्तव में "खोज" नहीं करना है, यह अधिक या कम प्रत्यक्ष रूप से खोज कर सकता है - इस तरह के सूचकांक पर निर्भर करता है (nb: यह संभवत: हैशिंग के माध्यम से किया जाता है लेकिन यह अभी भी एक एन-ग्राम इंडेक्स है)। यह सूचकांक भी उलटा होता है, मेरी बात के लिए आकस्मिक है (हालांकि शायद Google ;-) के लिए नहीं)।
कोनराड रुडोल्फ

5

यहाँ कुछ बेहतरीन जवाब और संकेत दिए गए हैं:


4

उन्होंने हार्डवेयर की एक विशाल मात्रा में चल रहे अच्छे, वितरित, एल्गोरिदम को लागू किया है।


4

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


4

हर कोई यह जानता है कि वे कबूतरों का उपयोग करते हैं , ज़ाहिर है!

ओह, हाँ, और Mapreduce।


अगर वे उनके लिए काम करने के लिए चूहों को भी प्राप्त करते हैं, तो सबसे अधिक उपयोग करने वाले और कष्टप्रद प्राणियों में से दो को नौकरी
मिलेगी

मैं इस एक haha के साथ एक बहुत हंसी
victrnava

3

उनके पास कस्टम फाइलसिस्टम पर पीसी के हजारों पर कैश्ड इंटरनेट की एक स्थानीय प्रति है।


डिस्क-आधारित फाइलसिस्टम को हिट करने में विलंबता के संदर्भ में बहुत अधिक खर्च होगा (अमेज़ॅन ने डायनामो के साथ इसे पाया और इसके लिए कुछ लचीलापन दिया); मुझे संदेह है कि महत्वपूर्ण पथ पर सब कुछ स्मृति में रखा गया है।
हेनरीआर

3

Google सबसे अच्छे से अच्छा काम करता है। IT के कुछ होशियार लोग google पर काम करते हैं। उनके पास हार्डवेयर और इंजीनियरों को फेंकने के लिए लगभग अनंत पैसे हैं।

वे उन कार्यों के लिए अत्यधिक अनुकूलित भंडारण तंत्र का उपयोग करते हैं जो वे प्रदर्शन कर रहे हैं।

उनके पास भौगोलिक रूप से स्थित सर्वर फ़ार्म हैं।


3

सामान्यीकृत सूची में एक प्रयास (जो Google के आंतरिक उपकरणों तक आपकी पहुंच पर निर्भर नहीं करता है):

  1. Parellelize अनुरोध (जैसे छोटे सेट में एकल अनुरोध को तोड़ना)
  2. Async (जितना संभव हो उतना अतुल्यकालिक बनाएं, जैसे उपयोगकर्ता के अनुरोध को अवरुद्ध नहीं करेगा)
  3. मेमोरी / कैश (डिस्क I / O धीमा है, मेमोरी में जितना संभव हो उतना कम रखें)
  4. पूर्व-गणना (हाथ से पहले जितना संभव हो उतना काम करें, उपयोगकर्ता द्वारा डेटा / प्रोसेसिंग के लिए पूछने की प्रतीक्षा न करें)
  5. अपने फ्रंट-एंड HTML की देखभाल करें (Yslow और दोस्तों को देखें)

2

आप Google शोध मुखपृष्ठ पर कुछ Google लोगों द्वारा लिखे गए शोध पत्रों के बारे में कुछ संकेत दे सकते हैं । आपको Google फ़ाइल सिस्टम के स्पष्टीकरण अनुपात और मानचित्र / एल्गोरिदम को कम करने की कोशिश करनी चाहिए और समझने की कोशिश करनी चाहिए कि Google पृष्ठों के पीछे क्या हो रहा है।



1

हार्डवेयर।

बहुत सारे और बहुत सारे हार्डवेयर। वे अपने सर्वर फ़ार्म के रूप में कमोडिटी पीसी के विशाल समूहों का उपयोग करते हैं।


बस 'बड़े पैमाने पर' को स्पष्ट करने के लिए: सैकड़ों हजारों सर्वर। मुझे लगता है कि Google के बाहर कोई भी वास्तविक संख्या नहीं जानता है और उसे हर समय बदलना होगा।
सर्जियो अकोस्टा

1

ट्रामापोनी सही है। लोड संतुलन / कैशिंग और वॉइला के लिए टोंस सर्वर और स्मार्ट आर्किटेक्चर आप 1 सेकंड से कम में क्वेरी चला सकते हैं। Google सेवाओं की वास्तुकला का वर्णन करने वाले नेट पर बहुत सारे लेख थे। मुझे यकीन है कि आप उन्हें Google के माध्यम से पा सकते हैं :)


1

हेनरीआर शायद सही है।

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



0

और एल्गोरिदम जो उस हार्डवेयर पावर का उपयोग कर सकते हैं। उदाहरण के लिए मानचित्रण की तरह ।


MapReduce का उपयोग प्रश्नों का उत्तर देने के लिए नहीं किया जाता है।
MSalters

MapReduce मशीनों के एक बड़े समूह पर चलता है और अत्यधिक स्केलेबल है: एक विशिष्ट MapReduce कम्प्यूटेशन हजारों मशीनों पर डेटा के कई टेराबाइट्स को संसाधित करता है। सैकड़ों MapReduce कार्यक्रम कार्यान्वित किए गए हैं और एक हजार से ऊपर MapReduce की नौकरियां प्रतिदिन Google के समूहों पर निष्पादित की जाती हैं
Vinko Vrsalovic

MapReduce का उपयोग लगभग निश्चित रूप से अतुल्यकालिक इंडेक्स क्रॉलर डेटा के लिए किया जाता है। मुझे बहुत आश्चर्य होगा अगर यह खोज के लिए महत्वपूर्ण पथ पर था। MapReduce की नौकरी बंद करने से वास्तव में विलंबता को मार दिया जाएगा।
हेनरीआर

हेनरी - वे इसे दिशाओं / मानचित्रों में मार्ग के लिए उपयोग कर रहे होंगे। लेकिन हाँ, सामान्य मामले के लिए। आप नियमित रूप से उपयोगकर्ता क्वेरी का जवाब देने के लिए कोई कट्टर गणना नहीं करना चाहते हैं।
स्क्वायरकॉच

0

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

यह google द्वारा Mapreduce पर आधारित है ।


HDFS एक वितरित फ़ाइल प्रणाली है। Mapreduce क्लोन को Hadoop कहा जाता है, और यह HDFS या आपके स्थानीय फ़ाइल सिस्टम पर चल सकता है।
स्क्वायरचोग

0
  1. मल्टी स्टेज्ड डेटा स्टोरेज, प्रोसेसिंग और रिट्रीवल

  2. उपरोक्त कार्यों के प्रभावी वितरण (100 के 1000 मशीनों में से)

  3. कच्चे डेटा और संसाधित परिणामों को संग्रहीत करने के लिए अच्छा ढांचा

  4. परिणाम प्राप्त करने के लिए अच्छा ढांचा

यह सब कैसे किया जाता है, यह उन सभी कड़ियों द्वारा संक्षेपित किया गया है जो आपके पास प्रश्न सारांश में हैं

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