Yazan: Şadi Evren ŞEKER

Google tarafından geliştirilen ve arama motoru tasarımında kullanılan yaklaşımdır. Kısaca amaç, web sayfalarının daha başarılı bir şekilde depolanması (storing), bulunması (finding) ve güncellenmesidir (updating) .

Google’ın konuya yaklaşımı, ucuz bilgisayarlar tarafından yüksek miktarda verinin tutulması ve işlenmesi yönündedir. Bu yaklaşımın genel bir görüntüsü aşağıdaki şekilde çizilebilir:

Buyuktablo

Yukarıdaki şekilde görüldüğü üzere, bir büyük mantıksal tablo, çok sayıda küçük tabletlere bölünmüştür. Diğer bir deyişle, aslında tek bir bilgisayarda işlenecek olan mantıksal tablo, çok sayıda ufak ve nispeten daha ucuz bilgisayar tarafından işlenebilmekte / tutulabilmektedir.

Büyük tablo yaklaşımında, veriler aşağıdaki şekilde tutulmaktadır:

Örnek Site Site Metni çıpa (anchor) 1 çıpa (anchor)2 Başlık (title)
www.bilgisayarkavramlari.com Sitedeki metin www.sadievrenseker.com www.shedai.net bilgisayar mühendisliği

Yukarıdaki tabloda gösterildiği üzere, herhangi bir büyük tablo kayıdında, sitenin adresi, sitenin metin kısmı, sitede bulunan bağlantılar (link, anchor, çıpa) vey sitenin başlığı tutulmaktadır.

Büyük tablo (big table) yaklaşımında, herhangi bir veriye erişmek için, erişilecek olan hücrenin, zaman bilgisi, satır bilgisi ve kolon bilgisine ihtiyaç duyulur. Örneğin yukarıdaki örnek sitenin fihristlendiği (indexing) zaman, sitenin adresi ve hangi bilgisine erişileceği (örneğin sitenin içeriği olan metin) bilgileri birleştirilerek bir erişim sağlanabilir.

Büyük tablo kullanımının avantajları aşağıdaki şekilde sıralanabilir.

  • Özel bir sorgulama diline (query language) ihtiyaç duyulmaz ve dolayısıyla sorgulama dilinin iyileştirilmesi (query optimisation) gibi özel adımlara gerek yoktur.
  • Sadece satır seviyesinde işlemler gerçekleştirilir. Yani ilişkisel veritabanı (relational database) tasarımında olduğu üzere, tablolar arasında birleştirme (join)gibi işlemlere gerek yoktur.
  • Tabletler, bütün büyük tablo (big table) sisteminde bulunan sunucular tarafından erişilebilir durumda tutulurlar.
  • Ayrıca yapılan her işlem ilave bir işlem kütüğünde (transaction log) tutulur ve bu kütüğe bütün sunucular erişebilir.
  • Sunuculardan birisinin bozulması durumunda, diğer sunuculardan birisi bu işlem kütüğüne erişerek bozulan sunucunun görevini üstlenebilir.

Büyük tablonun en önemli avantajlarından birisi, satır bazında bir limitinin olmamasıdır. Yani her kayıt için sınırsız sayıda bağlantı tutulması gerekebilir. Önceden bir sayı belirlenmesi, iki yönlü olarak probleme sebep olabilirdi. Örneğin her sayfa başına 100 bağlantı tutma limiti gelmiş olsaydı, daha az olan sayfalar için gereksiz yere hafızada yer işgal edilecek, daha fazla olan sayfalar için de bağlantıların sadece ilk 100 tanesinin tutulup, geri kalanının tutulamaması gibi bir durum ortaya çıkacaktı.

Bu yaklaşımla, ayrıca disk erişimi de azaltılmış olur çünkü bir erişimde, site ile ilgili bütün bilgilerin okunması mümkündür. Alternatif olarak ilişkisel bir veritabanı kullanılması durumunda, site ile ilgili bilgilerin okunması ancak bütün tablolara erişildikten sonra mümkün olacaktı.

Elbette büyük tablo yaklaşımının karşılaştığı problemler de bulunur. Örneğin, aynı kaydın birden fazla kere geçmesi bir risktir. Örneğin aynı içeriğin internet üzerinde içerik hırsızları tarafından kopyalanması, aynı içeriğin bir kısmının aynı kaldığı yeni sürümlerinin çıkması, intihal olarak çalıntı içeriğin bulunması, çoklu gönderiler (spam, mass message) ile aynı içeriğin birden fazla divan (forum ) ve tartışma sitelerinde bulunması veya kopya siteler bu tip içerik tekrarlarının başlıca sebepleridir. Yapılan çalışmalarda, geniş kapsamlı bir web emeklemesi (web crawling) sonucu, dolaşılan sayfaların %30’luk bir bölümü, geri kalan %70’lik bölüm içerisinde tam veya benzer içerikte kopyalar bulundurmaktadır (diğer bir deyişle sadece %40’lık bir kesimin benzeri veya tam kopyası bulunmamakta %60’lık kesim ise benzer veya tam kopya olarak internette bulunmaktadır. Bu problemin çözümü için tekrarların bulunması gerekir (duplicate detection).

Tekrar bulma işlemi iki seviyede yapılabilir. Birincisi tam tekrarın bulunmasıdır ki buradaki amaç, birebir kopyalanan içerikleri eşleştirmektir. Diğer bir yaklaşım ise benzerliklerin bulunması ve belirli bir benzerlik seviyesinin üzerinde olan içeriklerin eşleştirilmesidir. Örneğin şu anda yazmakta olduğum yazıyı, kopyalayarak, yazar kısmına kendi ismini yazan birisi ile bu sayfadaki içeriğin eşleşmesi gerekir. Sonuçta birebir aynı değildir ama çok yakın içeriktedirler ve iki sayfa için ayrı ayrı sunucuda kaynak kullanılması problem oluşturabilir.

Tam benzerliğin bulunması için toplam kontrolü (checksum) yöntemleri kullanılır. Örneğin CRC (cyclic redundancy check) ve benzer algoritmalar ile sayfaların toplam kontrolü yapılır ve eşleştirilir.

Benzer sitelerin bulunması için de geliştirilmiş algoritmalar vardır. Örneğin SimHash algoritması (benzerlik özeti) bu algoritmalara bir örnektir ve google tarafından da kullanılmaktadır.

Yorumlar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir