MySQL

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

MySQL е многопоточна, многопотребителска, SQL система за управление на бази данни (СУБД) с повече от шест милиона инсталации.[1]

MySQL AB разпространява MySQL като свободен софтуер под GNU General Public License (GPL), но също така под традиционните за комерсиален софтуер лицензи за случаи, когато използването е несъвместимо с GPL. Подобно разпространение е известно като двойно лицензиране.

MySQL се разработва, разпространява и поддържа от Шведската компания MySQL AB, която държи авторските права за голяма част от програмния код. Подобен e моделът на JBoss а също и начинът по който Free Software Foundation работи с авторските права по нейните проекти в отличие от Apache проекта, където софтуерът е обществено разработван, а авторските права за програмния код принадлежат на индивидуалните автори.

Компанията разработва и поддържа системата, продава поддръжка и сервизни договори, както и комерсиални лицензи за MySQL, и наема хора от целия свят които работят съвместно с помощта на интернет. MySQL AB е основана от Давид Аксмарк, Алан Ларсон, и Михаел „Монти“ Видениус през 2001.

MySQL продава също и друга DBMS, MaxDB, която е с напълно различен код.

Достъпни са програмни интерфейси, позволяващи програми, написани на различни програмни езици да имат достъп до MySQL бази данни. Такива са: C, C++, C#, Delphi (чрез dbExpress), Eiffel, Smalltalk, Java (с директна поддръжка), Lisp, Perl, PHP, Python, Ruby, REALbasic (Mac), FreeBasic, и Tcl, като всеки от тях има специфичен програмен интерфейс. Интерфейс тип ODBC наречен MyODBC позволява на други програмни езици, които поддържат ODBC интерфейс да комуникират с MySQL база данни, например: ASP или Coldfusion. MySQL е написан основно на ANSI C.

Приложение[редактиране | edit source]

MySQL е популярна за интернет приложения като MediaWiki или Drupal и е база данни в LAMP, MAMP и WAMP платформи (Linux/Mac/Windows-Apache-MySQL-PHP/Perl/Python), и за софтуера с отворен код Bugzilla - приложение за проследяване на грешки. Нейната популярност като Интернет приложение е тясно свързана с популярността на PHP, като често, комбинирани с MySQL, са наречени Динамичното дуо. Лесно е да се намерят много източници, които ги комбинират в интернет статии или книги (PHP and MySQL for Dummies, PHP and MySQL Bible, Beginning PHP and MySQL, и други) В тези книги се твърди, че MySQL е по-лесен за изучаване от други бази данни. В пример от книгата за глупаци се посочва, че от MySQL може да се излезе с командите exit или quit, но това е вярно и за много други бази данни.

Администриране[редактиране | edit source]

За администриране на MySQL може да се използва включеното приложение работещо от Командна линия (командите: mysql и mysqladmin). Също достъпни за сваляне от интернет сайта на MySQL са GUI приложения за администриране: MySQL Administrator и MySQL Query Browser.

Широкоразпространена и популярна алтернатива, написана на PHP, е софтуерът с отворен код phpMyAdmin, Database Master - MySQL and SQLtite Manager.

Спецификация[редактиране | edit source]

Платформа[редактиране | edit source]

MySQL работи на много различни Платформи—включващи AIX, BSDi, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, Novell NetWare, OpenBSD, OS/2 Warp, QNX, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows ME, Windows NT, Windows 2000, Windows XP и други версии на Windows. MySQL е прехвърлена и на OpenVMS, достъпна от [2].

Последна версия на продукта[редактиране | edit source]

