Mengapa Google jauh lebih cepat daripada pencarian hard-drive?

251

Ketika saya mencari file di HD saya di Windows 7 atau Windows XP, dibutuhkan beberapa menit untuk menyelesaikan proses. Jika saya mengisi istilah pencarian di Google, jawabannya ada di layar saya dalam milidetik

Bagaimana mungkin bagi Google untuk mencari di Internet, yang berkali-kali lebih besar daripada hard drive saya, lebih cepat daripada OS saya dapat mencari di komputer saya? Apakah ini hanya masalah daya komputasi dan algoritma yang tepat?

Arne
sumber
99
Sudahkah Anda mencoba mengindeks semua file pada drive Anda dan hanya mencari indeks? Coba semuanya dan lihat.
Karan
11
Google desktop "digunakan" untuk melakukan itu untuk windows juga ...
rogerdpack
14
Google mencari melalui indeks yang disimpan dalam RAM, bukan melalui file pada hard drive.
Ari
13
Indeks ini penting, tetapi Google juga menggunakan algoritma pengurangan peta untuk melakukan serangkaian operasi paralel masif. Tidak peduli berapa banyak core yang Anda miliki di komputer Anda, saya jamin Google memiliki lebih banyak.
Adam Wuerl
41
Tidak ada yang menghalangi implementasi pencarian desktop dari menggunakan pengindeksan. Namun , ingat bahwa Google memiliki cukup uang untuk a) banyak CPU / server yang sangat cepat untuk memparalelkan kueri; b) banyak RAM yang sangat cepat untuk menghindari keharusan mengakses disk; c) banyak hard drive jauh lebih cepat daripada yang Anda gunakan; d) banyak insinyur yang sangat pintar untuk mengoptimalkan algoritma yang terlibat. (Misalnya, caching hasil untuk (banyak) pertanyaan yang sering digunakan dan banyak lagi.) Ini bukan "hanya" pertanyaan dari salah satu dari ini, semua ini berakting dalam konser.
milimoose

Jawaban:

211

Google tidak mencari di internet: ia sedang mencari indeks. Google memiliki ladang server besar yang secara konstan memindai dan mengindeks internet. Proses ini membutuhkan banyak waktu, seperti halnya pencarian hard drive Anda yang tidak diindeks. Di Windows 7, ada opsi untuk mengindeks hard drive Anda. Proses ini membutuhkan waktu pada awalnya tetapi setelah itu dan menjalankan hasil pencarian akan instan.

Jika Anda ingin tahu lebih banyak tentang cara kerja pencarian Google, Anda dapat membaca artikel Google " How Search Works " atau membaca artikel " How Stuff Works: How Google Works ".

Simon
sumber
46
Paragraf terakhir: tautan ini jauh lebih berwibawa dan secara keseluruhan lebih baik.
ulidtko
4
Maafkan rasa ingin tahu saya, tetapi bukankah sistem file sudah mengindeks file pada disk? Bukankah yang Anda lihat di file explorer hanya berupa indeks tautan ke sektor fisik aktual pada disk? Mengapa kita perlu melakukan lebih banyak pengindeksan lagi ?
Adi
9
@ Adnan indeks sistem file dirancang untuk menemukan posisi di mana file disimpan pada media fisik. Itu seperti indeks sebuah buku yang memberi tahu Anda di halaman mana sebuah bab dimulai. Indeks pencarian dirancang untuk menemukan konten. Indeks pencarian yang baik tidak hanya mengindeks nama file tetapi juga isi dari tipe file yang dikenal seperti pdf, doc, html, ... Indeks lanjutan juga menggunakan sinonim jadi jika Anda mencari "mobil", mungkin juga menemukan hasil dengan kata "mobil".
Simon
3
@ Adnan, sistem file sebenarnya bukan "indeks", hanya sebatang pohon nama file. Mencari pohon seperti itu tidak cepat, karena strukturnya tidak dioptimalkan untuk pencarian. OTOH google (dan database) menggunakan struktur indeks spesifik yang diurutkan yang membuat pencarian kilat entri tertentu cepat. Meski begitu, tidak semua pencarian dapat mengambil manfaat dari indeks tersebut dan akan lambat (er).
PiRX
8
@ Adnan Dalam arti tertentu, Pohon FS dioptimalkan terhadap pencarian. Ini dirancang untuk memungkinkan pengalamatan lokasi yang diketahui. Dari simpul root Anda, yang Anda dapatkan hanyalah daftar direktori dan file di bawah root. Setiap direktori hanya tahu tentang file di dalamnya, dan direktori di bawahnya. Mengakses filepath yang dikenal sangat cepat di bawah ini, dan ia menawarkan banyak fleksibilitas, tetapi tidak ada daftar file global untuk dicari. Anda harus selalu turun melalui pohon direktori, dan itu membuat banyak pencarian berbeda.
Phoshi
71

