Saga MySQL

Saga MySQL er að nokkru leyti tengd sögu mSQL gagnagrunns­þjónsins og má rekja til baka til ársins 1994. Á þeim tíma, þegar notendur þörfnuðust RDBMS[1] (e. Relational DataBase Management System) kerfa var fátt í boði. Helstu vörumerki þess tíma voru Oracle, Sybase og Informix. Þessi kerfi sem öll kostuðu og kosta enn skildinginn voru hönnuð til að miðla gríðarmiklu magni gagna og oft innan flókinna vensla (skyldleika).

Öll þessi kerfi kosta einnig mikið í vinnslu (e. Resource intensive). Bæði er að kerfin eru kostnaðarsöm í notendaleyfum auk þess að til þurfti öflugustu vélar undir þau og dugði þá ekki 100 Mhz 486 tölva (á þeim árum voru Pentium 60 Mhz rétt að koma inn á sjóndeildarhringinn) sem þó var dágóður kostur á þeim tíma. Helsti tölvukosturinn voru tölvur á borð við Digital Alpha RISC System, Sun SPARC  eða sambærilegar vélar sem eingöngu voru notaðar með UNIX stýrikerfum oft sérhönnuðum fyrir hvern verkvang (e. Platform) fyrir sig.

Stór fyrirtæki og stærri háskólar áttu auðvelt með að eyða milljónum í notendaleyfi og vélbúnað en smærri aðilar og einstaklingar höfðu um fátt að velja nema þá helst veigaminni skjáborðsforrit (e. Desktop Programs). Þó eitthvað væri í boði af ódýrum miðlara/biðlara lausnum þá studdu þau síður við SQL staðalinn en buðu frekar eigin lausnir. Áberandi meðal þessara ódýrari kerfa var Postgres sem þróaðist frá sömu rótum og Ingres sem var einskonar dýr stóri bróðir. Bæði kerfin byggðu gagnagrunns vinnslu sína og samskipti notenda (eða notendaforrita) við gagnagrunna sína á QUEL málinu. Postgres studdist við undirmengi (e. Subset) þess máls sem nefnist PostQUEL.

Um sama leyti var nokkuð um að skjáborðsforrit á borð við Borland Paradox notuðu QBE málið sem er stytting hugtaksins „Query By Example.“ Ekki skyldi þó rugla því máli við SQL staðalinn sem er stöðluð málskipan fyrir samskipti á milli forrits annars vegar og gagnasafns-umsjónarkerfis hins vegar. QBE er myndrænt valmál sem auðveldar venjulegu fólki að veiða gögn úr gagnasafni. Síðar var QBE málið útfært betur í myndrænum fyrirspurnum í Microsoft Access sem þýðir þær yfir í SQL aðgerðir.

David Hughes

Á þessum tíma var David Hughes að vinna að þróun kerfisins „Minerva Network Management System.“ Starf hans var hluti undir­búnings­náms til meistaragráðu (Ph.D.) í upplýsingakerfum við háskóla í Ástralíu. Innan síns kerfis studdist hann við notkun gagnagrunns er geymdi upplýsingar um netkerfi sem Minerva átti að stjórna. Þar eð hann hafði ekki greiðan aðgang að neinu hinna öflugri kerfa sem á í boði voru á þeim tíma studdist hann við Postgres.

Hughes komst að þeirri niðurstöðu að Minerva þyrfti öflugan SQL stuðning svo ytri kerfi gætu tengst innri grunni þess og nálgast upplýsingar úr honum. SQL staðallinn myndi opna Minerva netupplýsingakerfið út á við en PostQUEL málið sem Postgres notaði hentaði ekki. Í dag styður Postgres reyndar SQL staðalinn. Reiptogið sem leiddi af þessari þarfagreiningu setti hann í erfiða aðstöðu því eina leiðin fyrir hann til að styðja við SQL staðalinn var að kaupa fokdýrar lausnir frá Oracle, Sybase eða Informix.

Millilendingin var að smíða SQL þýðanda (e. Translator) inn í Minervu sem gæti gripið (e. Intercept) öll SQL köll til kerfisins og þýtt þau yfir í PostQUEL sem Postgres vélin (e. Engine) í Minervu gæti þá svarað. Þessi lausn var kölluð miniSQL eða mSQL.

