GitHub kehuu uutta ominaisuuttaan mullistavaksi: hae mukaan beetaan

GitHub kehuu uutta ominaisuuttaan mullistavaksi: hae mukaan beetaan

Koodiarkistopalvelu GitHub on kehittänyt erityisesti lähdekoodeille tarkoitetun hakutoiminnon, jota se testaa parhaillaan beetavaiheessa. Haulle on tarvetta: GitHubissa on yli 200 miljoonaa koodivarastoa eli haettavaa piisaa.

GitHub Code Search -beetaan voi hakea mukaan täällä.

GitHubin Timothy Clemin mukaan olemassa olevat tekstille tarkoitetut hakumoottorit eivät ole toimineet koodin etsimisessä erityisen hyvin. GitHub Universe -videolla hän kertoo, että käyttäjäkokemus on ollut huono, sisällön indeksointi hakua varten hidasta ja näiden ylläpitäminen on ollut kallista, The Register kertoo.

Rust-kielellä kehitetty Blackbird-haku on GitHubin omaa tuotantoa. Tällä hetkellä sillä voi hakea GitHubissa osasta eli palvelun 45 miljoonasta koodivarannosta tietoja. Mukana on 15,5 miljoonaa dokumenttia ja yhteensä 115 teratavua dataa.

Clem selittää, että säännöllisten lausekkeiden kanssa homma ei vain toimisi: ripgrepin ajaminen 8-ytimisellä Intelin suorittimella ja 13 gigatavulla muistia kestäisi lähes 2,8 sekuntia. Haut veisivät paremmillakin resursseilla liikaa aikaa.

Sen sijaan GitHubissa päädyttiin paljolti valmiisiin hakemistoihin perustuvaan malliin, joka toimii kuin kartta, jossa on pareittain avain ja arvo. Näin dokumenteista saadaan laskennallisesti tehokkaammin ja nopeammin haettua esimerkiksi tieto ohjelmointikielestä tai tietystä sanasarjasta, kun niitä kuvataan numeerisina arvoina paremminkin kuin tekstimerkkijonoina.

GitHUbissa rakennettiin lisäksi iteraattoreita hakemistoille, jotta saatiin kutakuinkin järjestettyä asiakirjojen tunnisteet hakuun liittyvään järjestykseen.

Lisäksi GitHub käyttää sharding-nimistä tekniikkaa eli datan pilkkomista useisiin paloihin, joiden erot eli deltat tallennetaan muistiin. Koska GitHubissa olevasta koodista paljon on eri versioita koodista, voidaan suuri määrä tietoa tiivistää kuvaamalla eri versioiden eroja.

Lopputuloksena Blackbird pystyy suorittamaan 640 hakua sekunnissa, kun grepillä onnistuisi 0,01 hakua sekunnissa.

LUE MYÖS

Lähde

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *