Google neden bir sabit sürücü aramasından çok daha hızlı?


251

HD'mdeki bir dosyayı Windows 7 veya Windows XP'de aradığımda işlemi tamamlamak birkaç dakika sürüyor. Google’da bir arama terimi doldurursam, cevap ekranımda milisaniye cinsinden

Google’ın, sabit diskimden çoğu zaman büyük olan İnternet’i bilgisayarımda arama yapabildiğinden daha hızlı olan Internet’te araması nasıl mümkün olabilir? Bu sadece bilgi işlem gücü ve doğru algoritma meselesi midir?


99
Sürücünüzdeki tüm dosyaları indekslemeyi ve sadece indeksi aramayı denediniz mi? Her şeyi dene ve gör.
Karan

11
Google masaüstünde, pencereler için de bunu yapmak için ... "
rogerdpack

14
Google, sabit diskteki dosyalar üzerinden değil RAM’de depolanan dizinleri arar.
Ari

13
Dizin önemlidir, ancak Google, büyük ölçüde paralel bir işlem kümesi yürütmek için harita azaltma algoritması da kullanır. Bilgisayarınızda kaç tane çekirdek varsa, Google’ın daha fazlasına sahip olduğunu garanti ederim.
Adam Wuerl

41
Bir masaüstü arama uygulamasının indekslemeyi kullanmasını engelleyen hiçbir şey yoktur. Ancak , Google’ın a) bir sorguyu paralelleştirmek için çok hızlı CPU / sunucu için yeterli paraya sahip olduğunu unutmayın; b) hiç bir diske erişmek zorunda kalmamak için çok hızlı RAM; c) kullandığınızdan çok daha fazla sabit disk sürücüsü; d) ilgili algoritmaları optimize etmek için çok sayıda akıllı mühendis. (Örneğin (çok fazla) sık kullanılan sorgular ve çok daha fazlası için sonuçları önbelleğe almak.) Bu ikisinin de "sadece" bir sorusu değil, bunların hepsi uyum içinde.
millimoose

Yanıtlar:


211

Google internette arama yapmıyor: bir endeks arıyor. Google, interneti sürekli tarayan ve dizine ekleyen devasa sunucu çiftliklerine sahiptir. Bu işlem, tıpkı dizinsiz sabit sürücünüzün araması gibi, çok zaman alır. Windows 7'de, sabit sürücülerinizi dizine ekleme seçeneği vardır. Bu işlem ilk başta biraz zaman alabilir, ancak bir kez açılıp bir aramanın sonuçlarının çalıştırılması anında gerçekleşir.

Google aramasının nasıl çalıştığı hakkında daha fazla bilgi edinmek istiyorsanız, Google’ın " Nasıl Arama Çalışır " makalesini veya " Nasıl Çalışır: Google Nasıl Çalışır " makalesini okuyabilirsiniz .


46
Son paragraf: bu bağlantı çok daha yetkili ve genel olarak daha iyi.
ulidtko

4
Afedersiniz, ama dosya sistemleri zaten diskteki dosyaları endekslemiyor mu? Dosya gezginde gördüğünüz şey, diskteki gerçek fiziksel sektörlere bağlantı dizini değil mi? O zaman neden daha fazla indeksleme yapmamız gerekiyor ?
Adi

9
@Adnan dosya sistemleri dizini, bir dosyanın fiziksel bir ortamda depolandığı konumu bulmak için tasarlanmıştır. Bir bölümün hangi sayfada başladığını söyleyen kitabın dizini gibidir. İçerik bulmak için bir arama dizini tasarlanmıştır. İyi bir arama dizini sadece bir dosya adını değil, aynı zamanda pdf, doc, html, gibi bilinen dosya türlerinin içeriğini de indeksler. "otomobil" sözcüğü.
Simon,

3
@Adnan, dosya sistemi gerçekten bir "dizin" değil, sadece bir dosya adı ağacı. Bu tür bir ağacı aramak hızlı değildir, çünkü yapısı arama için optimize edilmemiştir. OTOH google (ve veritabanları), belirli giriş yıldırımlarını hızlı aramayı sağlayan belirli sıralanmış dizin yapılarını kullanır. O zaman bile, tüm aramalar bu endeksten faydalanamaz ve yavaş olacaktır (er).
PiRX