PostQUEL verður að RDBMS kerfi

Um sinn virtist framangreind lausn henta vel þar sem Minerva var notað til kerfisumhalds. Ekki skipti máli hvaða gagnasafns-umsjónarkerfi (DBMS) voru notuð til gagnavinnslu utan kerfisins, svo fremi að þau styddu við SQL. Frá sjónarhóli Minervu gat Postgres undirkerfið stutt við SQL köll því þar á milli lá mSQL til að þýða SQL aðgerðir (e. Statements) yfir í PostQUEL.

Því miður virtist þessi lausn fremur óhentug til langframa því eftir því sem Minerva kerfið var notað við stærri kerfi, og eftir því sem þróun kerfisins sjálfs miðaði áfram og varð umfangsmeiri, kom í ljós að Postgres og ýmis umfangsmeiri gagnasafns-umsjónarkerfi sinntu ekki nægilega hinu litla eiginleika­mengi (e. Feature Set) sem Minerva krafðist, sérstaklega ekki innan þeirra takmörkuðu vélbúnaðar linda (e. Hardware Resources) sem í boði voru.

Meðal annars krafðist Minerva þess að gagnagrunnur sinn gæti sinnt mörgum samhliða gagna­grunns­tengingum (e. Simultanious Database Connections). Postgres þjónninn gat því aðeins stutt þessa kröfu að keyrð væru mörg tilvik (e. Instance) hans í einu. Algengt er með þjóna í miðlara umhverfi að þeir geti sett í gang mörg ferli (e. Processes) sjálfs sín í senn. Þetta er svipað því að vefrápari, t.d. Internet Explorer, getur opnað fleiri glugga í einu til að sækja vefsíður, hver gluggi er þá sjálfstætt ferli eða tilvik sama forritsins.

Um þetta leiti kemur í ljós að hugsanlegir þátttakendur í Minerva verkefninu urðu undan að snúa þar sem þeirra kerfi gátu ekki átt samskipti við Postgres þjóninn og þessir sömu þátttakendur höfðu ekki ráð á að kaupa og setja upp hin öflugri kerfin.

Hughes var kominn í þá stöðu að hann þurfti að endurskoða afstöðu sína til Postgres. Hann var þegar kominn með mSQL inn í kerfið sem sinnti öllum fyrirspurnum sem Minerva sinnti. Allflestar  voru þær af taginu INSERT, DELETE og SELECT setningar[2] (e. Statements). Postgres kerfið bjó þá þegar yfir miklu stærra eiginleika­mengi en mSQL og var full umsvifamikið fyrir Minervu sem krafðist einfaldara undirmengis. Í raun þurfti Hughes aðeins að bæta við mSQL þeim eiginleika að geta geymt og sótt gögn í eigið kerfi og væri hann þá kominn með sinn eigin gagnagrunns miðlara. Þessi þróun leiddi til þess hugbúnaðar sem mSQL hefur þróast til í dag.

Monty

Þó nöfn þessara tveggja kerfa séu svipuð þá væru mistök að líta á MySQL sem beint svar við eiginleika­skorti mSQL kerfisins eða aðra útgáfu af sama kerfi. Þetta eru ekki sömu kerfin þó saga þeirra sé tengd í upphafi. Upprunalegur höfundur MySQL, Michael „Monty“ Widenius, hafði unnið við gagnagrunnsþróun hjá sænska fyrirtækinu TcX frá árinu 1979 og meðal annars þróað þar gagnasafns-umsjónarkerfið UNIREG til notkunar innanhúss. UNIREG hefur síðan ’79 verið umskrifað oft og í mismunandi forritunarmálum. Kerfið getur í dag unnið með stór gagnasöfn[3].

