MySQL
MySQL – дүние жүзінде ең көп қолданылатын, қайнары тегін және ашық, реляциялық мәліметтер қоры жүйесі (RDBMS). Серверлік бағдарлама ретінде, бірнеше қолданушыларға бірнеше мәліметтер қорын қолдануды қамтамасыз етеді. MySQL сөзіндегі "My" сөзі, бағдарлама жасаушысы Майкл Видньюс-тың (Michael Widenius) қызының аты - "My" сөзінен алынған. Ал SQL фразасы - Құрылымдасқан Тапсырыс Тілі (Structured Query Language) дегенді білдіреді.
MySQL, проект қайнарын GNU General Public License (GPL) және әр түрлі жеке меншік лицензияларында шығарды. MySQL-ды кезінде MySQL AP атты Шведттық фирма демеу еткен, ал қазір оны толығымен Oracle корпорациясы сатып алды.
Толық функционалды мәліметтер қорын қажет ететін, қайнары тегін проекттер жиі MySQL-ды қолданады. Серверді коммерциялық проекттерде қолдану үшін, қосымша функциялармен ұсынылатын бірнеше нұсқалары бар. MySQL-ді қолданатын бағдарламаларға TYPO3, Joomla, WordPress, phpBB, MyBB, Drupal және де басқа LAMP бағдарламаларын жатқызуға болады. MySQL сонымен қатар Google, Wikipedia, Facebook және Twitter сияқты дүниежүзілік және кең ауқымды web-бағдарламаларында қолданылады.
Қолданылуы
Веб-бағдарламаларында MySQL кең қолданылады және кең тараған LAMP бағдарламаларының ішінде басты компонент рөлін атқарады. LAMP сөзі - "Linux, Apache, MySQL, Perl/PHP/Python" сөйлемінің акронимі.
MySQL - қайнары тегін бағдарламалар мен Интернеттегі танымал Flickr, Nokia.com, YouTube, Wikipedia, Google, Facebook және Twitter сайттарында қолданылады.
Платформалар және бағдарламашының қолдану интерфейстері (API)
MySQL - C және C++ тілдерінде, ал SQL парсері және sql_lex.cc деп аталатын лекксикалық анализаторы yacc тілінде жасалған.
MySQL көптеген жүйелер платформаларында жұмыс істейді. Оларға кіретіндер: 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. Сонымен қатар OpenVMS жүйесіне портталған түрі бар.
Мәліметтер қорымен жұмыс істеу үшін, көптеген бағдарламалау тілдеріне кітапханалар жасалынған. Мысалы, C# және VB.NET үшін MySQL Connector/Net, ал Java үшін JDBC драйвері. Бұнымен қатар ODBC интерфейсін қолдайтын ASP және ColdFusion сияқты тілдер үшін MyODBC кітапханалары бар. Ал URL арқылы кез-келген web-клиенттің MySQL серверімен араласуға мүмкіндік беретін HTSQL технологиясы, MySQL-серверімен бірге келеді.
Басқару және графикалық интерфейсті клиенттер
MySQL көбінесе реляциялық мәліметтер қоры ретінде қолданылатындықтан ол, жүйені және ондағы мәліметтерді басқаруға арналған клиенттік бағдарламамен келмейді. Оның орнына, өзінің командалық жолмен орындалатын құралдарын немесе басқалар жасаған клиенттік бағдарламаларын жүктеп алып қолдануға болады.
Ресми бағдарламалар
Графикалық интерфейсте MySQL мәліметтер қорын басқаруға және олардың структурасын жасау үшін, MySQL AB фирмасы MySQL Workbench атты бағдарламасын шығарды. Ол бұғанға дейін болған MySQL GUI Tools бағдарламасының орнына келді. MySQL Workbench қолданушыларға келесідей мүмкіншіліктер ұсынады:
- Мәліметтер қорын дизайндау және модельдеу
- SQL бағдарламалау - MySQL Query Browser бағдарламасының орнына
- Мәліметтер қорын басқару - MySQL Administrator-дың орнына
MySQL Workbench екі нұсқада келеді, Олар, қайнары тегін қоғамдастық нұсқасы (Community Edition) және қосымша мүмкіншіліктері бар стандартты нұсқасы (Standard Edition).
Басқа бағдарламалар
MySQL серверімен жұмыс істеуге және оны басқаруға арналған басқа да клиенттік бағдарламалар бар. Кейбір кең қолданылатындары төменде алфавит бойынша тізімделген:
- Adminer - CSS стилін қолдануға болатын, бір ғана PHP скрипттен және бірнеше мәліметтер қорымен жұмыс істей алатын, тегін клиенттік бағдарлама.
- DaDaBIK - мәліметтер қорына CRUD операцияларын web арқылы жасауға мүмкіндік беретін, қайнары ашық және тегін PHP тілінде жасалған клиенттік бағдарлама.
- DBEdit – MySQL және басқа да мәліметтер қорын басқаруға арналған тегін бағдарлама.
- dbForge GUI Tools — схемаларды және мәліметтерді салыстыруға және синхрондауға, тапсырыстарды құруға арналған жеке модульдерден тұратын бағдарлама.
- HeidiSQL – Windows платформасына арналған толық функционалды клиенттік бағдарлама. Басқару жүйесіне жергілікті және алыстағы компьютердегі мәліметтер қорын, кестелерді, кесте бағаналарын және жеке мәлімет жолын өңдеу операциялары жатады. Сонымен қатар уақыт/күн және бірнеше мәндік типті жолдарды өзгертуге арналған клиенттік функциялары бар.
- LibreOffice Base - мәліметтер қорын жасауға және басқаруға, қолданушыларға мәліметпен жұмыс істеу ыңғайлы және түсінікті болу үшін мәліметке есептемелер мен олардың формаларын жасауға мүмкіндік береді. Microsoft Access сияқты - Access, ODBC, MySQL және PostgreSQL мәліметтер қорына клиенттік бағдарлама ретінде қолдануға болады.
- Navicat – Windows, Macintosh және Linux операциялық жүйелеріне арналған мәліметтер қорын басқаруға арналған графикалық бағдарламалардан тұратын бағдарламалар жиынтығы.
- OpenOffice.org – OpenOffice.org Base, MySQL мәліметтер қорын басқара алады. (Ол үшін тегін және қайнары ашық OpenOffice.org suite бағдарламасын толығымен орнату керек.)
- phpMyAdmin – тегін web арқылы қолдануға арналған және көбінесе web-hosting-тарда кең қолданылатын web-бағдарлама. Ол PHP-да жасалғандықтан, LAMP, MAMP, және WAMP бағдарламаларының ішінде кең қолданылады.
- SQLBuddy - PHP-да жасалған тегін web-бағдарлама.
- Sequel Pro - Mac OS X операциялық жүйесіне арналған тегін және қайнары ашық бағдарлама-клиент.
- SQLYog - MySQL-ды басқаруға арналған тегін немесе ақылы бағдарлама. Бұлардың бірнеше нұсқалары бар: Community, Ultimate, Enterprise және Professional. Қоғамдастық нұсқасы (Community Edition) тегін және қайнары ашық бағдарлама.
- Toad for MySQL – Quest Software компаниясының MySQL-ді басқаруға арналған тегін клиенттік бағдарламасы.
Бұлардан басқа ақылы бағдарламарға кіретіндер dbForge Studio for MySQL, Epictetus, Oracle SQL Developer, SchemaBank, SQLPro SQL Client, Toad Data Modeler.
Командалық жолмен басқару
MySQL бірнеше командалық жолмен орындалатын құралдармен келеді. Олар мәліметтерге тапсырыс, мәліметтерді мұрағаттау, сервер статусын қадағалау, мәліметтер қорын жасау және т.б. Сонымен қатар командалық жолмен орындалатын басқалар жасаған бағдарламалар да бар. Мысалы, Perl-да жасалған Maatkit бағдарламасы.
Серверге орнату
MySQL серверін қайнардың өзінен жинап орнатуға болады. Бірақ бұл біршама уақыт қажет ететін және жалықтыратын процесс. Бұл операция көбінесе егер сізге ерекше конфигурацияда сервер қажет болса ғана істеледі. Linux операциялық жүйесінің бағдарлама пакеттерін басқаруға арналған жүйесі бұндай жұмыстарды минималды қимылмен орындатқызады. Дей тұрғанмен, әдетте орнатудан кейін қауіпсіздік және оңтайландыруға байланысты конфигурациялық жұмыстар жасау керек болады.
MySQL нарықтағы ірі және ақылы мәліметтер қорларына балама ретінде жасалса да, кең ауқымды мәліметтерге байланысты талаптарды орындай алады. Ол көбінесе кіші және орта көлемді бір-серверлік LAMP-негізінде жасалған бағдарламаларға компонент ретінде немесе жеке сервер ретінде қолданылады. MySQL-ге деген тартымдылық - оны қолдану оңайлығында. Мүны phpMyAdmin сияқты қайнары ашық және тегін бағдарламалардан көруге болады. Орта бағамен есептегенде, MySQL-ді бірнеше гигабайт жадты және бірнеше процессорлы қуатты аппараттық құрылғыларда ауқымды етіп қолдану әбден мүмкін. Бірақ та жалғыз серверлік ауқымдатуда қуаттылық жағынан шектеулер бар, сондықтан кеңірек ауқымдатуда, жоғары өнімділік пен сенімделікті қамтамасыздандыру үшін мульти-серверлік MySQL орнатулары қажет. Әдеттегі жоғарғы класстағы конфигурация жазу операцияларын орындайтын қуатты "master", "master"-дегі мәліметтердің көшірмесін сақтайтын және оқу операцияларын орындайтын бірнеше "slave" серверлерден тұрады.
"Master" сервері әрдайым "slave" серверлерімен синхронда болады, сондықтан кездейсоқ бір уақытта "master" өшіп қалса, бір "slave" жүйе жаңа "master"-ге автоматты түрде көшеді. Cөйтіп жұмыссыз уақыт көлемі кішірейтіледі. Өнімділікті ары қарай жақсарту үшін, мәліметтер қорынан алынған нәтижелерді memcached деп аталатын бағдарламаны қолдану арқылы жадта сақтауға ұсынылады немесе мәліметтер қорын "shard" деп аталатын бірнеше бөліктерге бөліп оны бөлісілген сервер класстерлеріне жаюға болады.
Cloud-арқылы орнату
Жүктеуге арналған екінші опция ол MySQL серверін Amazon EC2 сияқты cloud-платформаларында орнату. Cloud-та MySQL үшін орнатудың 2 түрі бар:
- Virtual Machine Image - cloud-ты қолданатын қолданушылар, MySQL сервері орнатылған өздерінің компьютерлерінің файл ретіндегі көшірмесін жүктеу арқылы немесе дайын және оңтайландырылған MySQL сервері бар Amazon EC2 сияқты қызметтер қамтамасыздандырған көшірмені қолдана алады.
- MySQL as a Service - кейбір "cloud" платформалары MySQL мәліметтер қорын "қызмет" ретінде ұсынады. Бұл ретте бағдарламашыларға MySQL мәліметтер қорын өздеріне орнатудың және оны қолдаудың қажеті жоқ. Оның орнына қызметті қамтамасыздандырушы жауапкершілікті және оны қолдауды өзіне алады, ал сол қызметті қолданатын бағдарламашылар соның қолданған бөлігіне ғана төлейді. Екі айқын байқалатын cloud-негізіндегі MySQL қызметтері - Amazon Relational Database Service және Xeround Cloud Database. Соңғысы Amazon EC2, Rackspace және Heroku қызметтерінде істейді.
Үшінші опция, қолданушылардың қатысуымен басқарылатын MySQL. Бұл жерде MySQL серверін қызмет қамтамасыздандырушысы ұстаса да, оны басқару бағдарламашының қатысуымен өтіп отырады. 2011 жылдан бастап, көптеген ірі cloud қызметін қамтамасыздандырушылардың ішінен тек Rackspace ғана осы опцияны ұсынады.
Қосымшалары
2009 жылдан бастап, MySQL 5.1-ші нұсқасы 2 түрлі нұсқада ұсынылады: қайнары тегін Community Server және ақылы Enterprise Server. MySQL 5.5-те осы лицензиялар негізінде ұсынылады. MySQL 5.5 және MySQL 5.1 нұсқаларының қайнарлары ортақ және келесідей қосымшалар бар:
- ANSI SQL 99 стандартының кең жиынтығы мен өз қосымшалары бар
- Бірнеше платформаны қолдауы
- Сақталған процедуралар
- Триггерлер
- Курсорлар
- Жаңғырмалы көріністер
- Ақпарат схемасы
- Information schema
- Қатал режим
- X/Open XA үлестірілген транзакция өңделімін (Distributed Transaction Processing (DTP)) қолдау; Oracle-дың InnoDB қозғалтқышын қолдану арқылы, осының бөлігі ретінде екі фазалық жазу
- Тәуелсіз сақтау қозғалтқыштары (MyISAM - оқу үшін, InnoDB - транзакцияларға және сілтемелік бүтіндік, MySQL Archive - мұрағат қорын шағын орында сақтау үшін)
- InnoDB және Cluster сақтау қозғалтқыштарындағы транзакциялардың қолдауы; InnoDB-ның белгіленген нүктені қолдауы
- SSL қолдауы
- Тапсырысты кэштау
- Құрамдас SELECT тапсырыстары
- Бір slave-ке бір master, бірнеше slave-ке бір master және автоматты емес бір slave-ке бірнеше master репликацияларын қолдауы (яғни, Master-Master және Master-Slave репликациялары)
- MyISAM қозғалтқышы арқылы толық текстік индексациялау және іздеу
- Енгізілген мәліметтер қоры кітапханасы
- Жартылай Unicode-ты қолдау (UTF-8 және UCS-2-мен кодталған мәліметтер, BMP типтегі мәліметімен шектеледі)
- Транзакция қолдауы бар қозғалтқыштарды (InnoDB және Cluster) қоданғандағы ACID ережелерінің толық сәйкестігі
- Кестені партицияланғанда, пратицияларды оңтайландырғыштан толығымен жою
- MySQL Cluster арқылы ортақ мәліметсіз кластерлеу
- Жағдайға байланысты "қатаң мұрағаттау" (mysqlhotcopy қолдану арқылы)
Ай сайын бағдарламашылар MySQL серверінің жаңа нұсқаларын шығарып отырады. Бағдарламаның қайнарларын MySQL сайтынан немесе MySQL-дің Bazaar репозиторийінен GPL лицензиясы бойынша алуға болады.
Ерекше қосымшалары
MySQL жүйесі келесі қосымшаларды қолдауды жүзеге асырады. Бірақ ол қосымшаларды басқа жүйелер қолдамауы мүмкін:
- Әр кестелерге жеке сақтау қозғауыштарын қолдану. Бұл, бағдарламашыға тиімдісін таңдауға мүмкіндік береді(MySQL 5.0 нұсқасында әр қозғауыштар компиляция арқылы жүйеге ендірілуі керек; MySQL 5.1 нұсқасында, қозғауыштар динамикалық түрде қолданылу барысында жүктеліне алады):
- Басты сақтау қозғауыштары (MyISAM, Falcon, Merge, Memory (heap), Federated, Archive, CSV, Blackhole, Cluster, EXAMPLE, Maria, және MySQL 5.5 нұсқасынан бастап жүйеде стандартты етіп қойылған InnoDB)
- Сырттан жасалған қозғауыштар(solidDB, NitroEDB, ScaleDB, TokuDB, Infobright (бұрынғы Brighthouse), Kickfire, XtraDB, IBM DB2). InnoDB - сырттан жасалған қозғауыш болатын, бірақ Oracle компаниясының сатып алуы, MySQL ядросын және InnoDB екеуін бірге қосты.
- Қоғамдастық құрған (memcache engine, httpd, PBXT, Revision Engine) қозғауыштар
- Меншік қоғауыштар
- Топтасқан фиксация - секундына бірнеше жазу орындау үшін бірнеше қосылымдардағы бірнеше транзакцияларды біріктіру. (PostgreSQL-де бұл функционалдың кеңейтілген формасы бар)
Шектеулері
MySQL, кебір SQL стандарттарын толық қолдамайды. Мысалы, стандартты SQL синтаксын, мәліметтер шектеулері, сыртқы кілттерге сілтемелерді тексеру және де басқа бизнесс логикадағы тұрақтылықты сақтауға арналған функциялары, қатаң тексерулерді орындамайды. Триггерлер болса бір тапсырыста бір рет ғана орындалады, яғни бір кестеге орындалған енгізу операциясының алдында немесе одан кейін бір-ақ рет бір триггерді орындауға болады. Көріністерге болса триггер орындауға болмайды.
Тарихы
MySQL жасалу кезеңдері келесілерден тұрады:
- Майкл Видньюс (Michael Widenius) және Дэвид Аксмарк (David Axmark) 1994 жылы ең бірінші нұсқасын жасады
- Бірінші ішкі шығарылым 23 мамыр 1995 жылы шықты
- 1998 жылдың 8 қаңтарында Windows 95 және NT арналған нұсқасы шығарылды
- 3.19 нұсқа: www.tcx.se сайтында 1996 жылдың аяғында шықты
- 3.20 нұсқа: 1997 жылы, қаңтарында
- 3.21 нұсқа: www.mysql.com сайтында 1998 жылы шықты
- 3.22 нұсқа: 1998 жылы alpha және beta нұсқалары шықты
- 3.23 нұсқа: 2000 жылы beta, ал 2001 жылы қаңтарда шығарылымға жіберілді
- 4.0 нұсқа: 2002 жылы тамызда бета, ал 2003 наурызда толық шығарылымға шықты
- 4.01 нұсқа: 2003 жылы тамызда бета нұсқасы шықты
- 4.1 нұсқа: 2004 жылы маусымда бета нұсқасы, 2004 жылы қарашада толық шығарылымға шықты(R-tree және B-tree алгоритмдері, құрама тапсырыстар, дайындалған тапсырыстар)
- 5.0 нұсқа: 2005 жылдың наурызынан бастап бета нұсқасы, 2005 жылы қазанда толық шығарылымы (курсорлар, сақталған процедуралар, триггерлер, көріністер, XA транзакциялары)
- Біріктірілген Сақтау Қозғалтқышын (Federated Storage Engine) жасаған бағдарламашы: "Біріктірілген Сақтау Қозғалтқышы - сынауға жасалған қозғалтқыш" деген, бірақ ол MySQL 5.0 нұсқасының басты таратылымдарына енгізіліп, стандартты опция ретінде қосылды. Бұл туралы біраз мағлұматтар "MySQL Federated Tables: The Missing Manual" құжаттамасында жазылған.
- 2008 жылы 26 ақпанда Sun Microsystems компаниясы MySQL AB-ды сатып алды.
- 5.1 нұсқа: 27 қараша 2008 жылы шықты (оқиғаларды кезекке қою, партициялау немесе бақшалау, плагиндарға API, қатар негізіндегі репликация, серверлік журнал кестелері)
- 5.1 нұсқада 20-дай белгілі бағдарлама қателіктері болды. Оның 35 пайызы 5.0 нұсқадан шыққандар (көбісі 5.1.51 нұсқасында жөнделді).
- MySQL 5.1 және 6.0 нұсқалары, өте үлкен мәліметтер қорымен жұмыс істегенде, өнімділік жағынан төмен болды. Бұның себебі, жартылай - бір тапсырысты бірнеше ядролы процессормен дұрыс өңдемеуінде жатты.
- 27 қаңтарда 2010 жылы Oracle корпорациясы Sun Microsystems компаниясын сатып алды.
- 2010 жылы, желтоқсанда MySQL Server 5.5 нұсқасы шықты. Бұған келесідей кеңейтілімдер мен қосылған жаңа мүмкіншіліктер қосылды:
- InnoDB қозғалтқышы транзакция мен сілтемелер дұрыстығын қолдағандықтан, ол стандартты қозғалтқыш ретінде орнатылды.
- InnoDB-ның енгізу-шығару жүйелері жақсартылды
- SMP қолдауы кеңейтілді.
- Семисинхрондық репликация.
- SQL стандартына сәйкес, жаңа SIGNAL және RESIGNAL командалары.
- Қосымша utf16, utf32 және utf8mb4 Unicode символдар жиынтығын қолдау.
- "Қолданушы анықтаған партициялауға" арналған жаңа опциялар.