Tulossa: Google-haku oman tietokoneen kovalevyyn. Jos se osaa tehdä hakuja myös maileista eikä ole niin turkasen hidas kuin Microsoftin omat haut, ainakin meikäläisen duunikoneeseen tuo softa vilahtaa välittömästi. Nykyisillä mailimäärillä koko ajan suurempi osa työajasta kuluu erilaisten hakujen parissa.
Kertokaa minulle miten Wintoosassa löytää nopeasti kaikki tiedostonimet joissa esiintyy esim. merkkijono “paska”? Kaiken järjen mukaan tuloksen pitäisi valmistua alle sekunnissa, mutta ainakin minulla Ääliökäyttis haluaa skannata kaikki 500000 tiedostoa. Missä vika?
Ei se ihan niin simppeliä ole. Jos kaikki tiedostosi olisivat yhdessä hakemistossa, niiden nimet ja sijainnit levyllä olisivat tallennettu yhteen levyjärjestelmätietueeseen. Tästä tietueesta pitää kaikki yli 4 merkkiä pitkät tiedostonimet käydä läpi ja tarkistaa esiintyykö tuo 5-merkkinen fraasi sen alussa, lopussa tai jossain välissä.
Esimerkiksi tiedoston nimi voi olla “aflamhaflampaskeras”, jossa on fraasi “paske”, mutta ei “paska”. Järjestelmän on ensin käytävä läpi “aflamhaflam”, mikä on sinäänsä helppoa, että missään ei esiinny p-kirjainta, mutta sitten tuleekin jo “pask”, joka on lähempänä, joskin silti ohi.
Sanaa “paska” vaikeampi olisi hakea sanaa “paparazzi”, koska tiedostonimessä “hompapapapapaparazzparazzizzi” ei voida vasemmalta oikealla lukiessa olla ennen loppua juuri missään vaiheessa, että onko jokin “pa” tuon sanan “paparazzi” aloittava merkkijono. Koska on järkevämpi luoda yleinen hakualgoritmi, eikä jokaiselle mahdolliselle fraasille omaa algoritmiaan (koska vaihtoehtoja on käytännössä ääretön määrä), on algoritmin otettava tällainenkin ongelma huomioon.
Huomattavasti nopeampaa on etsiä tiedostoja, joiden nimi ALKAA jollain fraasilla.
Tämä kestää siis aikansa, jos järjestelmässä on 500000 tiedostoa ja ainoa hakukriteeri tosiaan on merkkijono tiedoston nimessä. Ei edes tiedetä, mitä hakemistoja ei tarvitse hakea.
Hakemistot nimittäin tuovat lisää monimutkaisuutta hakuun, koska järjestelmän täytyy paikantaa jokainen kansio kaikkialta ympäri kiintolevyä ja suorittaa näiden sisältämille tiedostonimille ylläkuvaamani tarkistus.
Kiintolevy joutuu siis lukemaan noin keskimäärin varmaan 15 tavun (1 tavu, 1 tiedostonimen merkki) mittaisia tietopätkiä jokapuolelta kiintolevyä, jolloin se joutuu lähes jokaisessa näissä 500000 välissä siirtämään lukupäätä seuraavaan kohtaan.
Tokihan tämä voitaisiin tehdä nopeamminkin, jos tiedostojärjestelmä suunniteltaisiin nimenomaisesti tällaisia hakuja varten sen sijaan, että pyrittäisiin nopeuttamaan “normaalimpia” operaatioita, kuten tiedostojen siirtoa ja kopiointia hakemistosta ja levyltä toiselle.
…tosin esimerkiksi linuxilla ei kyllä mene noin 200000 tiedoston nimen hakemiseen ja vertaamiseen kahta sekuntia kauempaa, että näyttää tiedostojärjestelmä olevan fiksumpi.
find .|grep paska
Toivottavasti tuo Google haku toimii omassa kovalevyssä yhtä tehokkaasti kuin internetissä. Harmikseni olen nimttäin havainnut etta kun haen omaa nimeani Googlella esiin tulee mita merkillisimpiä vuonna 1995 kirjoittamiani typeriä kommentteja vieraskirjoihin. Haku on siis turhankin tehokas. Toisaalta kun haen Windows XP:n standardihaulla omia dokumenttejani omalta kovalevyltäni se ei kertakaikkiaan löydä kaikkia. Vaikeuksia on erityisesti ollut ohjelmakoodia sisältävien tekstitiedostojen löytämisessä. Ehkä hakuni asetukset ovat jotenkin väärin mutta tällaisen haun pitaisi kyllä onnistua ilman erityisasetuksia vain sanomalla “search all”. Odotan siis innolla Googlen hakua omaan kovalevyyni.
Totta h-tissä brute force hakuun menee aikaa, mutta kun olen heittänyt Winukassa indexing servicen päälle, voisi p#rkele olettaa että se osaa rakentaa filenameista indeksin, s**tana! Koska olen ihminen pistän tiedostonimeen selkokielellä mitä se sisältää, varsinkin kun kyse on tekstidokumenteista, powerpoint-esityksistä, excel+taulukoista jne. Tästä seuraa että tiedostonimi-indeksi olisi turkasen tärkeä! On se kumma että Microsoftin kovapalkkaiset kumipäät eivät hiffaa edes tätä (prkl)!!
Minusta tuntuu ettei windows -haun hitaus johdu itse tiedostojärjestelmästä tai kernelistä, vika on jossain muualla. Esimerkiksi tuollainen (maksullinen, free trial) softa kuin EFS tekee haut murto -osassa windows -hakuun verrattuna, löytäen samat tiedostot. Testailin puulaakimaisesti – voihan tuo käytännössä olla tehottomampi – mutta so what? Yleisimpiin hakuihin tuo tuntuu toimivan MS:n omaa työkalua paremmin.
…ja indexointi oli päällä. ;-)
http://www.snapfiles.com/get/efsearch.html