Árið 1994 hóf TcX þróun á vefværum hugbúnaðarlausnum og notaði UNIREG gagnagrunna sem gagnatrog (e. Data Storage). UNIREG hins vegar krafðist mikillar vélbúnaðar yfirbyggingar til að geta miðlað kröftugum vefsíðum (e. Dynamic Webpages) á skilvirkan hátt. TcX leit þá til SQL staðalsins varðandi útfærslu en lenti á sama vegg og David Hughes hafði áður rekist á. mSQL (útgáfa 1.x) studdi t.d. ekki við atriðaskrár (e. Index) og var því enn hægvirkari og slappari en UNIREG.

Atriðaskrár eru undirtöflur á gagnagrunnstöflur. Ef við til dæmis lítum á nafnatöflu sem geymir lista yfir alla einstaklinga búsetta í Bandaríkjunum þyrftum við töflu fyrir u.þ.b. 400.000.000 færslur. Slík tafla þyrfti að geyma dálka með upplýsingum um kennitölur (í Bandaríkjunum væri það Social Security Number), nöfnum einstaklinga, gilt heimilisfang, fæðingardag, trúarflokk, kyn, og sitthvað fleira. Eins og gefur að skilja getur slík tafla orðið nokkuð stór og mjög tafsamt að leita í henni.

Atriðaskrá gæti þá verið undirtafla sem geymir hverja einustu kennitölu og númer þeirrar færslu, eða línu, þar sem hún finnst í aðaltöflunni. Þegar leitað væri eftir kennitölum mætti leita í undirtöflunni sem væri mjög viðbragðsfljót. Þá þyrfti aðeins að sækja upplýsingar úr þeim línunúmerum sem atriðaskráin vísar á. Gagnasafns-umsjónarkerfi geyma slíkar atriðaskrár þannig að notandi sér þær ekki. Hönnuður töflunnar skilgreinir að taflan skuli byggja atriðaskrá, þ.e. Index, á tiltekin svið töflunnar og kerfið sér sjálfkrafa um framangreinda hegðun.

Monty hafði samband við Hughes varðandi hvort sá síðarnefndi hefði hug á að tengja mSQL við B+ höndlarann sem UNIREG byggði á. B+ á hér við „B-tree“ gagnageymslu aðferð (e. Datastorage Method). Þetta er nálgun til geymslu gagna á diski og ósýnileg forriturum sem vinna beint með gagnasafns-umsjónarkerfið eða forritun biðlara. B-tree er ein möguleg (og vinsæl) lausn á geymslu gagna sem innviðir gagnagrunnskerfa nota þegar gögn eru vistuð á diskinn og langt, langt utan efnissviðs bókarinnar.

Hughes var á þessum tíma langt kominn með útfærslu sinna eigin hugmynda um uppbyggingu atriðaskráa fyrir mSQL 2. TcX tók því þá ákvörðun að endurhanna sinn eigin gagnagrunns miðlara fyrir eigin þarfir. Við þá þróun þótti TcX mönnum óþarfi að enduruppgötva hjólið. Þeir byggðu hið nýja kerfi að einhverju leyti á UNIREG þróunar­reynslunni og miðuðu grunnþróun sína að miklu leyti við fjölda tækja og tóla fyrir mSQL sem í vaxandi mæli komu fram hjá þriðju-aðilum. Þannig urðu forritunar-skilin (e. Application Programming Interface eða API[4]) hjá TcX gagnagrunns miðlaranum samhæfð við mSQL forritunar-skilin. Forritarar sem höfðu kótað gagnagrunns­vinnslu og tengingar við mSQL gátu því fært sín tól yfir á TcX lausnina með lágmarks fyrirhöfn.

Fyrsta gagnagrunns tól TcX var „Screen builder/report“ tól forritað í BASIC. Þetta er á þeim tíma þegar fínustu „State-Of-the-Art“ tölvur höfðu 4Mhz Z80 örgjörva með 16KB[5] vinnsluminni. Tólið var snemma fært (e. Ported) yfir á UNIX verkvang og þróað eitthvað áfram þar. Um miðjan níunda áratuginn heyrðust óánægjuraddir frá viðskiptavinum. Þó notendum líkaði vel við forritið þá vildu þeir eitthvað sem þeir könnuðust við. Svo TcX hóf leitina að vinsælu tískuyrði eða söluhugtaki (e. Buzzword).