8
@Adnan Bir anlamda, FS Ağacı aramaya karşı optimize edilmiştir . Bilinen yerlerin adreslenmesini sağlamak için tasarlanmıştır. Kök düğümünüzden elde ettiğiniz tek şey, kök altındaki dizinlerin ve dosyaların listesidir. Her dizin sadece içindeki dosyaları ve altındaki dizinleri bilir. Bilinen bir filepata erişmek bu konuda çok hızlı ve çok fazla esneklik sunuyor, ancak aranacak dosyaların global bir listesi yok. Her zaman dizin ağacı boyunca inmelisiniz ve bu birçok farklı arama yapar.
Phoshi

71

Google, bir adres için sarı sayfalarda arama yapmak gibidir (indekslenmiş). Windows arama, binalardaki sayıları kontrol etme (endeksli olmayan) arasında dolaşmaya benzer.

Başka bir benzetme, iyi organize edilmiş bir kütüphane ve kart kataloğuna bakmak veya sadece her seferinde örgütsüz bir kitap yığınını sıralamak olabilir.

Temelde, onu hızlı yapan aramadan önce yapılan tüm organizasyonel işler.

Bilginize: Dizin oluşturulmuş konumlar aranırken, Windows araması tıpkı yanıt verebilir.


5
Veya: Bir ders kitabına karşı vs (ayrıntılı) bir içindekiler tablosu arıyorum
bobobobo

36

Google’ın işi, arama yapmak (ve Reklamları sunmaktır) ve buna çok odaklanmıştır. Google'ın verinin size çok hızlı bir şekilde gönderilmesini sağlamak için yaptığı birçok şey var:

  • Öncelikle , World Wide Web'in kapsamlı bir indeksini oluşturmak için MapReduce ve PageRank kullanır . Bu düzenli olarak güncellenir, böylece sonuçlar taze olur.
  • Bu dizin Google’ın birçok sunucusunda dağıtılır ve çoğaltılır
  • Sorgunuz, döndürülen sonuçları oluşturmak için birden fazla sunucuya bölünmüştür. Bu işlemin yüksek oranda paralelleştirilmesine izin verir.
  • Yaygın sorgular ve sonuçlar önbelleğe alınır ve aramanın gerçekleştirilme ihtiyacını azaltır.

Arama Nasıl Çalışır hakkında daha fazla bilgi için bu bağlantıya göz atın.

Nispeten endeks içermeyen bir sabit sürücü araması, sürücüdeki her dosyayı okumak zorundadır ve bu çok zaman alabilir.

Ek olarak, bir dosya sistemi ve bir dizin olarak ağaç olarak düşünebilirsiniz. Dosya sisteminde ağacın kökü üst düzey klasördür ve o klasörde dallar (klasörler) veya yapraklar (dosyalar) olabilir. Her dal daha fazla klasör için alt dallara sahip olabilir ve daha fazla dosya için bırakabilir. Bu yapıyı araştırmak için aradığınız yaprağı bulmak için bütün dalları (ve alt dalları) 'yürümek' zorundasınız. Bir dizin bu hiyerarşiyi çevreler. Temel alfabe haline gelir ve alt dalların tümü bu konuda daha fazla ayrıntılandırma yapar. Yapraklar, aradığınız öğenin yeridir. Bu yapının aranması, ağacın büyük bölümlerini budamanıza (hariç) koymanıza izin verir (ör. Arama teriminizin ilk harfi, hemen diğer 25 dalı kesmenize olanak sağlar).


30

Yaklaşık 4 yıl önce kendime de aynı soruyu sordum. Ancak araştırmamı yapmak için uğraşırken, sonunda, en karmaşık arama algoritmalarından bazılarını ve bunların hepsini bulmak için en iyisini ellerinden gelenin en iyisini işe aldıkları gerçeğini okudum.