Google seperti mencari halaman kuning untuk alamat (diindeks). Pencarian Windows mirip dengan berkeliling memeriksa nomor pada bangunan (non-diindeks).

Analogi lain adalah melihat-lihat perpustakaan dan katalog kartu yang terorganisir dengan baik, atau hanya memilah-milah tumpukan buku yang tidak teratur setiap saat.

Pada dasarnya itu semua pekerjaan organisasi yang dilakukan sebelum pencarian yang membuatnya cepat.

FYI: Saat mencari lokasi yang diindeks, pencarian windows bisa sama responsifnya.

Ryan
sumber
5
Atau: Memindai buku teks vs melihat ke daftar isi (terperinci)
bobobobo
36

Bisnis Google adalah pencarian (dan menayangkan Iklan) dan sangat fokus pada hal itu. Ada beberapa hal yang dilakukan Google untuk memastikan data dikembalikan kepada Anda dengan sangat cepat:

  • Pertama menggunakan MapReduce dan PageRank untuk menghasilkan indeks komprehensif dari World Wide Web. Ini memperbarui ini secara teratur sehingga hasilnya segar.
  • Indeks itu didistribusikan dan direplikasi di banyak server Google
  • Permintaan Anda dibagi ke beberapa server untuk membangun hasil yang dikembalikan. Ini memungkinkan proses menjadi sangat paralel.
  • Kueri dan hasil umum di-cache, mengurangi kebutuhan untuk melakukan pencarian sama sekali.

Lihat tautan ini untuk informasi lebih lanjut tentang Cara Pencarian

Relatif pencarian hard drive tanpa indeks harus membaca setiap file pada drive dan ini bisa memakan banyak waktu.

Selain itu, Anda dapat menganggap sistem file dan indeks sebagai pohon. Dalam sistem berkas, akar pohon adalah folder tingkat atas dan dapat memiliki cabang (folder) atau daun (file) dalam satu folder itu. Setiap cabang dapat memiliki sub-cabang untuk lebih banyak folder dan menyisakan lebih banyak file. Untuk mencari struktur ini Anda harus 'berjalan' semua cabang (dan cabang pembantu) untuk menemukan daun yang Anda cari. Indeks membalik hierarki ini. Basis menjadi alfabet dan semua cabang pembantu melakukan penyempurnaan lebih lanjut. Daun adalah lokasi barang yang Anda cari. Mencari struktur ini memungkinkan Anda untuk memangkas (mengecualikan) sebagian besar pohon (mis. Huruf pertama dari istilah pencarian Anda memungkinkan Anda untuk memotong 25 cabang lainnya segera).

Brad Patton
sumber
30

Sekitar 4 tahun yang lalu saya juga bertanya pada diri sendiri pertanyaan yang sama. Tetapi ketika saya mencari di Google melakukan penelitian saya akhirnya membaca bahwa selain fakta bahwa mereka mempekerjakan yang terbaik dari yang terbaik untuk datang dengan beberapa algoritma pencarian yang paling canggih dan semua itu.