Hönnuðirnir hjá TcX litu þá til SQL, tískuyrðis sem átti vaxandi vinsældum að fagna og gæti hentað sem framhlið (e. Front-end) á lágtækni stefjusöfnin (e. Low Level Libraries) sem þeir notuðu. Við fyrstu sýn virtist sem mSQL gæti hentað en við frekari eftirgrennslan og rannsóknir var ljóst að þörf var á að kóta SQL vél (SQL Engine) frá grunni. Hins vegar reyndust forritunarskilin hjá mSQL mjög hentug sem framhlið á hina nýju gagnagrunnsvél, eins og áður hefur komið fram, svo þeim var viðhaldið. Þetta gerði þeim kleift að nota ýmis gagnagrunns tól sem áður höfðu verið þróuð til samskipta við mSQL. Greinilega höfðu þeir farið þá leið að geyma grunna í mSQL vél og hannað forrit til samskipta við hana en skiptu svo út gagnagrunns-vélinni án þess að skipta út forritunum. Þetta hefur gert þeim kleyft að spara sér heilmikla vinnu. Eins og fyrir algjöra tilviljun stóðu þeir uppi með söluhæfan gagnagrunns miðlara.

Nú var MySQL gagnagrunns vélin orðin samhæf við vinnslu hjá miklu fleiri aðilum en bara TcX og þeirra viðskiptavinum því margir notuðu mSQL sem grunn og eigin tól (biðlara) til samskipta við hann, rétt eins og TcX hafði gert. Þessir aðilar gátu því fyrirhafnarlaust skipt út gagnagrunnsvélinni en haldið áfram notkun eigin tóla sem höfðu verið þróuð beinlínis til samskipta við mSQL. Því var tekin sú ákvörðun að gefa MySQL út í samræmi við hugmyndir Peter Deutsch hjá Aladdin Enterprises, sem hafði áður gefið út Ghostscript. Hugmyndin virkar þannig að útgefandi á allan höfundar- og útgáfurétt og leyfir öðrum að nota forritið svo fremi þeir selji það ekki sem hluta af sinni lausn.

Héðan er komið hugtakið opinn-hugbúnaður (e. Open Software); allir mega nota og dreifa en ekki selja. Opnar lindir (e. Open Source) er þegar uppruna-kóti (eða frumkóti) forritsins er einnig opinn og öðrum frjáls að aðlaga til eigin þarfa án þess að mega selja til þriðja aðila. Hugtakið frír-hugbúnaður (e. Free Software) er þegar eigandi hugbúnaðarins gefur hann á sama hátt og opin-hugbúnað en opnar ekki endilega lindirnar. Deilihugbúnaður (e. Shareware) er hugbúnaður sem dreift er frítt, án lindanna, og mælst er til að notendur greiði lágt gjald ef þeir kjósa að nota hann umfram tilskilin tímamörk.

Höfundar MySQL og Monty sjálfur segjast ekki vita hvaðan nafngiftin „My“ kemur en minnast má hér á að My er mjög algengt nafn meðal sænsku mælandi Finna. Monty er einmitt sænskur Finni og oft er nefnt í þessu samhengi að dóttir hans, sem fæddist um líkt leyti heitir My. Nýlega gaf MySQL AB út MaxDB sem er byggt á sama grunni og eins og fyrir tilviljun nefnist sonur Montys einmitt Max. Þess má geta að TcX grunnskrárnar og mikið af söfnunum (e. Libraries) hafa lengi haft formerkið „My“ og nafngiftin gæti rétt eins verið þaðan komin.

Í maí 1995 kemur MySQL 1.0 út en var aðeins dreift meðal fjögurra aðila en fáeinum mánuðum síðar í október 1995 kemur MySQL 3.11.1 út í tvíundar-skrá (e. Binary File) fyrir Solaris stýrikerfið frá Sun Microsystems. Mánuði síðar kom út Linux tvíundarskrá ásamt uppruna-kóta (e. Source Code) og ýmsum MySQL biðlaraforritum (e. Clients).

