Blogg

Þróun og afkastageta gagnagrunna

Þróun og afkastageta gagnagrunna
30.04.2014

Gagnagrunnar hafa undanfarin áratug tekið gríðarlegt stökk í þróun, afkastageta þeirra hefur margfaldast sem og  viðhald og annað utanumhald orðið betra samhliða auknu flækjustigi. Þessi þróun hefur orðið til þess að  margvíslegir möguleikar í forritun með SQL fyrirspurnamálinu hafa litið dagsins ljós. M.a. eru  möguleikar á að varpa gögnum úr einu formi í annað, áður en gögnunum er skilað til forrits, mun fjölbreyttari í dag en áður. Það sem er nýjast og heitast í dag er vörpun úr töfluformi (relational) yfir í JSON (Javascript Object Notation) til að geta flutt gögn yfir í snjallsíma með auðveldum hætti.

En þessi þróun hefur líka orðið til þess að það að skrifa SQLl fyrirspurn er mun vandmeðfarnari en áður. Hægt er að  búa til fyrirspurn sem sækir tiltekin gögn í töflu/-um á fleiri en eina vegu. En aðeins ein af þeim er sú besta fyrir þetta tiltekna tilfelli.

Töfluskipan og fyrirspurnir

Rétt töfluskipan (einindavensl gagna)  og rétt högun SQL fyrirspurna á töflurnar skipta gríðarlega miklu máli. Rannsóknir hafa sýnt að 70 - 80 prósent af afkastavandamálum kerfa sem nota gagnagrunn er rakinn til SQL fyrirspurna og/eða forritunar í kringum þær.   Hin 20 - 30 prósentin eru tengd töflustrúktúr, stillingum í gagnagrunnsumhverfinu og vélbúnaði að ógleymdu gagnamagni. Allt myndar þetta  ákveðið jafnvægi þ.s fyrirspurnir hafa mjög hátt vægi.

Ég hef upplifað, heyrt af og lesið mörg dæmi þess  hér heima og erlendis, þar sem beinlínuvinnslur og sér í lagi bakvinnslur hafa tekið óratíma, en við breytingu á einungis fyrirspurn þá hafi tími styst um allt að 98 prósent. Eitt besta dæmið sem ég hef heyrt af er  vinnsla sem tók venjulega 2 - 3 daga að keyra á stórtölvu í Bandaríkjunum tók aðeins fáinar mínútur eftir breytingu. Það tókst  með því að breyta einungis töfluskipan og fyrirspurnum, en engum kóða var breytt. Á bak við þá vinnslu var gríðarlegt gagnamagn talið í tugum terabæta (TB).

Þróunartól góð og slæm.

Flest nútíma þróunartól (forritunarumhverfi) bjóða uppá að einfalda sýn á tengingum milli gagnastrúktúra og búa þannig til SQL fyrirspurnirnar fyrir forritarann í bakgrunni, sem hann oft á tíðum lætur sér nægja án þess að skoða útkomuna þ.e. fyrispurnirnar sjálfar. Slík tól geta komið með fyrirspurnir sem eru langt frá því að vera góðar. Sem betur fer er einnig möguleiki á að setja inn fyrirspurnir og láta tólin varpa þeim í skiljanlega venslamynd. Eins hafa þessi tól þróast í rétta átt en eiga samt langt í land með að koma með "bestu fyrirspurnina".

Önnur tól sýna forritaranum á myndrænan og auðskiljanlegan hátt hvernig gagnarunnurinn hyggst sækja gögnin í töflurnar og nýta þá indexa taflnanna (ef nýtanlegir) fyrir þá fyrirspurn sem skoðuð er. M.ö.o. aðkomuleið (e. access path) fyrirspurnar að gögnum. Þessi tól gefa líka til kynna hversu hátt CPU gildi fyrirspurn fengi fyrir hvert kall í gagnagrunn. Því hærra sem gildið er því verri er fyrirspurnin og meiri líkur á að hún taki til sín meira tölvuafl en nauðsynlegt er.

Aukin og bætt afköst og áreiðanleiki kerfa er lykilatriði fyrir fyrirtæki í nútímasamfélagi og gagnagrunnar spila þar allstórann þátt. Rétt notkun SQL/gagnagrunns-þróunartóla, rétt töfluskipan og rétt framsetning fyrirspurna er lykillinn að farsælum rekstri kerfa.

Tómas Helgi Jóhannsson gagnagrunnsstjóri hjá RB