Biðlari/miðlari

MySQL er hraðvirkur léttavigtar gagnagrunns miðlari[1] sem byggir á miðlara/biðlara hugmynd. Búnaðurinn verkar á þá leið, að venslaðir gagnagrunnar eru smíðaðir og uppsettir á MySQL þjóni. Þjónninn miðlar þeim síðan til notenda á  öðrum vélum (eða á sömu vél).

Oft er á þessum vettvangi rætt um „three-tier,“ „two-tier“ og „multi-tier“ umhverfi. Er þá átt við þegar notandi er á einu sviði (e. Tier), gagnagrunnur á öðru og jafnvel annar grunnur eða t.d. vinnslugeta á því þriðja. Er umfjöllun um þessi „tier“ málefni utan efnissviðs bókarinnar (e. Out of Scope).

MySQL þjónninn styður við forritunarskil fyrir forritunarmálin C, Perl, Java (með Java DataBase Connectivity API eða JDBC) og Python. Þá má tengjast þjóninum með aðstoð MyODBC tengingar sem er, ODBC tenging sérhönnuð fyrir MySQL en samhæfð ODBC staðlinum frá Microsoft.

Með blöndun þessara tæknitóla (e. Technologies) má smíða fullvaxnar biðlara/miðlara (e. Client/Server) lausnir á borð við gagna­grunns­tengd vefsvæði án mikils kostnaðar (hlutfallslega). Sé þá verð hug­búnaðarins, og umhaldsvinna,  borin saman við sambærileg (og jafnvel öflugri) kerfi sem eru vinsæl á markaðnum.

Þó MySQL kosti lítið, og í sumum tilfellum ekki neitt, þá er ekki allt fengið þar með. Þó nafn forritsins gefi annað til kynna þá styður það ekki fullkomlega við SQL gagnagrunns­staðalinn í heild sinni, frekar en svo mörg önnur kerfi. Við sumar aðstæður gæti gagnagrunns hönnuðurinn þurft á að halda víðtækari lausnum auk þess sem sumar útfærslur krefjast meiri vinnu við kótun en önnur og dýrari kerfi bjóða.

MySQL gagnagrunns þjónninn hefur frá upphafi verið hannaður með það í huga að skila eins hraðvirkri vinnslu og framast er unnt og í samanburðar prófunum við ýmis umfangsmeiri kerfi kemur hann mjög vel út. Vegna þess að frá upphafi skipti hraði og áreiðanleiki meiru fyrir höfunda kerfisins frekar en hversu mikla SQL eiginleika (e. Features) breidd kerfið studdi, hefur þjónninn frá upphafi stutt SQL staðalinn aðeins að hluta en gert það vel. Fæstum finnst þetta koma að sök því framkvæma má nánast allt í MySQL umhverfinu sem SQL staðallinn krefst og vafamál er hvort nokkur miðlari styðji fullkomlega við SQL.

Lengi vel var til dæmis enginn stuðningur við framandlykla (e. Foreign key) í MySQL gagnagrunnum, eða þar til útgáfa 3.23.44 kom út og þá því aðeins að töflur í grunninum væru af tegundinni InnoDB. Fyrir suma gagna­grunns­forritara þykir stuðningur við framandlykla afar mikilvægur því hann getur létt vissa vinnu af forritaranum og auðveldað vissar tegundir af gagnagrunns hönnun. MySQL AB hefur reyndar lofað því að fullur stuðningur verði kominn við framandlykla í útgáfu 5.1.

Staðreyndin er sú að til að framfylgja þeim kröfum sem framandlyklar setja á gagnagrunninn í það og það sinnið, þarf miðlarinn að erfiða meira en annars. Þetta eykur biðtíma og álag við gagnavinnslu. Hraði og skilvirkni undir álagi er einmitt mjög mikilvægt þegar komið er í nettengda gagnagrunns vinnslu af því tagi sem MySQL er hannaður fyrir.

Algengt er að MySQL miðli grunnum sem innihalda milljónir færslna og oft þarf að miðla gögnum þessara grunna til hundruða notenda samtímis í rauntíma. Við slíkar aðstæður skiptir hraði og skilvirkni mun meira máli en hvort forritari þurfi að eyða hálfum vinnudegi í að tryggja ákvæði (e. Constraints) svo sem framandlykla í forritunar kóta sínum.