Kullandıkları kilit tasarımlardan biri de sanırım harita azaltma fikrine benziyor. Çiftlikte ucuz bilgisayarların var. Bu bilgisayarların yalnızca 80 gig sabit disk alanına sahip olmasını sağlayın ve bu bilgisayarlarda yaklaşık 16 g RAM veya daha iyi 32 g RAM olmasını mümkün kılın (mümkün olduğunca). Unutmayın ki tasarladıkları karmaşık sistemlerle birbirine bağlılar. Ancak buradaki ana fikir, bir sorgu gönderildiğinde, RAM'deki yeni verileri aramaya ve denemeye çalışacakları sisteme aktarılmasıdır. Bu ucuz bilgisayarların çoğunda olduklarını unutmayın. Veriler RAM’de olduğundan, sabit diskte olduğundan çok daha hızlı bulunur. Ancak, çok yardımcı olan sofistike (endeksleme ve tüm bu algoritmalar) bir sisteme sahip olduklarını unutmayın.

Ve bu verilerin taze olması gerekmiyor, çünkü hepimiz Google’ın her şeyi sakladığını biliyoruz. RAM'de ne olması gerektiğine, yayılma ağaçları ile aynı prensip kullanılabilir, insanların RAM'de en çok aradıklarını koruyun ve en az aranan şeyleri sabit diske temizleyin.

Bu küçük fikir, endeksleme ve diğerlerinin cevaplarında bahsettiği diğer şeyler ile birleştiğinde, bunun sabit sürücü aramasından daha hızlı olmasının sebeplerinden biri olabilir.

  • Diğer aramalara dayanarak tahmin etme gücü.
  • Verilerin büyük olasılıkla hepimizin daha hızlı olduğunu bildiği RAM'da.
  • Bölmek ve fethetmek için birden fazla sistem kullanın
  • Arama onların temel önceliğidir.

Tabii yanılıyor olabilirim, ama bu benim için anlamlıydı. Ve öğrendiklerimle mutlu oldum.


7
Diğer, daha popüler posterlerin kaçırdığı bazı şeyleri sen çiviledin. Google her şeyi çok sık aramıyor. Kesinlikle bütün internette yok, hatta her şeyi kendi önbellekte bile yok. Ayrıca, Google.com’da arama yaptığınızda, gerçek arama gerçek zamanlı olarak gerçekleşmez, yalnızca son aylarda Google tarafından üretilmiş ve organize edilmiş arama sonuçlarının hızlı bir şekilde kopyalanması ve görüntülenmesi. Üretim / organizasyon sürecini tanımlamak son derece karmaşıktır, ancak birisinin söylediği gibi belirsiz bir şekilde "endeksleme" olarak adlandırılabilir.
Joseph Myers

Yapım / örgütlenme sürecini tanımlamak son derece karmaşık . Evet, sofistike parçası olarak adlandırdığım şey budur. Başparmak yukarıya, iyi özetlediniz.
dokunun

1
@JosephMyers sürekli google indeksler. Günün erken saatlerinde Süper Kullanıcı’da sorulan bir soru için arama yapın (örneğin, google.com/search?q=google+faster+than+a+hard+drive ) ve sonuçlarda gösterilir.
Brad Patton

@Touch RAM'deki aramalar konusunda hemfikirim. Bu benim önbelleğe alma hakkındaki yazı dördüncü noktasıydı
Brad Patton

@ Patton Doğru. Bunu söylemeliydim çünkü öğrendiklerimin temeli buydu. Ve sürekli indeksleme ile ilgili kısmı, endeksleme kısmı da organize eden kısımdır. Bu nedenle, ifade şu anda neyin düzenlendiğini değil neyin organize edildiğini aradığınızı gösterir. Sonucun neden gösterildiğine gelince, stackoverflow'un birçok web sitesinden daha fazla güvenilirliği vardır, bu nedenle daha sık endekslemek iyi bir fikirdir. Bu yüzden ortaya çıkıyor. Öyle olmasaydı, aradıklarınızdan bir iki gün önce beklemeniz gerekirdi. Sanırım Bay JosephMyers'in söylediği bu.
dokunun