Salah satu desain utama yang mereka gunakan mirip dengan gagasan peta pengurangan saya pikir. Anda memiliki banyak komputer murah di peternakan. Biarkan komputer ini hanya memiliki sekitar 80 gig ruang hard disk dan dorong keras untuk memiliki sekitar 16 gig RAM atau bahkan lebih baik 32 gig RAM pada komputer ini (sebanyak mungkin). Ingat bahwa mereka terhubung melalui beberapa sistem canggih yang mereka rancang. Tetapi ide kunci di sini adalah bahwa ketika suatu permintaan dikirimkan, ia dikirimkan ke sistem mereka di mana ia akan mencoba dan mencari data baru dalam RAM. Perlu diingat mereka memiliki banyak komputer murah ini. Dan karena data dalam RAM, ditemukan jauh lebih cepat daripada pada hard disk. Tetapi jangan lupa bahwa mereka memiliki sistem yang canggih (pengindeksan dan semua algoritma) yang sangat membantu.

Dan data ini tidak harus segar, karena kita semua tahu bahwa Google menyimpan semuanya. Jadi seperti apa yang seharusnya ada dalam RAM, prinsip yang sama dengan splay tree dapat digunakan, simpan apa yang paling banyak dicari orang di RAM dan siram barang yang paling tidak dicari ke hard disk.

Gagasan kecil ini ditambah dengan pengindeksan mereka dan semua hal lain yang telah disebutkan orang lain dalam jawaban mereka, mungkin menjadi salah satu alasan mengapa ini lebih cepat daripada pencarian hard-drive.

  • Kekuatan untuk memprediksi berdasarkan pencarian lain.
  • Data kemungkinan besar dalam RAM yang kita semua tahu lebih cepat.
  • Gunakan beberapa sistem untuk membagi dan menaklukkan
  • Pencarian adalah prioritas utama mereka.

Tentu saja saya bisa salah, tetapi ini masuk akal bagi saya. Dan saya senang dengan apa yang saya pelajari.

Sentuh
sumber
7
Anda memakukannya pada beberapa hal yang dilewatkan oleh poster lain yang lebih populer. Google tidak sering mencari semuanya. Jelas tidak di seluruh internet, dan bahkan tidak semuanya dalam cache sendiri. Terlebih lagi, ketika Anda mencari di Google.com, pencarian yang sebenarnya tidak terjadi secara waktu nyata, hanya penyalinan cepat dan menampilkan hasil pencarian yang telah diproduksi dan diorganisir dalam beberapa bulan terakhir oleh Google. Sangat rumit untuk menggambarkan proses produksi / pengorganisasian, tetapi samar-samar dapat disebut "pengindeksan" seperti kata seseorang.
Joseph Myers
Ini sangat rumit untuk menggambarkan proses memproduksi / pengorganisasian ... . Yap, itulah yang saya sebut sebagai bagian canggih dari itu. Jempol ke atas, Anda merangkumnya dengan baik.
Sentuh
1
@JosephMyers indeks google terus-menerus. Lakukan pencarian pada pertanyaan yang diajukan pada SuperUser di awal hari (mis. Google.com/search?q=google+faster+than+a+hard+drive ) dan itu muncul di hasil.
Brad Patton
@Sentuh Saya setuju tentang pencarian dalam RAM. Ini adalah poin keempat dalam posting saya tentang caching
Brad Patton
@ Pat Patton Benar. Saya harus menyebutkannya karena itu adalah dasar dari apa yang saya pelajari. Dan bagian tentang pengindeksan terus-menerus, baik bagian pengindeksan adalah jenis pengorganisasian. Karenanya pernyataan tersebut menyatakan bahwa Anda mencari apa yang telah diatur dan bukan apa yang sedang diindeks saat ini. Adapun mengapa hasilnya ditampilkan, stackoverflow memiliki kredibilitas lebih dari banyak situs web, karena itu ada baiknya untuk mengindeks lebih sering. Itu sebabnya itu muncul. Jika bukan karena itu, Anda harus menunggu satu atau dua hari sebelum apa yang Anda cari muncul. Saya pikir itulah yang dikatakan Tuan JosephMyers.
Sentuh
20

