زمان اعجاب‌آور جست‌و‌جو در گوگل از کجا ناشی می‌شود؟

همه‌ی شما دست کم یک‌بار تجربه‌ی جست و جو در سایت Google™ را داشته‌اید و بی‌گمان متوجه زمانی که "با افتخار" در بالای نتایج جست‌و‌جو و در کنار تعداد صفحات پیدا شده نوشته می‌شود گشته‌اید. پیدا کردن صدها هزار صفحه در کسری از ثانیه واقعاً افتخار هم دارد. اما چه گونه چنین کاری ممکن است؟

در مقاله‌ی "Serverها باهم چه تفاوتی دارند"[1] به برخی از تجهیزات سخت‌افزاری و تکنولوژی‌هایی که در انجام این کار به کمک چنین سازمان‌هایی می‌آیند اشاره کردیم. حال در این مقاله به جزئیات بیشتری (و البته تنها به بحث درباره‌ی گوگل) می‌پردازیم.

بیایید ابتدا مشکل را پیدا کنیم: متوسط زمان پویش داده‌ها[2] در بهترین دیسک‌های سخت موجود حدود 4میلی ثانیه است. زمانی که انسان به عنوان "لحظه" درنظر دارد حدود 50میلی ثانیه است. حال اگر شما فقط به یک پویش برای هر درخواست کاربران احتیاج داشته باشید، قبل از این‌که کاربری اعلام کندی سرعت کند، تنها12 درخواست را می‌توانید جواب‌گو باشید. اگر برنامه‌ی مدیریت پرونده‌ها[3] و بانک اطلاعاتی را نیز اضافه کنید، این مقدار به یک سوم کاهش می‌یابد. درضمن نگه‌داری اطلاعات درخواستی در حافظه‌ی نهانگاهی[4] نیز کمکی نمی‌کند، چرا که تنها به درد نفر دوم می‌خورد و وقتی که با میلیون‌ها نفر در روز که هرکدام درخواست مخصوص خود را دارند سرکار دارید، کاربردی ندارد.

و اما راه‌حل: شاید باورکردن آن مشکل باشد اما.... همان گونه که سرویس "پیام فوری" شرکت AOL®[5] تمام پیام‌ها را در حافظه‌‌ی اصلی(RAM) "خدمات‌رسان"یا Server های خود نگه می‌دارد، گوگل نیز از دیسک‌های سخت خود فقط برای اجراشدن سیستم‌عامل و برنامه‌های مورد نیاز(به اصطلاح برای Bootشدن) استفاده می‌کند و تمام اطلاعات مربوط به جست‌و‌جو را در حافظه‌ی اصلی(RAM) نگه می‌دارد!!

اگر دقت کرده باشید، وقتی گوگل سایتی را که با شرایط جست‌و‌جوی شما همخوانی دارد پیدا می‌کند، بخش‌هایی از سایت که دارای کلمات مورد نظرهستند را نیز نمایش می‌دهد. این درحالی است که سایر موتورهای جست‌و‌جو تنها چند جمله از اول صفحه‌ی مورد نظر را نشان می‌دهند.

برای انجام چنین کاری، گوگل باید یک ( و حداقل یک) کپی از آن صفحه را دراختیار داشته باشد. این بدان معنی است که گوگل چندین[6] کپی از تمام وب در حافظه‌ی Serverهای خود دارد[7].



گوگل غیر از جست‌و‌جوی سریع چه دارد؟

قدرت موتور جست‌و‌جوی گوگل نه تنها در زمان پایین جست‌و‌جوهای آن، بلکه در تعداد صفحاتی است که به عنوان نتیجه بر می‌گرداند.

گوگل وب را به دنبال صفحات جدید می‌گردد و یک کپی از آن‌ها را به بانک خود اضافه می‌کند[8]. پس اگر هنگامی که به دنبال موضوعی بودید و سایت خود را در لیست سایت‌های نتیجه‌ی جست‌و‌جو یافتید، درحالی که آن را بصورت دستی به بانک گوگل اضافه نکرده بودید، تعجب نکنید (البته تعجب کنید چون جای تعجب دارد ولی دلیلش را بدانید).