20

Google, son derece gelişmiş bir indeksleme sistemi, paralel işlemler ve standart bir bağımsız bilgisayar için bulunmayan çok sayıda yük dengeleme tekniği kullanmaktadır. bir web araması ile bir sabit disk dosyası araması arasında gerçekten çok az benzerlik var ve google kendi kullanım durumları için yoğun bir şekilde optimize ediyor.


4

2004’te, bazı Google çalışanları bir makale yayınladı: MapReduce ve o zamandan bu yana yüzlerce kez düzeldiler .

Ayrıca, Hadoop Dağıtılmış Dosya Sistemi (HDFS) gibi dağıtılmış bir dosya sistemi olan ve dosya amaçları için son derece optimize edilmiş olan Google Dosya Sistemi'ni (GFS) kullanıyorlar. Ayrıca olarak bildiğim kadarıyla, GFS belki bin sefer daha hızlı çalışır HDF'ler .


2

Ben de bir süre önce bu soruya sahip olduğum için ekleyeceğimi düşündüm ve Google'ın yüzeyde ne yaptığını anlatan harika videolar buldum. İzlemesi ilginç.

Youtube 1'de
Google Youtube 2'de Google

Biraz daha derine iniyor, ancak teknik olarak kaybolacak kadar derin değil.

Şerefe.


1

Buradaki harika cevaplara bir şey ekliyorum. Google, popüler arama ifadelerini önbelleğe almayı kullanır. Bu aramaların sonuçları bir hafızada bulunur. Bu yüzden, çok aranan bir şeyi ararsanız, sonuçlar hemen hemen görünecektir.


0

Soruyu basit bir düzeyde cevaplamak için: arkada anahtar kelime indeksli bir ders kitabınız olduğunu hayal edin.

Bir sabit disk aramak (en azından, en azından), kitaptan geçerek, sayfa sayfa, anahtar kelimenizin bir oluşumunu araştırmak için her satırı taramak gibidir.

Bir İnternet arama motoru kullanmak, anahtar kelimeyi dizinde aramak ve ardından doğrudan verdiği sayfa numarasına çevirmek gibidir.

Tabii gerçekte, bundan çok daha karmaşık. Örneğin, sabit diskinizi genellikle İnternet'ten farklı türden bilgiler için ararsınız. Ancak, alınması gereken temel şey, arama motorunun bir dizin kullanmasıdır. Sözcüğü zaten "kitaptan", kelimeden söze geçti ve bu kelimelerin listesini nerede bulacakları ile birlikte bir derleme yaptı ve listeyi içinde çok hızlı bir şekilde araştıracak şekilde düzenledi. .

Örneğin, bir kitaptaki bir dizinin organizasyonu hakkında düşünün. Birincisi, genellikle alfabetik olarak sıralanır ve ikincisi harf başlıklarına sahip olabilir. Dizindeki bir kelimeyi ararken, istediğiniz harfle başlayan kelimelerin listesini hemen görebilirsiniz. Liste sıralandığı için listedeki istediğiniz kelimeyi bulmak veya eksik olup olmadığını hızlıca söylemek kolaydır.

Özetlemek gerekirse, arama motorunun indeksi varken sabit diskinizin bir kitabı varmış gibi. Diğerlerinin de belirttiği gibi, sabit diskinizi endekslemek için yazılım kullanmak mümkündür ve ardından her şey yerine dizini kullanabilirsiniz.


-1

Sanırım Google’ın ortaya çıkmasının Auto Completeve kullanılmasının sebeplerinden biri AJAXde hız sorunu. Şimdi yazarken, kelimeler arka planda gönderilir, böylece henüz işiniz bitmediyse Google işin bir bölümünü yapabilir. Ayrıca indeksler birden fazla kelime kombinasyonuna dayanır (sayfanın altında öneriler olarak bulabileceğiniz). Şu anda ağ hızı sabit sürücülerden daha yüksektir ve muhtemelen bu endekslerin çoğu kendi çiftliğindeki sunucuların RAM'inde bulunur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.