Šta je MySQL i koje su mu funkcionalnosti?

MySQL je najpopularnije i najkorišćenije RDBMS (relational database managment system) rešenje otvorenog koda, trenutno dostupno na internetu. Većina savremenih Web aplikacija se oslanja na MySQL, koji ujedno zauzima i centralni deo popularne LAMP platforme (Linuks – Apache – MySQL – Perl/PHP/Python). Wikipedia, Google, Fejsbuk, Tviter, Nokia.com, YouTube su samo neki od izuzetno popularnih sajtova na internetu, koji koriste MySQL kao DB 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“ (ce) i „c++“ (ce++) 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 Vindovs operativni sistem, 1998 godine. MySQL 3.23 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.

Od verzije 5.1 postoje dve verzije: Community verzija otvorenog koda 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 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 platformu, 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 (hip) tip tabela sve podatke čuva 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 „master“ 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 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 bazi i 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 modela baze. 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.

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 DB 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 dev.mysql.com/doc/refman/5.5/en

Tekst je preuzet sa ugašenog bloga IT modul i originali autor ovog teksta je Vladimir Blagojević. Kompjuteraš IT blog objavljuje tekstove sa tog bloga kako riznica znanja sa te lokacije ne bi otišla u zaborav.