Þeir félagar Michael „Monty“ Widenius, David Axmark frá Detron HB ásamt Allan Larsson stofnuðu þá fyrirtækið MySQL AB sem enn í dag er aðaleigandi höfundar- og útgáfuréttar á MySQL kótanum. David Axmark sem skrifaði fyrstu útgáfu skjölunarsafns (e. Documentation) grunnsins hvatti þá félaga til að gefa kótann út á Netinu undir merkjum samvinnu-hugbúnaðar (e. Co-operative software).

Samvinnu-hugbúnaður er í samsett hugtak fyrir opinn-hugbúnað og opnar-lindir. Forritið er sett í opna dreifingu og allir geta sótt það og prófað. Allir geta sömuleiðis sótt og lesið uppruna-kótann auk þess sem útgefendur taka tillit til þeirra tillagna og uppástungna sem koma til baka frá notendum. Þannig taka notendur þátt í að auka gæði búnaðarins.

Samvinnu-kótun af þessu tagi er viðskipta­líkan sem L. Peter Deutsch hjá Aladdin systems í Bandaríkjunum notaði við útgáfu á Ghostscript. Peter hefur efni á að setjast í helgan stein í dag. Hugmyndin gengur út á að kótinn fyrir hugbúnaðinn er gefinn út t.d. á Netinu. Hver sem vill getur lesið kótann, lagað að eigin þörfum, þýtt (eða túlkað) fyrir eigin verkvang og notað. Gera má ráð fyrir að unnendur þessa kóta/hugbúnaðar endurgefi (e. Feedback) breytingar sínar og lagfæringar, sem geti, hljóti þær samþykki eigenda, skilað sér áfram í endurbættum og uppfærðum útgáfum kótans.

Þegar þetta er ritað er MySQL útgáfa 5 nýkomin á sjóndeildarhringinn, sem þýðir að „Alpha“ útgáfan er komin í dreifingu á Netinu og víðsvegar í notkun. Jafnan þegar ný uppfærsla kemur út er sett Alpha útgáfa á Vefinn. Yfirleitt eru þetta nokkuð traustar útgáfur en að vissum tíma liðnum er sett Beta útgáfa sem er þá nokkuð reynd. Eftir nokkurn reynslutíma kemur svo lokaútgáfa. Hver sem vill getur sótt hugbúnaðinn beint af vefsvæði MySQL AB í Svíþjóð, eða gegnum einhvern tuga spegla (e. Mirrors) sem staðsettir eru víðsvegar í heiminum (m.a. á Íslandi). ´

Bæði er hægt að sækja frumkótann (uppruna-kótann) til að lesa, þýða og keyra eða þýddar tvíundar útgáfur sem setja má beint upp á einhverjum eftirtalinna verkvanga: Dec OSF, SGI Irix , OpenBSD, IBM AIX, Mac OS X, FreeBSD, Solaris, Windows, Linux AMD64, Linux x86, Linux IA64.


[1] Database Management System er þýtt sem gagnasafns-umsjónarkerfi. Relational er venslað.

[2] Statement er ýmist notað sem aðgerð, setning eða skipun. Tölvuorðasafnið mælir með orðinu aðgerð og oft er sú leið farin í bókinni. Ýmsar bækur nota hugtakið „segð“ við svipaðar aðstæður en það orð er að hverfa. Sumar bækur nota orðið segð (setning) þar sem þessi bók notar orðið „yrðing“ sem er enska orðið Expression samkvæmt Tölvuorðasafni.

[3] Gagnasafn er stór upplýsingabingur og getur verið óskipulagður, gagnagrunnur er hins vegar gagnasafn sem hefur verið skipulagt. Gagnasafns-umsjónarkerfi er hugbúnaður s.s. MS Access eða MySQL sem leyfir hönnuði að breyta gagnasafni í gagnagrunn. Einfalt?

[4] Tölvuorðasafnið hefur ekki gefið út tillögu á þýðingu þessa hugtaks svo ég nota hér hugtakið forritunar-skil til bráðabirgða.

[5] Ég fylgi þeirri ritvenju að stórt b (B) tákni bæti í skammrituðum minnisstærðum, stundum geng ég yfir strikið og rita Bæti með stórum upphafsstaf þar sem því er við komið. Þetta er gert til aðgreiningar á litlu b sem táknar bita.

 

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

Comments are closed.