Satu fakta yang saya anggap lucu adalah bahwa Google sebenarnya dijalankan oleh bioinformatika ('oke, menurut saya itu lucu karena saya bioinf… thingy). Biar saya jelaskan.
Bioinformatika sejak awal memiliki tantangan untuk mencari teks kecil dalam string raksasa dengan sangat cepat. Bagi kami, "tali raksasa" tentu saja adalah DNA. Seringkali bukan DNA tunggal tetapi database beberapa DNA dari spesies / individu yang berbeda. Teks-teks kecil adalah protein atau pasangan genetiknya, sebuah gen. Sebagian besar karya pertama ahli biologi komputasi dibatasi untuk menemukan homologi antar gen. Hal ini dilakukan untuk memantapkan fungsi gen yang baru ditemukan dengan memperhatikan kemiripan gen yang sudah diketahui.
Sekarang, string DNA ini menjadi sangat besar dan pencarian (lossy!) Harus dilakukan dengan sangat efisien. Dengan demikian, sebagian besar teori modern pencarian string dikembangkan dalam konteks biologi komputasi.
Namun, beberapa waktu yang lalu, pencarian teks konvensional telah habis. Diperlukan pendekatan baru yang memungkinkan pencarian string besar dalam waktu sublinear, yaitu tanpa melihat setiap karakter. Diketahui bahwa hal ini dapat diselesaikan dengan pra-pemrosesan string besar dan membangun struktur data indeks khusus di atasnya. Banyak struktur data yang berbeda telah diusulkan. Masing-masing memiliki kekuatan dan kelemahan, tetapi ada satu yang sangat luar biasa karena memungkinkan pencarian dalam waktu yang konstan. Sekarang, dalam urutan besarnya di mana Google beroperasi, ini tidak sepenuhnya benar lagi karena load balancing di seluruh server, pemrosesan awal dan beberapa hal canggih lainnya harus diperhitungkan.
Tetapi pada intinya, yang disebut indeks q-gram memungkinkan pencarian dalam waktu yang konstan. Satu-satunya kelemahan: Struktur data menjadi sangat besar. Pada dasarnya, untuk memungkinkan pencarian string hingga karakter q (karena itu namanya), diperlukan tabel yang memiliki satu bidang untuk setiap kemungkinan kombinasi huruf q (yaitu, q S , di mana S adalah ukuran alfabet , katakan 36 (= 26 + 10)). Selain itu, harus ada satu bidang untuk setiap posisi huruf dalam string yang diindeks (atau dalam kasus google, untuk setiap situs web).
Untuk mengurangi ukuran yang sangat besar, Google mungkin akan menggunakan beberapa indeks (pada kenyataannya, memang demikian , untuk menawarkan layanan seperti koreksi ejaan). Yang paling atas tidak akan berfungsi pada level karakter tetapi pada level kata. Ini mengurangi q tetapi membuat S jauh lebih besar sehingga mereka harus menggunakan tabel hashing dan collision untuk mengatasi jumlah kata yang berbeda yang tidak terbatas.
Pada level berikutnya, kata-kata yang di-hash ini akan mengarah ke struktur data indeks lain yang, pada gilirannya, akan menampilkan karakter-karakter hash yang mengarah ke situs web.
Singkatnya, struktur data indeks q -gram ini bisa dibilang bagian paling sentral dari algoritma pencarian Google. Sayangnya, tidak ada makalah non-teknis yang menjelaskan cara kerja indeks q -gram. Satu-satunya publikasi yang saya tahu yang berisi penjelasan tentang cara kerja indeks semacam itu adalah… sayangnya, skripsi saya .
Berikut adalah beberapa jawaban dan petunjuk bagus yang diberikan:
sumber
Mereka telah menerapkan algoritme yang baik, terdistribusi, dan berjalan pada sejumlah besar perangkat keras.
sumber
Salah satu penundaan terpenting adalah server web mengirimkan kueri Anda ke server web, dan responsnya kembali. Latensi ini dibatasi oleh kecepatan cahaya, yang bahkan harus dipatuhi oleh Google. Namun, mereka memiliki pusat data di seluruh dunia. Akibatnya, jarak rata-rata ke salah satu dari mereka lebih rendah. Ini membuat latensi turun. Tentu, perbedaannya diukur dalam milidetik, tetapi penting jika respons harus sampai dalam 1000 milidetik.
sumber
Semua orang tahu itu karena mereka menggunakan merpati , tentunya!
Oh ya, itu dan Mapreduce.
sumber
Mereka cukup banyak memiliki salinan lokal dari internet yang di-cache di ribuan PC di sistem file kustom.
sumber
Google mempekerjakan yang terbaik dari yang terbaik. Beberapa orang terpintar di bidang TI bekerja di google. Mereka memiliki uang yang hampir tak terbatas untuk dibelanjakan pada perangkat keras dan insinyur.
Mereka menggunakan mekanisme penyimpanan yang sangat dioptimalkan untuk tugas-tugas yang mereka lakukan.
Mereka memiliki peternakan server yang berlokasi secara geografis.
sumber
Upaya membuat daftar umum (yang tidak bergantung pada Anda memiliki akses ke alat internal Google):
sumber
Anda dapat menemukan di beranda penelitian google beberapa petunjuk tentang makalah penelitian yang ditulis oleh beberapa orang google. Anda harus mulai dengan penjelasan dari sistem file google dan algoritma peta / pengurangan untuk mencoba dan memahami apa yang terjadi di balik halaman google.
sumber
Link ini juga sangat informatif di balik layar kueri google
sumber
Perangkat keras.
Banyak sekali perangkat keras. Mereka menggunakan kelompok besar PC komoditas sebagai ladang server mereka.
sumber
TraumaPony benar. Banyak server dan arsitektur cerdas untuk load balancing / caching dan voila Anda dapat menjalankan kueri dalam waktu kurang dari 1 detik. Ada banyak artikel di internet yang menjelaskan arsitektur layanan google. Saya yakin Anda dapat menemukannya melalui Google :)
sumber
HenryR mungkin benar.
Map Reduce tidak berperan untuk pencarian itu sendiri, tetapi hanya digunakan untuk pengindeksan. Periksa wawancara video ini dengan penemu Map Reduce .
sumber
Alasan tambahan tampaknya bahwa mereka menipu algoritma mulai lambat TCP.
http://blog.benstrong.com/2010/11/google-and-microsoft-cheat-on-slow.html
sumber
Dan algoritme yang dapat memanfaatkan kekuatan perangkat keras tersebut. Seperti mapreduce misalnya.
sumber
Jika Anda tertarik untuk mengetahui detail lebih lanjut tentang cara kerja cluster google, saya akan menyarankan implementasi open source HDFS mereka .
Ini didasarkan pada Mapreduce oleh google.
sumber
Penyimpanan, pemrosesan, dan pengambilan data multi-tahap
Distribusi EFISIEN (100 dari 1000 mesin) dari tugas-tugas di atas
Kerangka kerja yang baik untuk menyimpan data mentah dan hasil olahan
Kerangka kerja yang bagus untuk mengambil hasil
Bagaimana tepatnya semua ini dilakukan dirangkum oleh semua tautan yang Anda miliki di ringkasan pertanyaan
sumber