ฉันไม่แน่ใจว่าเป็น MapReduce ที่แก้ปัญหาได้หรือไม่ แต่แน่นอนว่าไม่ใช่ MapReduce เพียงอย่างเดียวที่จะแก้ปัญหาทั้งหมดที่คุณถาม แต่นี่คือสิ่งสำคัญที่ต้องคำนึงถึงและทำให้เป็นไปได้ที่จะมีความหน่วงแฝงต่ำในการค้นหาจาก TBs ของข้อมูลเหล่านี้ในเครื่องต่างๆ:
- การคำนวณแบบกระจาย: โดยการกระจายไม่ได้หมายความว่าดัชนีนั้นถูกแจกจ่ายในเครื่องต่าง ๆ พวกมันถูกจำลองแบบไปตามกลุ่มที่แตกต่างกันซึ่งช่วยให้ผู้ใช้จำนวนมากดำเนินการสืบค้นที่แตกต่างกันด้วยเวลาเรียกคืนต่ำ (ใช่ บริษัท ใหญ่ ๆ ของเครื่องจักร);
- การแคช: แคชลดเวลาดำเนินการลงอย่างมากไม่ว่าจะเป็นขั้นตอนการรวบรวมข้อมูลเพื่อดึงข้อมูลหน้าเว็บหรือเพื่อการจัดอันดับและการยกเลิกผลลัพธ์
- tweaking มากมาย: ทุกขั้นตอนวิธีและวิธีการแก้ปัญหาที่มีประสิทธิภาพนั้นจะมีประสิทธิภาพก็ต่อเมื่อการนำไปใช้นั้นมีประสิทธิภาพเช่นกัน มีการเพิ่มประสิทธิภาพ (ฮาร์ดโค้ด) มากมายเช่นสถานที่อ้างอิงการบีบอัดแคช พวกเขาทั้งหมดมักจะนำไปใช้กับส่วนต่าง ๆ ของการประมวลผล
หากพิจารณาให้ลองตอบคำถามของคุณ:
แต่ฉันคิดว่ามันเป็นไปไม่ได้ที่ผลลัพธ์ของการสืบค้นที่เป็นไปได้ทั้งหมดจะถูกจัดทำดัชนี
ใช่มันจะเป็นจริงและเป็นไปไม่ให้มีผลสำหรับการค้นหาทุกที่เป็นไปได้เพียงครั้งเดียว มีจำนวนคำศัพท์ที่ไม่สิ้นสุดในโลก (แม้ว่าคุณจะสมมติว่ามีการป้อนคำสะกดอย่างถูกต้องเท่านั้น) และมีคำค้นหาจำนวนมากจากคำเหล่านี้n -> inf
( 2^n
) แล้วจะทำอย่างไร? เก็บเอาไว้. แต่ถ้ามีข้อความค้นหา / ผลลัพธ์จำนวนมากคำถามใดที่จะแคช? นโยบายการแคช ข้อความค้นหาที่พบบ่อย / เป็นที่นิยม / เกี่ยวข้องกับผู้ใช้มากที่สุดคือข้อความค้นหาที่ถูกแคช
ฮาร์ดแวร์เวลาแฝงในฮาร์ดแวร์ของ Google จะไม่ใหญ่หรือไม่ แม้ว่าข้อมูลใน Google ทั้งหมดจะถูกเก็บไว้ใน TB / s SSD
ทุกวันนี้ด้วยตัวประมวลผลที่ได้รับการพัฒนาอย่างสูงผู้คนมักคิดว่างานที่เป็นไปได้ทุกอย่างที่ต้องเสร็จภายในไม่กี่วินาที (หรือน้อยกว่า) และที่เกี่ยวข้องกับข้อมูลจำนวนมากจะต้องถูกประมวลผลโดยโปรเซสเซอร์ที่ทรงพลังมาก อย่างไรก็ตามตลาดสิ่งหนึ่งที่ปกครองคือเงินและนักลงทุนไม่สนใจที่จะเสียมัน แล้วจะทำอย่างไร?
การตั้งค่านั้นมีไว้สำหรับการมีเครื่องจักรจำนวนมากแต่ละเครื่องใช้ตัวประมวลผลอย่างง่าย / สามารถเข้าถึงได้ (ในแง่ของต้นทุน) ซึ่งลดราคาของการสร้างกลุ่มจำนวนมากมายที่มีอยู่ และใช่มันใช้งานได้ คอขวดหลักจะเดือดลงดิสก์เสมอหากคุณพิจารณาการวัดประสิทธิภาพที่ง่าย แต่เมื่อมีเครื่องจักรจำนวนมากใคร ๆ ก็สามารถโหลดสิ่งต่าง ๆ ได้ถึงหน่วยความจำหลักแทนที่จะทำงานบนฮาร์ดดิสก์
การ์ดหน่วยความจำมีราคาแพงสำหรับเราไม่ใช่แค่มนุษย์ แต่ราคาถูกสำหรับองค์กรที่ซื้อการ์ดจำนวนมากในครั้งเดียว เนื่องจากมันไม่ได้มีราคาแพงการมีหน่วยความจำมากเท่าที่จำเป็นในการโหลดดัชนีและเก็บแคชไว้ในมือจึงไม่ใช่ปัญหา และตั้งแต่มีเครื่องจำนวนมากจึงมีความจำเป็นสำหรับการประมวลผลเร็วสุดไม่เป็นคุณสามารถนำคำสั่งไปยังสถานที่ที่แตกต่างกันและมีกลุ่มของเครื่องรับผิดชอบในการเข้าพื้นที่ทางภูมิศาสตร์ที่เฉพาะเจาะจงซึ่งจะช่วยให้มากขึ้นโดยเฉพาะการแคชข้อมูลและการตอบสนองที่ดียิ่งขึ้น ครั้ง
MapReduce ช่วยแก้ปัญหานี้หรือไม่?
แม้ว่าฉันจะไม่คิดว่าการใช้หรือไม่ใช้ MapReduce เป็นข้อมูลที่ถูก จำกัด ใน Google แต่ฉันไม่คุ้นเคยกับประเด็นนี้ อย่างไรก็ตามการใช้งาน MapReduce ของ Google (ซึ่งไม่ใช่ Hadoop อย่างแน่นอน) จะต้องมีการปรับแต่งให้เหมาะสมจำนวนมากซึ่งเกี่ยวข้องกับประเด็นต่างๆ ดังนั้นสถาปัตยกรรมของ MapReduce อาจช่วยชี้แนะว่าการคำนวณมีการกระจายตัวอย่างไร แต่มีจุดอื่น ๆ อีกมากมายที่ต้องพิจารณาถึงความเหมาะสมของความเร็วในการสืบค้นเวลา
ตกลงดังนั้นฉันเข้าใจว่าการค้นหายอดนิยมสามารถเก็บไว้ในหน่วยความจำได้ แต่การค้นหาที่ไม่เป็นที่นิยม
กราฟด้านล่างแสดงเส้นโค้งของประเภทการสืบค้นที่เกิดขึ้น คุณจะเห็นว่ามีการค้นหาหลักสามประเภทแต่ละประเภทมีการสืบค้นประมาณ 1/3 ของปริมาณการสืบค้น (พื้นที่ด้านล่างเส้นโค้ง) พล็อตแสดงกฎหมายพลังงานและตอกย้ำความจริงที่ว่าการค้นหาขนาดเล็กเป็นที่นิยมมากที่สุด แบบสอบถามที่สามที่สองยังคงเป็นไปได้ในการประมวลผลเนื่องจากมีคำไม่กี่คำ แต่ชุดของข้อความค้นหาที่คลุมเครือซึ่งมักจะประกอบด้วยข้อความค้นหาของผู้ใช้ที่ไม่มีประสบการณ์ไม่ได้เป็นส่วนหนึ่งของแบบสอบถาม
และมีพื้นที่สำหรับการแก้ปัญหาใหม่อยู่ เนื่องจากไม่ใช่ข้อความค้นหาเพียงหนึ่งหรือสองแบบสอบถาม (แต่เป็นหนึ่งในสามของแบบสอบถาม) จึงต้องมีผลลัพธ์ที่เกี่ยวข้อง หากคุณพิมพ์สิ่งที่คลุมเครือเกินไปในการค้นหาของ Google มันไม่ต้องใช้เวลานานกว่าจะส่งคืนรายการผลลัพธ์ แต่ส่วนใหญ่จะแสดงบางสิ่งที่อนุมานว่าคุณต้องการพูด หรืออาจกล่าวง่ายๆว่าไม่มีเอกสารที่มีคำดังกล่าว - หรือแม้แต่ลดการค้นหาของคุณเป็น 32 คำ (ซึ่งเพิ่งเกิดขึ้นกับฉันในการทดสอบแบบสุ่มที่นี่)
มีฮิวริสติกที่สามารถใช้งานได้หลายสิบแบบซึ่งอาจเป็นได้ทั้งการเพิกเฉยบางคำหรือพยายามแยกคำถามออกเป็นคำเล็ก ๆ และรวบรวมผลลัพธ์ที่ได้รับความนิยมสูงสุด และโซลูชั่นเหล่านี้สามารถปรับแต่งและปรับแต่งเพื่อเคารพเวลารอคอยที่เป็นไปได้ของการพูดน้อยกว่าหนึ่งวินาที? : D