От началото на 2009 г. MySQL предлага официална версия 5.1.32. Тя има следните възможности:

  • ANSI SQL 99 - частично, както и разширения
  • Междуплатформена поддръжка
  • Съхранени процедури
  • Тригери (triggers)
  • Указатели (Cursors)
  • Обновяеми изгледи (Views)
  • Пълна поддръжка на VARCHAR
  • INFORMATION_SCHEMA
  • Стриктен режим (Strict mode)
  • Поддържа X/Open XA разпределена обработка на транзакции (DTP); запазване в две стъпки (two phase commit) като част от това използвайки InnoDB на Oracle
  • Независими хранилища (storage engines) (MyISAM оптимизирано за висока скорост, InnoDB за транзакции и запазване на връзките (referential integrity), Archive за архивиране на данни в по-малко пространство и други)
  • Транзакции с InnoDB, BDB и Cluster хранилища; възстановителни точки (savepoints) използвайки InnoDB
  • Поддръжка на SSL
  • Кеширане на запитвания (Query caching)
  • Вложени заявки (sub selects)
  • Репликация от тип "Главен" - "Подчинен" (master/slave), много "подчинени" и един "главен", не поддържа автоматично много "главни" за един "подчинен" (multiple masters per slave).
  • Пълнотекстово индексиране и търсене с MyISAM
  • "Вграден" вариант (embedded library)
  • Пълна поддръжка на Unicode
  • Съвместима с ACID при използване на InnoDB, BDB и Cluster хранилища
  • Клъстър - разпределена обработка от тип "без споделен ресурс" Shared Nothing чрез MySQL Cluster

Бъдещи версии[редактиране | edit source]

На MySQL 5.1 roadmap можем да видим, че се очаква:

Foreign key поддръжка за всички хранилища най-вероятно ще има в MySQL 5.2 (присъстваща от версия 3.23 за InnoDB).

Текущата развойна версия на MySQL 5.1 е 5.1.11 beta

По какво се отличава[редактиране | edit source]

Следните възможности са само на MySQL, но не и на други РСУБД:

  • Множество хранилища (MyISAM, Merge, InnoDB, BDB, Memory/heap, Cluster, Federated, Archive, CSV, Blackhole and Example in 5.x), давайки възможност да се избере най-ефектовното за всяка таблица в приложението.

Различни подборки[редактиране | edit source]

Има 3 типа подборки на MySQL сървър:

  • Стандарна: MySQL-стандартна е препоръчителна за повечето от потребителите и включва InnoDB хранилище.
  • Максимална (Max): (това не е MaxDB, която е разработвана в сътрудничество със SAP) mysqld-max Extended MySQL Server. MySQL-максимална включва допълнителни възможности, които могат да не бъдат достатъчно тествани и не са необходими обикновено.
  • MySQL-Debug е компилирана по начин по който се улеснява трасировката на грешки, но не е предназначена за повседневно използване, защото наличието на допънителни инструкции може да намали производителността.

Започвайки с MySQL 5.1, MySQL AB вече не предлага тези 3 версии. Ще има само една подборка "MySQL server package", която включва mysqld със цялостна функционалст и всички хранилища. Вместо да се предлага допънителна подборка за трасиране на грешки, тя ще се включва в предлагания пакет и ще се нарича mysqld-debug. [3]

Какво е специфично за изходния код[редактиране | edit source]

MySQL е написана на C. SQL анализатора(parser) използва yacc и "домашен" lexer. Документ описващ някои от вътрешните структури на кода и начина за програмиране е достъпен от Интернет сайта на MySQL (en).[4]

Поддръжка[редактиране | edit source]

MySQL AB предлага поддръжка чрез MySQL Network, включително 24/7 30-минути време за реакция, като екипа за поддръжка има директен достъп до програмисти при нужда за решаване на възникнали проблеми. Като допълнение там могат да се намерят форуми и пощенски списъци а други потребители и работещи във фирмата често могат да бъдат видени на няколко IRC канала за помощ.

Членовете на MySQL Network имат достъп до програми, сертифицирани за техните операционни системи и обновления с много по-малка честота от общодостъпната версия (Community Edition) на MySQL. MySQL Network поддържа няколко нива на членство базирани въз основа на важността и неотложността на проблема както и времето за реакция.

Лицензиране[редактиране | edit source]

Продуктът MySQL сървър и клиентските библиотеки са разпространявани под двоен лиценз. Потребителите могат да изберат GNU General Public License [5], който MySQL разшири с FLOSS изключение от лиценза(License Exception). То позволява програма лицензирана под друг OSI-съвместим лиценз с отворен код, несъвместими с GPL, да се свържат с клиентските библиотеки на MySQL. [6]

Клиенти, които не желаят да бъдат ограничавани от GPL могат да закупят комерсиален лиценз. [7]

