MySQL je najpopularnije i najkorišćenije open source RDBMS (relational database managment system) rešenje, trenutno dostupno na internetu. Većina savremenih Web aplikacija se oslanja na MySQL, koji ujedno zauzima i centralni deo popularne LAMP platforme (Linux – Apache – MySQL – Perl/PHP/Python). Wikipedia, Google, Facebook, Twitter, Nokia.com, YouTube su samo neki od izuzetno popularnih sajtova na internetu, koji koriste MySQL kao database rešenje. Koriste ga i mnogi svetski poznati open source projekti kao što su: WordPress, Joomla, Drupal, phpBB.

Pročitajte još i: Šta su uopšte baze podataka?

MySQL je napisan pomoću c i c++ programskih jezika i sa punim pravom možemo da kažemo da je multiplatformski jer radi na sledećim operativnim sistemima: AIX, BSDi, FreeBSD, HP-UX, eComStation, i5/OS, IRIX, Linux, Mac OS X, Microsoft Windows, NetBSD, Novell NetWare, OpenBSD, OpenSolaris, OS/2 Warp, QNX, Solaris, Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos, Tru64, a portovan je i na OpenVMS.

Kratak istorijat, licenciranje i MySQL konektori

MySQL je proizvod švedske kompanije MySQL AB, koju je 2008 preuzeo Sun Microsystems, a od 2010 godine vlasništvo preuzima Oracle Korporacija. Prva verzija MySQL-a objavljena je 1995 godine, a prva verzija za Microsoft Windows operativni sistem, 1998 godine. MySQL 3.23.n verzija pojavila se na tržištu u avgusti 1999 godine, ali je tek januara 2001 sa prepravkama i verzijom 3.23.32 smatrana stabilnom za korišćenje. Od 2001 godine InnoDB storage engine postao je sastavni deo MySQL-a.

mysqlcommandline

Od verzije 5.1 postoje dve verzije: open source community verzija MySQL servera i komercijalna Enterprise verzija. Generalno, MySQL server sa svim pratećim klijentskim bibliotekama potpada pod dvojnu licencu. Za razvoj FOSS (Free Open Source Software) aplikacija pod GPL licencom MySQL je besplatan, međutim za nezavisne proizvođače softvera (ISV ili Independent Software Vendors) ili bilo koga čiji se vlasnički softver oslanja na MySQL rešenje, a nije spreman da distribuira source kod svog softvera, postoji posebna komercijalna licenca. Više o MySQL licenci možete pročitati na adresi http://www.mysql.com/about/legal/licensing/oem/

Mnogi programski jezici poseduju svoje karakteristične API biblioteke, za pristup MySQL serveru. U MySQL terminologiji te API biblioteke se nazivaju konektori. Najpoznatiji su Connector/J za Java platforumu, Connector/Net za .NET platformu, Connector/C++ MySQL drajver za C++ programski jezik itd.

Funkcionalnosti

MySQL podržava korišćenje više tipova tabela u jednoj bazi podataka – takozvani independent storage engine. Data funkcionalnost je jedna od osobenosti MySQL-a. Najpoznatiji tipovi tabela su MyISAM i InnoDB tabele. MyISAM tabele su optimizovane za select upite, a zaključavanje je na nivou tabele, dok InnoDB tabele podržavaju transakcije i referentni integritet podataka, a zaključavaju se samo selektovani redovi. To ukratko znači da kada MySQL klijent pošalje upit MySQL serveru, a podaci se nalaze u MyISAM tabeli, server zaključa kompletnu tabelu, izvrši traženi upit i rezultat prosledi klijentu, a potom otključa tabelu. Za vreme ovih operacija tabela je bila nedostupna za ostale klijente i upite i oni su bili na čekanju.

Kod InnoDB tabela ne zaključava se kompletna tabela, već samo selektovani redovi. Svi upiti koji se međusobno ne podudaraju mogu se izvršavati uporedo. Za arhiviranje možemo koristiti poseban tip tabela – MySQL Archive. Zanimljivo je da ovaj tip tabela ne podržava brisanje podataka, već samo dodavanje. Memory ili Heap tip tabela sve podatke pohranjuje u RAM memoriji i upotrebljava se kada je potreban ekstremno brz pristup podacima.