Margir forritarar álíta að framandlykla ákvæðin eins og „cascade on delete“ og „cascade on update“ megi framkvæma með forritunar-rökum (e. Programming Logic) Höfundar MySQL fylgja þeirri stefnu. Eftir því sem vinsældir MySQL hafa færst í aukanna hafa kröfur um víðtækari möguleika af þessu tagi og víðtækari stuðning við SQL staðalinn orðið háværari og með hverri útgáfu-uppfærslunni (e. Version upgrade) á fætur annarri hefur nýjum eiginleikum verið bætt inn.

Er það yfirlýst stefna MySQL AB að innan tíðar muni miðlarinn bjóða fullkominn stuðning við SQL staðalinn. Má geta þess t.d. að miðlarinn skilur nær allar SQL aðgerðir en þær sem ekki njóta stuðnings ennþá eru hunsaðar í vinnslu. Í umræðu af þessu tagi mætti þó íhuga að í upphafi var miðlarinn ekki hannaður sem söluvara heldur sem öflugur gagnagrunns þjónn sem gæti unnið samkvæmt þörfum höfundanna. Hins vegar sló búnaðurinn í gegn og í dag er talinn vinsælasti gagnagrunns hugbúnaðurinn sem gefinn er út undir merkjum opinna linda[2].

Með MySQL útgáfu 5 var bætt við stuðningi við „vistaðar stefjur“ (e. Stored Procedures) sem leyfa hönnuðum að skrifa sínar eigin stefjur og kveikjur[3] (e. Triggers) sem geta brugðist við ákveðnum atvikum eða ástandi í grunnunum sem eiga þessar stefjur. Stuðningur við framandlykla var kominn í útgáfu 3.23 (að hluta) og stuðningur við undir-fyrirspurnir (e. Sub Selects) kom í útgáfu 4. Svo hröð virðist þróunin vera að það taki því varla að taka fram í svona bók hvað þjóninn skorti, svo hratt er nýjum eiginleikum bætt við. Notendur kynnast því hvort sem er fljótt hvað skortir í svona kerfum. Notendahandbókin sem fylgir MySQL, telur yfir 1200 síður í dag, og er eytt miklu púðri þar í að kenna notendum að sniðganga og gera hið besta úr því sem miðlarann skortir.

Einn styrkur MySQL felst í því að hver sem er getur farið á vefsetrið www.mysql.com og niðurhalað kerfinu. Þar má finna útgáfur fyrir öll þau helstu stýrikerfi sem eru notuð í tölvunotkun samtímans. Þannig getur hver sá sem óskar eftir öflugu gagnasafns­umsjónarkerfi í miðlara/biðlara umhverfi, s.s. hönnuðir gagnvirkra vefsíðuna, sótt sér ódýrt og í sumum tilfellum frítt kerfi sem er öruggt, hraðvirkt og býr yfir víðtækum eiginleikum er henta fyrir allflestar aðstæður. Þeir sem óska öflugri kerfa s.s. Oracle eða Microsoft SQL Server geta síðar keypt þessi kerfi og með tiltölulega lítilli kótun flutt grunna sína yfir. Í mörgum tilfellum er nóg fyrir þessa sömu aðila að bíða í nokkrar vikur, í mesta lagi fáeina mánuði, eftir næstu uppfærslu á MySQL.

Þegar ég kynnti mér MySQL fyrst var útgáfa 3.23 sú nýjasta og hraus mér hugur að lesa um allt það sem skorti. Innan tíðar, þegar ég hafði tileinkað sér notkun kerfisins saknaði ég einskis, auk þess sem þetta er allt að koma eða þegar komið.


[1] Enska hugtakið Server er á íslensku notað ýmist sem þjónn eða miðlari. Bæði orðin merkja hið sama en í bók þessari eru þau notuð bæði og hafa þá alltaf sömu merkingu.

[2] Enska hugtakið „Open Source“ hefur ekki verið þýtt ennþá á íslensku þó oft sé talað um opinn hugbúnað þá myndi það merkja „Open Software“ sem er skylt hugtak en ekki hið sama. Höfundur hefur því kosið að nota hugtakið Opnar lindir.

[3] Íslenska tölvuorðasafnið hefur ekki ennþá komið með tillögu á íslenskun enska gagnagrunns-hugtaksins „Trigger.“ Ég mun notast við orðið „Kveikja“ í sömu merkingu.

This entry was posted in MySQL bók. Bookmark the permalink.

Comments are closed.