Някои потребители индивидуално продължават разработката върху по-ранни версии на клиентските библиотеки, които бяха разпространявани под по-малко рестриктивния Lesser General Public License. [8]

Произношение[редактиране | edit source]

"MySQL" официално се произнася като "Май Есс Кю Елл" ("My Ess Queue Ell") [maɪ ɛs kjuː ɛl], а не "Май секуел" ("My sequel") [maɪ siːkwəl] [9]. Но компанията няма нищо напротив ако другите използват варианта "Май секуел" ("My sequel") или други локални вариации.

Частта "My" от името би трябвало да идва от името на първото дете на Монти [10], пишещо се "My", но произнасяно като "mü" [my] (или приблизително като "ми").

Частта "SQL" използва стандартното произношение на S-Q-L (Structured Query Language), не това произнасящо се "sequel", което се приближава до официалното ANSI произношение, но е в конфликт с името на по-ранна база данни на IBM .[11]

На шведски (MySQL AB е шведска компания) думата "Myskväll" (приятна вечер или моята вечер "Mys kväll") се произнася по подобен начин, но това може би е случайност. Въпреки това такова произнасяне е нормално за Швеция.

Критики за MySQL[редактиране | edit source]

Ранните версии на MySQL включват само няколко стандартни възможности на релационна СУБД (RDBMS). Дори и в текущата версия липсват доста стандартни възможности, присъстващи в други РСУБД. Това накара много експерти по бази данни да критикуват MySQL, че няма възможностите да бъде РСУБД. Теоретици на ралацинния модел като Крис Дайт, Фабиан Паскал, Е.Ф. Код, Хю Даруен и техни последователи го твърдят, защото тя не отговаря на няколко от 12-те правила на Код и като всяка друга SQL СУБД тя не трябва да се счита релационна.

Много от ранните критики бяха оправени в по-късни версии, включвайки липсата на транзакции и интегритет на връзките (relational integrity constraints). Тези възможности са небходими за поддръжка на "ACID" за ралационни бази данни, който позволява на СУБД да изолира приложенията, така че те да не могат да поставят други или непълни данни. [12] Други критики включват отклоняването на MySQL от SQL стандарта по начина на обработка на "NULL" значенията и тези по подразбиране. Нейния начин за обработка на дати позволява да има дни след последния ден на месеца ако той е с по-малко от 31 дена а артиметичните операции са уязвими на целочислено препълване или окастряне на числа с плаваща запетая ([13]). Тези данни се обработват по стандартите на SQL в MySQL версия 5 чрез използването на специални SQL режими.

В предишните версии на упътването на MySQL се изяснява, че няколко от липсващите функционалности (предимно за съвместимост с SQL СУБД) са безполезни или дори вредни и потребителите биха били по-добре без тях. Една глава със заглавие "Причините да не се използват Foreign Keys ограничения" , съветва потребителите, че проверката на целостта на връзките (relational-integrity) е трудна за използване и усложнява приложението и единствената полза би била да позволи програми да изчертават връзките между таблиците в базата данни. [14] Друга глава твърди, че СУБД без поддръжка на транзакции може да осигури целостта на данните по същия начин, както и такава поддържаща ги, без да се има предвид разликата между интегритет на транзакциите и запазване на данни, когато токът спре. [15] Тъй като тези твърдения противоречат на основните принципи на дизайна на релационна база данни, MySQL е взета на подигравка от някои експерти по бази данни. Без значение дали те са прави или не, тези твърдения са "забравени" в по-новите версии на упътването. MySQL сега поддържа преди "ненужните" транзакции и цялост на връзките.

Когато тестовата версия на MySQL 5.0 е пусната през март 2005, Дейвид Аксмарк(David Axmark), съучредител на MySQL, казва: "Хората критикуваха MySQL, откакто започнахме, че нямаме съхранени процедури, тригери, и изгледи ("People have been criticising MySQL since we started for not having stored procedures, triggers and views,") и "Ние елиминираме 10 години критики в една версия"("We're fixing 10 years of criticism in one release.") [16]. MySQL 5.0 от 13 октомври - 5.0.15 е пусната официално на 24 октомври 2005, след повече от два милиона сваляния по време на тестовия период на 5.0.

