Sorunu çözenin MapReduce olup olmadığından emin değilim, ancak ortaya koyduğunuz tüm bu soruları çözmek için kesinlikle MapReduce olmaz. Ancak burada dikkate alınması gereken önemli şeyler vardır ve bu , farklı makinelerde tüm bu TB'lerden gelen sorgular üzerinde bu kadar düşük gecikme süresinin olmasını mümkün kılar :
- dağıtılmış bilgi işlem: dağıtılması, endekslerin farklı makinelerde basitçe dağıtıldığı anlamına gelmez, aslında farklı kümeler boyunca çoğaltılır, bu da birçok kullanıcının düşük alma süresiyle farklı sorgular gerçekleştirmesine izin verir (evet, büyük şirketler bu kadarını karşılayabilir makinelerin);
- önbellekleme: önbellekler, tarama adımında, sayfaların alınmasında veya sonuçların sıralanması ve sergilenmesinde, yürütme süresini büyük ölçüde azaltır;
- çok sayıda ince ayar: yukarıdaki ve çok etkili algoritmaların / çözümlerin tümü, yalnızca uygulama da verimli olduğunda etkili olabilir. Referans yeri, sıkıştırma, önbellekleme gibi tonlarca (sabit kodlanmış) optimizasyon vardır; hepsi genellikle işlemenin farklı bölümlerine uygulanabilir.
Bunu göz önünde bulundurarak, sorularınızı ele almaya çalışalım:
ancak her olası sorgunun dizine eklenmesinin mümkün olmadığını hayal ediyorum
Evet, olası her bir sorgu için sonuç elde etmek mümkün olabilir ve aslında mümkün değildir . Dünyada sınırsız sayıda terim vardır (yalnızca doğru şekilde yazılan terimlerin girileceğini varsaysanız bile) ve bu n -> inf
terimlerden üssel sayıda sorgu vardır ( 2^n
). Peki ne yapılır? Önbelleğe almak. Ama çok fazla sorgu / sonuç varsa, hangilerini önbellekleyecek? Önbellek politikaları. En sık / popüler / kullanıcıyla alakalı sorgular önbelleğe alınmış sorgulardır.
Google'ın donanımındaki donanım gecikmesi çok büyük olmaz mı? Google'daki verilerin tümü TB / sn SSD'lerde depolansa bile
Günümüzde, bu kadar gelişmiş işlemcilerle, insanlar bir saniye (veya daha az) içinde bitmesi gereken ve çok fazla veriyle ilgilenen her olası görevin, çok çekirdekli ve çok fazla belleğe sahip son derece güçlü işlemciler tarafından işlenmesi gerektiğini düşünüyorlar. Ancak, iktidar piyasası tek şey paradır ve yatırımcılar onu boşa harcamak istemezler. Peki ne yapılır?
Tercihen, her biri basit / erişilebilir (maliyet açısından) işlemcileri kullanan birçok makine olması, bu da çok sayıda küme oluşturma fiyatını düşürmesidir. Ve evet, işe yarıyor. Basit performans ölçümlerini düşünürseniz, ana darboğaz her zaman diske kaynar . Ancak bu kadar çok makine olduğunda, sabit diskler üzerinde çalışmak yerine ana belleğe kadar şeyler yüklenebilir.
Bellek kartları bizim için pahalı , sadece insanlar, ama aynı anda çok fazla kart satın alan işletmeler için çok ucuzlar. Pahalı olmadığı için, dizinleri yüklemek ve önbellekleri el altında tutmak için gereken belleğe sahip olmak sorun değildir. Pek çok makineler olmadığından farklı yerlere sorguları yönlendirmek ve katılıyor sorumlu makinelerin kümeleri olabilir gibi, süper hızlı işlemciler gerek yoktur spesifik coğrafi bölgeleri daha izin verir, uzman veri önbelleğe alma ve daha iyi bir yanıt zamanlar.
MapReduce bu sorunun çözülmesine yardımcı oluyor mu?
MapReduce'u kullanmanın Google içinde kısıtlanmış bilgiler olduğunu düşünmeme rağmen, bu konu hakkında konuşamıyorum. Ancak, (kuşkusuz MapReduce Google'ın uygulama değil Hadoop) optimizasyonlar bir sürü olması gerekir yönlerini kapsayan birçok yukarıda ele aldı. Bu nedenle, MapReduce mimarisi muhtemelen hesaplamaların fiziksel olarak nasıl dağıtıldığına rehberlik etmeye yardımcı olur, ancak sorgulama süresinde bu hızı haklı çıkarmak için dikkate alınması gereken birçok nokta vardır.
Tamam, bu yüzden popüler aramaların bellekte önbelleğe alınabileceğini anlıyorum. Peki popüler olmayan aramalar ne olacak?
Aşağıdaki grafik , sorgu türlerinin nasıl oluştuğuna dair bir eğri sunmaktadır . Her biri sorgu hacminin yaklaşık 1 / 3'ünü (eğrinin altındaki alan) tutan üç ana arama türü olduğunu görebilirsiniz. Arsa güç yasasını gösterir ve daha küçük sorguların en popüler olduğu gerçeğini güçlendirir. Sorguların ikinci üçte biri, birkaç kelimeye sahip oldukları için hala işlenebilir. Ancak, genellikle deneyimli olmayan kullanıcıların sorgularından oluşan belirsiz sorgular kümesi, sorguların ihmal edilebilir bir parçası değildir.
Ve yeni çözümler için yer var. Yalnızca bir veya iki sorgu (ancak üçte biri) olmadığından, alakalı sonuçlara sahip olmaları gerekir . Bir Google aramasında çok karanlık bir şey yazarsanız , sonuçların listesini döndürmek daha uzun sürmez, ancak büyük olasılıkla size söylemek istediğinizi çıkardığı bir şey gösterir . Ya da sadece bu tür terimlerle bir belge olmadığını söyleyebilir - hatta aramanızı 32 kelimeye (burada rastgele bir testte başıma) indirebilir.
Bazı kelimeleri görmezden gelmek ya da sorguyu daha küçük olanlara bölmeye çalışmak ve en popüler sonuçları toplamak için düzinelerce uygulanabilir buluşsal yöntem vardır . Ve tüm bu çözümler , örneğin bir saniyeden daha kısa bir sürede mümkün olan bekleme sürelerine uyacak şekilde uyarlanabilir ve değiştirilebilir. : D