# 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.

## [редактиране] Приложение

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, но това е вярно и за много други бази данни.

## [редактиране] Администриране

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

Широкоразпросранена и популярна алтернатива, написана на PHP, е софтуерът с отворен код phpMyAdmin.

## [редактиране] Спецификация

### [редактиране] Платформа

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].

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

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

- 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

### [редактиране] Бъдещи версии

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

- логическо разделяне(Partitioning)
- Възможност за архивиране на всички типове хранилища по време на работа
- Репликация в режим защита от грешки (Fail-safe replication)
- Ограничения на ниво колона (Column-level constraints)
- Планиране на събития (Event Scheduling)
- XML функции

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

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

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

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

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

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

Има 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]

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

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

## [редактиране] Поддръжка

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

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

## [редактиране] Лицензиране

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

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

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

## [редактиране] Произношение

"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

Ранните версии на 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 отговарят, че програмата върши очакваното от потребителите, желаещи да приемат нейните ограничения (намаляващи със всяка следваща версия) в замяна на скорост, простота и бърза разработка.

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

Някои потребители критикуват позицията на 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.

## [редактиране] История

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

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

- 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 запитвания на секунда

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

- MySQL клъстър
- LAMP / WAMP
- MaxDB, другата база данни на MySQL AB
- Postgresql
- Firebird

## [редактиране] Външни препратки

- Интернет сайт на MySQL
- "Планета" MySQL - сборка от интернет дневници посветени на MySQL
- MySQL Forge
- Конференция на потребителите на MySQL
- Библиотека от общи вградени процедури за MySQL

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

- Ръководство за MySQL
- Бъдещето на MySQL
- за сваляне на MySQL бази данни
- Канал #mysql wiki документация
- тънкости на MySQL описание на много от възможностите на MySQL, които работят както трябва, но по-различно от начина по който се работи с други бази данни

### [редактиране] Статии и ръководства

- Онлайн дневник на Петър Зайцев/Вадим Ткаченко относно оптимизация на производителността на MySQL
- Database Journal articles on MySQL

### [редактиране] Интернет приложения използващи MySQL

- Конвертира csv файл в онлайн MySQL даза данни

Шаблон:Бази данни

Взето от „http://bg.wikipedia.org../../../m/y/s/MySQL_62a0.html“.

Категории: Приложен софтуер

##### Views

- Статия
- Беседа
- Текуща версия

##### Търсене

##### На други езици

- العربية
- Bosanski
- Català
- Česky
- Dansk
- Deutsch
- English
- Esperanto
- Español
- Eesti
- Euskara
- فارسی
- Suomi
- Français
- עברית
- Hrvatski
- Magyar
- Bahasa Indonesia
- Italiano
- 日本語
- 한국어
- Kurdî / كوردي
- Lietuvių
- Latviešu
- Bahasa Melayu
- Nederlands
- ‪Norsk (bokmål)‬
- Polski
- Português
- Română
- Русский
- Slovenčina
- Slovenščina
- Српски / Srpski
- Svenska
- ไทย
- Türkçe
- Українська
- Tiếng Việt
- 中文