Критиците смятат, че популярността на MySQL е учудваща при наличие на други проекти на бази данни с отворен код със сходна производителност и по-близко до SQL стандартите. Защитниците на MySQL отговарят, че програмата върши очакваното от потребителите, желаещи да приемат нейните ограничения (намаляващи със всяка следваща версия) в замяна на скорост, простота и бърза разработка.

Лицензни проблеми[редактиране | edit source]

Някои потребители критикуват позицията на MySQL AB относно лицензирането. Някой проекти с отворен код като Asterisk PBX, намалиха поддръжката на MySQL заради загриженост относно лицензирането. Освен това има спор относно разпространяването на библиотеки с отворен код на MySQL с други приложения с отворен код. Най голямата полемика се появи с PHP - имащ лиценз несъвместим с GPL. Този проблем се разреши по-късно след като MySQL създаде изключение от лиценза изрично позволяващо включването на клиентската библиотека на MySQL в други проекти с отворен код отговарящи на лицензите с отворен код включително лиценза на PHP. [17]

През септември 2005, MySQL AB и SCO създадоха "партньорство" за "съвместна сертификация, пласиране, продажби, търговия и разработка за комерсиалната версия на базата данни за новата версия на Unix OpenServer 6 на SCO". От началото на 2003 SCO атакува линукс с поредица от патентни дела свързани с операционната система Linux срещу големи компании. Някои от работниците на MySQL изказаха мнение, че компанията е загрижена за крайните си потребители, независимо от избора им на операционна система и че компанията ще остави на съда да реши и че и други бази данни с отворен код са пренесени и поддържат SCO OpenServer.

През октомври 2005, Oracle Corporation придоби Innobase Oy, финдландска компания разработваща хранилището InnoDB позволяващо на MySQL да работи с транзакции и "foreign keys". В комюнике на Oracle издадено след придобиването се споменава че договора, позволяващ на MySQL AB да използва кода на хранилището трябва да бъде подновен (и може би предоговорен) през 2006. По време на Конференция на потребителите на MySQL през април 2006, MySQL издаде комюнике в което потвърди, че MySQL и Innobase Oy са се разбрали за многогодишно подновяване на техния договор. [18]

През февруари 2006, Oracle Corporation придоби Sleepycat Software [19], производителя на Berkeley DB, друго от хранилищата, използвани от MySQL.

История[редактиране | edit source]

  • Първата версия на MySQL е пусната вътрешно на 23 май, 1995
  • Версия за Windows пусната на 8 януари, 1998 за Windows 95 и NT

Известни потребители[редактиране | edit source]

  • Amazon.com - за много вътрешни проекти
  • Cox Communications - четвъртия по големина доставчик на кабелна телевизия в САЩ, има повече от 3600 таблици и 2 милиарда реда данни в техните бази данни и около два милиона вмъквания(inserts) на час.
  • Craigslist
  • Digg - Популярен новинарски сайт.
  • Google - за търсачката на "AdWords" програмата
  • Gumtree - най-големия британски сайт за обяви
  • LiveJournal - около 300 милиона страници видени за ден
  • NASA - прехвърли системата за закупки от Oracle към MySQL [20]
  • Omniture
  • RightNow
  • Sabre, и системата за резервации Travelocity
  • Slashdot - с около 50 милиона страници видени за ден.
  • Yahoo! - за много критични приложения
  • 2006 MySQL Application of the Year winners
    • Nokia, използва MySQL клъстър за информация в реално време относно потребителите на мобилната мрежа.
    • flickr, използва MySQL за управление на милиони фотографии и потербители.
    • NetQOS, включва MySQL за управление на най-големите мрежи на Chevron, American Express и Boeing.
  • 2005 MySQL Application of the Year winners
    • CNET Networks
    • Friendster, повече от 85 милиона динамични страници на ден, и 1,5 милиарда MySQL запитвания за ден
    • Wikipedia, повече от 200 запитвания и 1,2 милиона обновявания за ден с максимум от 11 000 запитвания на секунда

Вижте също[редактиране | edit source]

Външни препратки[редактиране | edit source]

Документация[редактиране | edit source]

Статии и ръководства[редактиране | edit source]