Шта је MySQL и које су му функционалности?
MySQL је најпопуларније и најкоришћеније RDBMS (relational database managment system) решење отвореног кода, тренутно доступно на интернету. Већина савремених Web апликација се ослања на MySQL, који уједно заузима и централни део популарне LAMP платформе (Линукс – Apache – MySQL – Perl/PHP/Python). Wikipedia, Google, Фејсбук, Твитер, Nokia.com, YouTube су само неки од изузетно популарних сајтова на интернету, који користе MySQL као DB решење. Користе га и многи светски познати Open Source пројекти као што су: WordPress, Joomla, Drupal, phpBB.
Прочитајте још и: Шта су уопште базе података?
Кратак историјат, лиценцирање и MySQL конектори
MySQL је производ шведске компаније „MySQL AB“, коју је 2008 преузео Sun Microsystems, а од 2010 године власништво преузима Oracle корпорација. Прва верзија MySQL-а објављена је 1995 године, а прва верзија за Виндовс оперативни систем, 1998 године. MySQL 3.23 верзија појавила се на тржишту у августи 1999 године, али је тек јануара 2001 са преправкама и верзијом 3.23.32 сматрана стабилном за коришћење. Од 2001 године InnoDB storage engine постао је саставни део MySQL-а.
Од верзије 5.1 постоје две верзије: Community верзија отвореног кода MySQL сервера и комерцијална „Enterprise“ верзија. Генерално, MySQL сервер са свим пратећим клијентским библиотекама потпада под двојну лиценцу. За развој FOSS (Free Open Source Software) апликација под GPL лиценцом MySQL је бесплатан, међутим за независне произвођаче софтвера (ISV или Independent Software Vendors) или било кога чији се власнички софтвер ослања на MySQL решење, а није спреман да дистрибуира код свог софтвера, постоји посебна комерцијална лиценца. Више о MySQL лиценци можете прочитати на адреси http://www.mysql.com/about/legal/licensing/oem/
Многи програмски језици поседују своје карактеристичне API библиотеке, за приступ MySQL серверу. У MySQL терминологији те API библиотеке се називају конектори. Најпознатији су Connector/Ј за Java платформу, Connector/Net за .NET платформу, Connector/C++ MySQL драјвер за C++ програмски језик итд.
Функционалности
MySQL подржава коришћење више типова табела у једној бази података – такозвани „independent storage engine“. Дата функционалност је једна од особености MySQL-а. Најпознатији типови табела су MyISAM и InnoDB табеле. MyISAM табеле су оптимизоване за SELECT упите, а закључавање је на нивоу табеле, док InnoDB табеле подржавају трансакције и референтни интегритет података, а закључавају се само селектовани редови. То укратко значи да када MySQL клијент пошаље упит MySQL серверу, а подаци се налазе у MyISAM табели, сервер закључа комплетну табелу, изврши тражени упит и резултат проследи клијенту, а потом откључа табелу. За време ових операција табела је била недоступна за остале клијенте и упите и они су били на чекању.
Код InnoDB табела не закључава се комплетна табела, већ само селектовани редови. Сви упити који се међусобно не подударају могу се извршавати упоредо. За архивирање можемо користити посебан тип табела – MySQL Archive. Занимљиво је да овај тип табела не подржава брисање података, већ само додавање. Memory или Heap (хип) тип табела све податке чува у RAM меморији и употребљава се када је потребан екстремно брз приступ подацима.
Поред storage engine-а који предефинисано долазе уз MySQL , а то су: MyISAM, Falcon, Merge, Memory, Federated, Archive, CSV, Blackhole, Cluster, EXAMPLE, Maria и InnoDB, постоје и storage engine-и развијени од стране партнера и MySQL Community-ja. Подразумевани storage engine од MySQL верзије 5.5 је InnoDB.
MySQL подржава разне типове репликација, као што су „master – master“ и „master – slave“ репликација. Подржана комбинаторика подразумева један „master“ сервер на један „slave“ сервер, много „slave“ реплика на један „master“ сервер, али више „master“ сервера на један „slave“ сервер није подржано. Једна од специфичности MySQL-а је и сервер SQL mode, који одређује коју SQL синктаксу сервер треба да подржи, односно које валидације треба да примењује.
Генерално MySQL је модеран RDBMS и као такав подржава коришћење „stored“ процедура, тригера, курсора, функција, угњеждених упита, кеширање упита. Може да ради у кластер окружењу, а поред набројаног подржава и full-text индексирања, има уграђену SSL подршку, подржава unicode, DTP (distributed transaction processing) итд.
Постоје и нека ограничења MySQL-а, а једно од битнијих је неусклађеност са SQL стандардом. Као последица те неусклађености, могуће је игнорисање стандардне SQL синтаксе, без пријављивања било какве грешке. Употреба тригера је лимитирана на максимално два тригера над једном табелом, први пре и други након уписа података. Такође на „view“ објектима није могућа примена тригера.
Графички алати
MySQL предефинисано не долази са графичким алатом, односно подразумеван начин рада је коришћење командне линије. Међутим као посебан пакет, са адресе mysql.com/products/workbench, можете преузети MySQL Workbench – графички алат за рад са MySQL сервером и базама. Три основне компоненте из којих се састоји су:
- SQL девелопмент компонента која омогућава креирања конекција ка бази и у себи поседује и интегрисани SQL Editor који обезбеђује извршавање SQL упита. Дата компонента Workbench-а је унапређена верзија некада самосталне Query Browser апликације.
- Компонента за дата моделовање омогућава креирање модела базе. Поседује интегрисан „Table Editor“, који обезбеђује лако управљање табелама, колонома, индексима, тригерима, партиција, привилегијама итд.
- Компонента која обезбеђује серверску администацију. Служи за креирање и администрацију MySQL серверских инстанци.
Поред MySQL Workbench алата развијеног од стране Oracle корпорације, постоје графички алати других фирми развијени за рад са MySQL-ом. Неки од њих су бесплатни, неки су комерцијални, а основна намена свих је DB дизајн, моделовање и администрација. Неки од најпознатијих су phpMyAdmin, SQLYog, OpenOffice, DBStudio итд.
Закључак
Три особине које обједињене представљају синоним за MySQL су: поузданост, добре перформансе и једноставност коришћења. Податак да је MySQL најзаступљеније RDMS решење на интернету, говори довољно сам по себи. Такође сврха овог чланка није била компарација MySQL-а са другим комерцијалним и некомерцијалним RDMS решењима, већ да вам представимо MySQL као модеран RDMS систем и презентујемо неке од његовим функционалности. Надамо се да смо у томе и успели.
Више информација о MySQL-у можете пронаћи ћете на страници са документацијом dev.mysql.com/doc/refman/5.5/en
Текст је преузет са угашеног блога ИТ модул и оригинали аутор овог текста је Владимир Благојевић. Компјутераш ИТ блог објављује текстове са тог блога како ризница знања са те локације не би отишла у заборав.