Arama motoru sistemini düşünürken aslında bildiklerimize göre bir kıyaslama yapıyoruz. Örneğin Php ve Mysql ile yaptığımız bir sitede 250.000 kaydın ve her kaydın 1-2KB'lık data olduğu bir arama motorunda normal bir serverda (Çift Xeon işlemci, 2GB Ram) aramalar google kadar hızlı olmamakta.
Öncelikle google bu sistemi yazarken neler kullanmış bunları irdelemek lazım. İlk başlarda ellerinde çok büyük özellikli bilgisayarlar olmadığı için arkadaşlarının kullanmadıkları bilgisayarları toparlayarak 50-100 bilgisayarlık özel bir ağ kurmuşlar. Daha sonra bu bilgisayarlardan tek bir bilgisayar gibi çalışmasını sağlayacak bir algoritma geliştirmişler. Tüm bunların dışında PageRank gibi özel bir algoritma geliştirmişler. Bu algoritmaya göre link verilen siteler daha iyi sitelerdir gibi mantıklar oluşturmuşlar. Daha sonra eşden dosttan 1milyon$ bulup Google Inc.'i kurmuşlar ve daha iyi sistemlerle geliştirmeye başlamışlar.
Bir uzay araştırması projesinde ismini tam hatırlamıyorum SETI olabilir, tüm dünyadan insanlar projeye katılabiliyorlar. Tek yapmaları gereken bir yazılım yükleyip bilgisayarlarını açık bırakmak. Böylece binlerce bilgisayar kullanılabiliyor. Buna benzer mantıkla çalışan birçok yazılım var, hatta trojanların bir kısmı bu şekilde kullanılıyor ve DDos ataklar bu sayede yapılıyor. Milyonlarca bilgisayar aynı anda tek bir bilgisayara veri göndererek sistemi altüst ediyorlar. Bu güç birleştirme olayı iyi veya kötü yönde kullanılabiliyor..
Bizim programlarımızda kullandığımız database'ler dışında birçok arama, sıralama algoritmaları mevcut. Bunlardann istediğimiz bir tanesini kullanarak basit arama motorları yazabiliriz. Daha iyileri için algoritmalar düşünüp gerekirse kendi arama algoritmalarımızı oluşturmamız gerekmekte. Şu anda kullanılmaya başlamamış olan ve geliştirilen algoritmalar var; Örneğin ünlü bir kişi olan Andrew S. Tanenbaum'un wireless network(kablosuz ağlar) la ilgili bir algoritması sayesinde bir sitenin değişen IP'ler üzerinde barındırabilmesi mümkün oluyor. Aynı kişi Tanenbaum, minix'in yazarı. Operating Systems (İşletim Sistemleri) dersinde anlatacak uygun bir UNIX bulamadığı için geliştirmiş, daha sonra minix'in geliştirilmesi ile linux oluşmuştur. Yine aynı kişinin birçok kitabı ve çalışması vardır. (Yani bir kişi de birçok işi başarabilir
)
Gelişmiş sistemler tasarlamak için C ve Assembly ile hazırlamak mantıklıdır, çünkü bu diller makine diline yakındır ve bu nedenle hızlı çalışır. Örneğin ekrana merhaba dünya yazdıran bir Basic programı 30.000byte, C programı 1000byte, Assembly programı 40byte tutar. Tabiki bu sıralama ile de daha hızlı çalışır. Bunları çalıştıracağınız işletim sistemlerine göre kod yazmanızda işlemleri hızlandıracaktır, tabiki işletim sisteminin yazacağımız sisteme özel olarak geliştirmesi daha da hızlandıracaktır.
Biraz uzun oldu, konuyla alakasız gibi oldu belki yazı. Ama anlatmak istediğim bu tarz sistemler geliştirebilmek için çok çalışmak, çok konuda bilgi sahibi olmak gerekir. Türkiye'de gelişmiş sistemler yazabilecek insanlar olduğunu biliyorum. Fakat sadece yaşayabilmek için piyasaya alakasız işler yapması gerekir. Binlerce dolar kazanacağını bilse 6 ay oturur yazar lüksü yoktur bu kimselerin. Eğer gerekli destek sağlanır, birlik oluşturulabilirse büyük sistemler yapılabilir.
Konuyla ilgili aşağıda konuların araştırılması gerektiğine inanıyorum;
* Searching Algorithms (arama algoritmaları)
* Sorting Algorithms (Sıralama Algoritmaları)
* Parallel Programming (paralel programlama)
* Discrete Systems (ayrıştırılmış sistemler)
* Database Systems (veritabanı sistemleri)
* Operating Systems (işletim sistemleri)
Kusura bakmayın biraz uzun oldu (aslında kısa kısa yazmaya çalıştım), umarım faydası olur.