Pored storage engine-a koji predefinisano dolaze uz MySQL , a to su: MyISAM, Falcon, Merge, Memory, Federated, Archive, CSV, Blackhole, Cluster, EXAMPLE, Maria i InnoDB, postoje i storage engine-i razvijeni od strane partnera i MySQL Community-ja. Podrazumevani storage engine od MySQL verzije 5.5 je InnoDB.

MySQL podržava razne tipove replikacija, kao što su  master – master i master – slave replikacija. Podržana kombinatorika podrazumeva jedan master server na jedan slave server, mnogo slave replika na jedan master server, ali više mastera servera na jedan slave server nije podržano. Jedna od specifičnosti MySQL-a je i server SQL mode, koji određuje koju SQL sinktaksu server treba da podrži, odnosno koje validacije treba da primenjuje.

Generalno MySQL je moderan RDBMS i kao takav podržava korišćenje stored procedura, trigera, kursora, funkcija, ugnježdenih upita, keširanje upita. Može da radi u klaster okruženju, a pored nabrojanog podržava i full-text indeksiranja, ima ugrađenu SSL podršku, podržava unicode, DTP (distributed transaction processing) itd.

Postoje i neka ograničenja MySQL-a, a jedno od bitnijih je neusklađenost sa SQL standardom. Kao posledica te neusklađenosti, moguće je ignorisanje standardne SQL sintakse, bez prijavljivanja bilo kakve greške. Upotreba trigera je limitirana na maksimalno dva trigera nad jednom tabelom, prvi pre i drugi nakon upisa podataka. Takođe na view objektima nije moguća primena trigera.

Grafički alati

MySQL predefinisano ne dolazi sa grafičkim alatom, odnosno podrazumevan način rada je korišćenje komandne linije. Međutim kao poseban paket, sa adrese http://www.mysql.com/products/workbench/, možete preuzeti MySQL Workbench – grafički alat za rad sa MySQL serverom i bazama. Tri osnovne komponente iz kojih se sastoji su:

  • SQL development komponenta koja omogućava kreiranja konekcija ka database serverima. U sebi poseduje i integrisani SQL Editor koji obezbeđuje izvršavanje SQL upita. Data komponenta Workbench-a je unapređena verzija nekada samostalne Query Browser aplikacije.
  • Komponenta za data modelovanje omogućava kreiranje database modela. Poseduje integrisan Table Editor, koji obezbeđuje lako upravljanje tabelama, kolonoma, indeksima, trigerima, particija, privilegijama itd.
  • Komponenta koja obezbeđuje serversku administaciju. Služi za  kreiranje i administraciju MySQL serverskih instanci.

mysqlworkbench

Pored MySQL Workbench alata razvijenog od strane Oracle Korporacije, postoje grafički alati drugih firmi razvijeni za rad sa MySQL-om. Neki od njih su besplatni, neki su komercijalni, a osnovna namena svih je database dizajn, modelovanje i administracija. Neki od najpoznatijih su phpMyAdmin, SQLYog, OpenOffice, DBStudio itd.

Zaključak

Tri osobine koje objedinjene predstavljaju sinonim za MySQL su: pouzdanost, dobre performanse i jednostavnost korišćenja. Podatak da je MySQL najzastupljenije RDMS rešenje na internetu, govori dovoljno sam po sebi. Takođe svrha ovog članka nije bila komparacija MySQL-a sa drugim komercijalnim i nekomercijalnim RDMS rešenjima, već da vam predstavimo MySQL kao moderan RDMS sistem i prezentujemo neke od njegovim funkcionalnosti. Nadamo se da smo u tome i uspeli.

Više informacija o MySQL-u možete pronaći ćete na stranici sa dokumentacijom http://dev.mysql.com/doc/refman/5.5/en/

itmogul-logoTekst je preuzet sa ugašenog bloga IT modul i originalna autorka ovog teksta je Vladimir Blagojević. Kompjuteraš IT blog će objavljivati tekstove sa tog bloga kako riznica znanja sa te lokacije ne bi otišla u zaborav.