سرویس جست‌و‌جوی باور نکردنی گوگل با سرویس پست الکترونیکی جدیدش باورنکردنی‌تر می‌شود. با راه‌اندازی این سرویس بنظر می‌رسد گوگل نه‌تنها قصد از راه به در کردن، بلکه شاید "له کردن" رقبا را در سر می‌پروراند. درحالی که Yahoo® با کاهش حجم جعبه‌های پستی[9] رایگان از 6مگابایت به 4مگابایت و خارج کردن سرویس POP3 از لیست سرویس‌های رایگان، کاربران اش را به سمت سرویس‌های غیر رایگان سوق می‌دهد، گوگل با دست و دلبازی تمام، درنظر دارد به هر جعبه پستی 1.000مگابایت فضا اختصاص دهد. البته درمورد سرویس POP3 اعلام کرده که هنوز برای راه‌اندازی‌اش تصمیمی نگرفته است.

برای نگه‌داری این اطلاعات، گوگل از یک تیم خبره‌ِی برنامه نویس برای ابداع یک File System مخصوص بهره گرفته است. این تیم، نتیجه‌ی تحقیقات 10سال اخیر دانشگاه‌ها را در زمینه‌ی نرم‌افزار به‌خدمت گرفتند تا یک روش نگه‌داری، بازیابی و پردازش اطلاعات غیرمتمرکز را به وجود بیاورند.

Hot Mail™، 60میلیون کاربر دارد. گوگل را باید برای 100میلیون کاربر درنظر بگیریم (هرچند کم‌کم به این مقدار برسد). واضح‌ترین مسئله این است که شما نمی‌توانید اطلاعات کاربران‌تان را از دست بدهید، در ضمن نمی‌خواهید که هیچ‌گاه در دسترس نباشید، پس باید اطلاعات را Replicateکنید. RAID هم پیشنهاد خوبی نیست، اگر یک دیسک خراب شود، به یک نفر برای تعویض آن نیاز دارید و اگر بیش از یک دیسک خراب شود احتمال از دست دادن اطلاعات را خواهید داشت. درضمن به سخت‌افزارهای گرانی نیز احتیاج دارد. مهم‌تر از همه‌ی این‌ها RAID دردسترس بودن را در سطح Server تضمین نمی‌کند(در سطح دیسک سخت تضمین می‌کند).



گوگل به کمک File System ابداعی خود، اطلاعات را در 3 محل نگه‌داری می‌کند. اگر یکی از Serverها(یا دیسک‌ها) از کار بیافتند، آن را به همان حال رها می‌کنند تا در دوره‌های بازدیدی، تعمیر/تعویض شود. درعوض این از کارافتادگی را از طریق نرم‌افزاری و بصورت خودکار جبران می‌کنند. با از کار افتادن یکی از 3بخش نگه‌داری اطلاعات، یک کپی از دوبخش باقی مانده گرفته شده و پس از فشرده سازی 3به1، در محل جدیدی نگه‌داری می‌گردد.



مشکل Serverهای گوگل تنها ظرفیت دیسک‌های نیست، بلکه پردازنده‌های آن‌ها نیز بصورت دایم مشغول فهرست گذاری(Indexing) اطلاعات هستند. هر واحد از Serverهای گوگل تنها 1یا2 دیسک سخت دارد(بدون هیچ RAID Controllerای).



بخاطر این ابعاد گسترده و با توجه به نرم‌افزار مخصوص تهیه شده، هزینه‌ی هر گیگابایت فضا برای کاربران حدود 2دلار برآورد می‌شود.



با تمام حرف‌ها و حدیث‌هایی که درباره‌ی توقف یا به مرحله‌ی اجرا رسیدن این پروژه وجود دارد، بنظر نگارنده هیچ‌چیز نمی‌تواند قدرت چنین فناوری را زیر سئوال ببرد.





برگرفته از:

http://www.google.com

 

1 جالب است بدانید که گوگل خیلی به استفاده از آن Serverهای گرانقیمت اعتقاد ندارد و از آن‌ها چندان بهره نمی‌گیرد!!

2 Data Seek Time

3 File System Manager

4 Caching

5 AIM™: AOL® Instant Messages

6 اطلاعات در چندین محل نگه‌داری می‌شوند سپس بکمک سرویس‌هایی موسوم به سرویس‌های "خوشه‌ای"(Clustering) تمام این چند محل، بصورت یک واحد نمایان می‌شوند.

7 This means that Google™ is currently storing multiple copies of web in RAM

8 We add and update new sites to our index each time we crawl the web.

9 Mailbox