Google menggunakan sistem pengindeksan yang sangat canggih, operasi paralel, dan sejumlah teknik penyeimbangan beban tidak tersedia untuk komputer mandiri standar. ada sangat sedikit kesamaan antara pencarian web dan pencarian file hard disk, dan google sangat mengoptimalkan untuk kasus penggunaan khusus mereka.

Frank Thomas
sumber
4

Pada tahun 2004, beberapa karyawan Google menerbitkan sebuah makalah: MapReduce dan sejak saat itu mereka meningkatkannya ratusan kali.

Juga, mereka menggunakan Google File System (GFS) yang merupakan sistem file terdistribusi seperti Hadoop Distribud File System (HDFS) dan sangat dioptimalkan untuk keperluan mereka. Sejauh yang saya tahu, GFS bekerja mungkin ribuan kali lebih cepat daripada HDFS .

smttsp
sumber
2

Saya pikir saya akan menambahkan ini karena saya juga punya pertanyaan ini beberapa waktu lalu dan menemukan video-video hebat ini yang menggambarkan apa yang Google lakukan di permukaan. Menarik untuk ditonton.

Google di Youtube 1
Google di Youtube 2

Dia pergi sedikit lebih dalam tetapi tidak cukup dalam sehingga Anda tersesat dalam hal teknis.

Tepuk tangan.

Mogget
sumber
1

Hanya menambahkan sesuatu ke jawaban yang bagus di sini. Google menggunakan cache frasa pencarian populer. Hasil pencarian ini berada di memori. Jadi jika Anda mencari sesuatu yang banyak dicari, hasilnya akan segera muncul.

Mellowcandle
sumber
0

Untuk menjawab pertanyaan pada tingkat sederhana: bayangkan Anda memiliki buku teks dengan indeks kata kunci di bagian belakang.

Mencari hard disk (secara naif, setidaknya) seperti menelusuri buku, halaman demi halaman, memindai setiap baris untuk mengetahui kata kunci Anda.

Menggunakan mesin pencari Internet seperti mencari kata kunci dalam indeks, dan kemudian beralih langsung ke nomor halaman yang diberikannya.

Pada kenyataannya tentu saja, ini jauh lebih kompleks dari ini. Misalnya, Anda biasanya akan mencari hard disk Anda untuk berbagai jenis informasi daripada Internet. Tetapi hal dasar yang harus diambil adalah bahwa mesin pencari menggunakan indeks. Itu sudah melalui "buku", kata demi kata, dan telah menyusun daftar kata-kata itu bersama dengan di mana menemukannya, dan ia telah mengatur daftar sedemikian rupa sehingga dapat mencari hal-hal di dalamnya dengan sangat cepat .

Misalnya, pikirkan tentang pengorganisasian indeks dalam sebuah buku. Pertama, biasanya diurutkan berdasarkan abjad, dan kedua mungkin memiliki judul surat. Ketika Anda mencari kata dalam indeks Anda dapat melihat langsung daftar kata yang dimulai dengan huruf yang Anda inginkan. Dan karena daftar diurutkan, mudah untuk menemukan kata yang Anda inginkan di dalam daftar, atau untuk mengatakan dengan cepat jika hilang.

Jadi untuk meringkas, ini seperti hard disk Anda hanya memiliki buku, sedangkan mesin pencari memiliki indeks. Meskipun seperti yang ditunjukkan beberapa orang lainnya, dimungkinkan untuk menggunakan perangkat lunak untuk mengindeks hard disk Anda, dan kemudian Anda dapat menggunakan indeks alih-alih semuanya.

mwfearnley
sumber
-1

Saya kira salah satu alasan Google muncul Auto Completedan digunakan AJAXadalah masalah kecepatan. Sekarang saat Anda mengetik, kata-kata dikirim di latar belakang sehingga Google dapat melakukan sebagian pekerjaan saat Anda belum selesai. Juga indeks didasarkan pada beberapa kombinasi kata (yang dapat Anda temukan sebagai saran di bagian bawah halaman). Saat ini kecepatan jaringan lebih tinggi daripada hard-drive dan mungkin banyak dari indeks tersebut berada di RAM server di pertanian mereka.

Xaqron
sumber