Googlen analytiikkatietokanta (BigQuery) pystyy hakemaan tietoa valtavasta (teratavujen) tietomassasta hajauttamalla tiedon usealle tietokoneelle ja hakemalla sitten yhtä aikaa kaikilla näillä koneilla(1).
Normaalisti tietokannoissa tieto on indeksoitu ja haut tapahtuvat indeksi avulla. Indeksi on vähän niin kuin kadun numero osoitteissa. Jos haet taloa numero 35 ja olet talon numero 2 kohdalla, tiedät, että voit ajaa vielä pitkän matkaa ennen kuin oikea talo on kohdalla. Jos taloja ei olisi numeroitu lainkaan, sinun pitäisi jokaisen talon kohdalla käydä soittamassa ovikelloa ja kysyä, onko kyseessä hakemasi talo.
Rinnakkaishaku taas olisi se, että pyydät kaverit mukaan soittelemaan ovikelloja, jotta oikea talo löytyisi nopeammin ilman talon numeroita.
BigQuery ei indeksoi tietoa, vaan sen sijaan tallentaa jokaisen sarakkeen tiedot itsenäisesti ja tiivistää tiedon. Tällöin isokin tietomassa menee pieneen, mutta haku pitää tehdä niin sanotusti brute force eli raa-alla voimalla. Tämä tarkoittaa samaa kuin käydä erikseen soittamassa jokaisen talon ovikelloa ja kysyä olisiko se oikea talo.
Indeksihaku on monessa tapauksessa hyvä vaihtoehto, mutta ei aina. Indeksi nimittäin pitää ylläpitää. Pitää olla säännöt sen rakentamiseen ja aina kun tietoa muutetaan, pitää indeksikin päivittää. Siksi indeksiä ei aina käytetä.
Miten solun DNA:sta haetaan tietoa?
Ruotsalaiset solubiologit ovat tehneet hämmästyttävän tutkimuksen(2). He pystyivät kuvaamaan, miten DNA:n käyttökoneisto solussa löytää oikean geenin.
Toisinaan solussa tapahtuu onnettomuuksia ja DNA katkeaa. Katkenneesta kohdasta saattaa myös pätkä, muutama nukleotidi, mennä hukkaan. Solussa on kyllä korjauskoneet, jotka osaavat katkenneen kohdan liittää takaisin yhteen, mutta miten tietää, mitkä nukleotidit (tiedot) pitää siihen lisätä hukkaan menneiden tilalle?
DNA:ssa on sama geeni monta kertaa eri paikoissa. Aikaisemmin on ajatletu, että nämä ovat evoluution jälkeen jättämiä roskia, mutta nyt tämä tutkimus osoittaa, että niillä on tärkeä tehtävä ja että ne ovat tarkoituksella sinne sijoitettu. Ne ovat varmistustallennuksia. Katkennut DNA:n kohta voidaan korjata, lukemalla näistä varmistustallennuksista ohjeet uupuvan sekvenssin lisäämiseen.
Tässä on kuitenkin ongelma: DNA on suuri tietovarasto ja nykyisen tietämyksen mukaan se on rakennettu siten joustavasti, että sen tietosisältöön ei ole indeksiä. (Oma arvaukseni on, että jokin indeksikin sieltä vielä löydetään.) Miten tehdä haku siihen nopeasti ilman indeksiä?
Nämä ruotsalaiset tutkija havaitsivat, että DNA:n käyttökoneisto, eli moninaiset proteiinit ja epigeneettinen muisti, rakentavat useita tiedon lukupäitä (sekä filamentteja näille lukijoille kulkea) ja nämä lukupäät toteuttavat rinnakkaishaun juuri niin kuin Google BigQuerykin. Ne lukevat DNA:ta useasta eri kohdasta yhtä aikaa. Näin DNA:n pituuden kasvaessa ei hakuaika kasva eksponentiaalisesti ja solu pysyy vaurion korjaamisen ajan hengissä.
Tätä rinnakkaishaun ratkaisua kuvataan tutkimuksessa hienosti nimellä "reduced dimensionality search"(2). Sen avulla solu pystyy vaurionsa korjaamaan jopa alle 15 minuutissa hakuajan ollessa 9 minuuttia tästä.
Samalla jälleen kerran havaittiin, että aikaisemmin roska-DNA:ksi nimetyt geenikopiot, pseudogeenit, eivät olekaan tarpeettomia, vaan tarpeellisia varmistustallennuksia.
Jokainen uusi tutkimus osoittaa, miten solu ja kaikki sen toiminnot ovat tarkkaan suunnitellut juuri oikeaan tarkoitukseen. Evoluution, itsestään kehittymisen, kyky toteuttaa tällaisia ratkaisuja on mahdotonta kuvitella. Helpompi on uskoa, että Jumala on tämänkin tietoteknisen periaatteen kehittänyt ennen ihmistä ja me vain toistamme niitä periaatteita, jotka jo muutenkin on maailmassa olemassa.
Viitteet:
1. Google Bigquery arkkitehtuuri, katso esimerkiksi: https://panoply.io/data-warehouse-guide/bigquery-architecture/
2. Rinnakkaishakututkimus: https://www.nature.com/articles/s41586-021-03877-6
Kaaviokuva Googlen BigQuery rinnakkaishaun arkkitehtuurista. Alimman sinisen rivin tietokoneet hakevat tietovarastosta oikeaa arvoa yhtä aikaa. |
Ei kommentteja:
Lähetä kommentti