Mysql что такое и зачем. Что такое MySQL и зачем его использовать серверу CS1.6? MySQL использует язык запросов SQL


MySQL является компактным многопоточным сервером баз данных, который характеризуется хорошей скоростью, легкостью, доступностью и устойчивостью в использовании.

Разработка MySQL

MySQL разрабатывался компанией tcx для внутренних потребностей, заключающихся в быстрой обработке крупных баз данных. В компании утверждают, что применяют MySQL с 1996 года на определенном сервере, который имеет более 40 БД, содержащих около 10 тысяч таблиц, из которых больше чем 500 имеют около 7 миллионов строк.

MySQL - идеальное решение как для малых, так и для средних приложений. Исходники данного сервера компилируют на многих платформах. Самое полное возможности сервера обозначается на Unix-серверах, которые имеют поддержку многопоточности, что в результате приносит значительный прирост производства.

Цена MySQL

MySQL – это бесплатный сервер для некоммерческого применения. В других случаях понадобится покупка лицензии, цена которой от 190 евро.

Возможности сервера MySQL

MySQL поддерживается языком запросов SQL при стандарте ANSI 92, а также имеет много расширений к данному стандарту, которые не существуют ни в одной, ни в другой СУБД.

В небольшой список перечни возможностей сервера вошли:

Недостатки сервера MySQL

Данный сервер действительно очень быстрый, но для таких показателей разработчики вынуждены были пожертвовать некоторыми требованиями к СУБД.

В этом сервере отсутствует:

Согласно утверждениям создателей, именно пункты от 2 по 4 предоставили возможность добиться отличного быстродействия. И если их реализовать, то значительно снизиться скорость сервера. Данные возможности не являются критичными проблемами при создании приложений, что совместно с быстродействием и небольшой стоимостью способствовало тому, что сервер стал таким популярным.

Таблицы привилегий сервера MySQL

Прежде, чем начинать разборы примеров, нужно немножко остановиться на одном из самых важных аспектов данного сервера – это механизме безопасности и целостности данных: таблицах привилегий сервера MySQL. Такие таблицы необходимы для аутентификации пользователя в случае обращения к этому серверу и дальнейшего связывания его правового доступа с определенным набором привилегий. И данный набор привилегий обозначает то, что способен предпринимать такой пользователь, который присоединился к MySQL, БД, а также уровне определенных таблиц и колонок. К примеру, администратор может оказать пользователю привилегии, которые будут достаточными для соединения с отдельной базой данных сервера и тем самым, ограничит доступ ко всем другим серверам. Более того, данному клиенту могут представиться только некоторые права в работе с базой данных, например, право выбора, модификации и разные вставки данных. Любой ситуация удаления данных пользователя, который обладает только этими тремя привилегиями, будет безуспешной, так как у него нет права не такие операции, как удаления.

MySQL - это популярная система управления базами данных (СУБД), очень часто применяемая в сочетании с PHP.

База данных представляет собой структурированную совокупность данных. Эти данные могут быть любыми - от простого списка предстоящих покупок до перечня экспонатов картинной галереи или огромного количества информации в корпоративной сети. Для записи, выборки и обработки данных, хранящихся в компьютерной базе данных, необходима система управления базой данных, каковой и является ПО MySQL. Поскольку компьютеры замечательно справляются с обработкой больших объемов данных, управление базами данных играет центральную роль в вычислениях. Реализовано такое управление может быть по-разному - как в виде отдельных утилит, так и в виде кода, входящего в состав других приложений.

MySQL - это система управления реляционными базами данных. В реляционной базе данных данные хранятся не все скопом, а в отдельных таблицах, благодаря чему достигается выигрыш в скорости и гибкости. Таблицы связываются между собой при помощи отношений, благодаря чему обеспечивается возможность объединять при выполнении запроса данные из нескольких таблиц. SQL как часть системы MySQL можно охарактеризовать как язык структурированных запросов плюс наиболее распространенный стандартный язык, используемый для доступа к базам данных.

MySQL - это ПО с открытым кодом. Применять его и модифицировать может любой желающий. Такое ПО можно получать по Internet и использовать бесплатно. При этом каждый пользователь может изучить исходный код и изменить его в соответствии со своими потребностями. Использование программного обеспечения MySQL регламентируется лицензией GPL (GNU General Public License), http://www.gnu.org/licenses/ , в которой указано, что можно и чего нельзя делать с этим программным обеспечением в различных ситуациях.

Почему веб-программисты отдают предпочтение СУБД MySQL? MySQL является очень быстрым, надежным и легким в использовании. Если вам требуются именно эти качества, попробуйте поработать с данным сервером. MySQL обладает также рядом удобных возможностей, разработанных в тесном контакте с пользователями. Первоначально сервер MySQL разрабатывался для управления большими базами данных с целью обеспечить более высокую скорость работы по сравнению с существующими на тот момент аналогами. И вот уже в течение нескольких лет данный сервер успешно используется в условиях промышленной эксплуатации с высокими требованиями. Несмотря на то что MySQL постоянно совершенствуется, он уже сегодня обеспечивает широкий спектр полезных функций. Благодаря своей доступности, скорости и безопасности MySQL очень хорошо подходит для доступа к базам данных по Internet.

Технические возможности СУБД MySQL MySQL является системой клиент-сервер, которая содержит многопоточный SQL -сервер, обеспечивающий поддержку различных вычислительных машин баз данных, а также несколько различных клиентских программ и библиотек, средства администрирования и широкий спектр программных интерфейсов (API). Мы также поставляем сервер MySQL в виде многопоточной библиотеки, которую можно подключить к пользовательскому приложению и получить компактный, более быстрый и легкий в управлении продукт. Доступно также большое количество программного обеспечения для MySQL, в большей части - бесплатного.

MySQL правильно произносится как ""Май Эс Кью Эль"".

Устройство MySQL

MySQL состоит из двух частей: серверной и клиентской.

Сервер MySQL постоянно работает на компьютере. Клиентские программы (например, скрипты PHP) посылают серверу MySQL SQL-запросы через механизм сокетов (то есть при помощи сетевых средств), сервер их обрабатывает и запоминает результат. То есть скрипт (клиент) указывает, какую информацио он хочет получить от сервера баз данных. Затем сервер баз данных посылает ответ (результат) клиенту (скрипту).
Почему всегда передается не весь результат? Очень просто: дело в том, что размер результирующего набора данных может быть слишком большим, и на его передачу по сети уйдет чересчур много времени. Да и редко когда бывает нужно получать сразу весь вывод запроса (то есть все записи, удовлетворяющие выражению запроса). Например, нам может потребоваться лишь подсчитать, сколько записей удовлетворяет тому или иному условию, или же выбрать из данных только первые 10 записей. Механизм использования сокетов подразумевает технологию клиент-сервер, а это означает, что в системе должна быть запущена специальная программа - MySQL-сервер, которая принимает и обрабатывает запросы от программ. Так как вся работа происходит в действительности на одной машине, накладные расходы по работе с сетевыми средствами незначительны (установка и поддержание соединения с MySQL-сервером обходится довольно дешево).

Cтруктура MySQL трехуровневая: базы данных - таблицы - записи. Базы данных и таблицы MySQL физически представляются файлами с расширениями frm, MYD, MYI. Логически - таблица представляет собой совокупность записей. А записи - это совокупность полей разного типа. Имя базы данных MySQL уникально в пределах системы, а таблицы - в пределах базы данных, поля - в пределах таблицы. Один сервер MySQL может поддерживать сразу несколько баз данных, доступ к которым может разграничиваться логином и паролем. Зная эти логин и пароль, можно работать с конкретной базой данных. Например, можно создать или удалить в ней таблицу, добавить записи и т. д. Обычно имя-идентификатор и пароль назначаются хостинг провайдерами, которые и обеспечивают поддержку MySQL для своих пользователей.

Скорее всего, вы уже слышали название MySQL – если вы создавали или поддерживали веб-сайты, или администрировали сервера под управлением Linux, или разрабатываете разное корпоративное ПО. Но если даже вы пока не знакомы с этим чрезвычайно мощным и удобным продуктом – не беда, далее мы расскажем все тонкости применения и работы с MySQL.
Итак, MySQL – это реляционная база данных (СУБД, система управления базами данных), распространяемая под лицензией OpenSource GPL (точнее – под двойной лицензией, для OpenSource программ она бесплатна, для коммерческого применения платная).

Давайте сперва на секунду отвлечемся и посмотрим, какие еще СУБД есть на рынке, ведь большинство крупных софтверных компаний имеет в своем арсенале базу данных. Наверное, первой, с которой вы познакомились, являлась Microsoft Access. Это типичный представитель "легких" баз данных, отлично подходящий для использования дома, для учета личных коллекций или на небольшом предприятии для автоматизации рутинной работы. Для более серьезных применений есть ее "старший брат" — Microsoft SQL Server – ему уже доступно практически все. С легкостью обрабатывая в считанные секунды базы данных объемом в сотни тысяч и миллионы строк (в таблицах могут быть сохранены разные данные, это значит, что каждый столбец таблицы может содержать произвольные данные – от простого номера до огромных текстовых массивов в единицы и десятки Мб). Еще к таким "тяжеловесам" относятся СУБД компании IBM – DB2 и Oracle одноименной компании. Поскольку практически все языки программирования, применяемые для создания веб-приложений, имеют встроенную поддержку этих баз, напрямую или через ODBC, то на основе таких "промышленных" СУБД в основном строятся корпоративные порталы и веб-сервисы, для которых критична нагрузка и требуется способность работать с большими объемами данных. К примеру, язык PHP может работать с Sybase, PostgreSQL, MS SQL Server, Oracle, Informix, InterBase, Ingres, а также с любыми другими базами через интерфейс ODBC.

MySQL не одинока на рынке…

Еще есть класс "средних" СУБД – как по цене, так и возможностями они отличаются от описанных выше. Это например, Borland Interbase, MS Access, PostgreSQL и особый предмет нашего разговора – MySQL. Эти базы довольно простые для обучения и программирования, дешевы или вовсе бесплатные и отлично подходят для создания различных приложений (как традиционных, так и веб) приложений, где не требуется космическая надежность и устойчивость.

Но по ряду параметров лучшая!

Почему мы рассказываем вам именно о MySQL? Потому что она бесплатная (GPL OpenSource)? Не только. Потому что это очень небольшая по размерам СУБД (всего 25 — 30 Мб дистрибутива, в отличии от целого CD MS SQL Server или сотни полторы Мб MS Access)? Тоже нет. Потому что она очень быстрая (особенно на операциях чтения, когда дынные считываются с таблиц и выводятся в ответ на запрос клиента – именно поэтому БД стала популярна в среде Интернета, где важна именно скорость чтения)? И это не самое главное. А может потому, что это очень динамично развивающийся продукт, результат работы сотен людей так называемой "виртуальной" компании MySQL AB (виртуальная она потому, что сотрудники не сидят в одном офисе, а раскиданы по всему свету и постоянно связаны только через сеть Интернет)? Да, и это тоже, но не только. Если честно, я сам не возьмусь сказать, что привлекло меня именно в MySQL – просто однажды я попробовал поработать с ней и понял, что отныне все мои проекты любого масштаба будут использовать только эту СУБД – MySQL!

Существует несколько параллельных веток разработки

Теперь, определившись с базой, можно загрузить с сайта www.mysql.com нужную нам версию СУБД. Тут надо остановиться и прояснить ситуацию с версиями. Сейчас существуют параллельно несколько версий MySQL:

  • стабильная – MySQL 3.23.xx (а теперь еще и ветка 4.1.хх). Эта версия протестирована многими и успешно работает на тысячах серверов, она рекомендована для применения в любых проектах;
  • бета – версия в разработке, рекомендована только для изучения и ознакомления с новыми функциями. Ранее все версии MySQL 4.xx.xx имели статус беты.
  • гамма – это следующая ступень после беты, означает, что СУБД проработала больше месяца без существенных (критических) сбоев. Ее можно, в принципе, смело применять, но разработчики предупреждают, что эта версия еще тестируется, и они не гарантируют, что она совершенна.
  • альфа – это только для истинных фанатов и разработчиков. Сейчас это MySQL 5.0.x. В альфа-версиях еще много ошибок, но уже можно пробовать и исследовать функции и возможности, которые появятся в следующих версиях.

Не знаю, как вы, я но сразу скачал себе версию 5.0.0 (еще альфа). За почти год экспериментов альфа-версия ни разу не подвела – все работает как часы. Может, разработчики излишне перестраховываются, но главное — что они очень хорошо работают, поэтому для ознакомления и работы можно использовать как бета-верии (ветка 5.х), так и недавно выпущенные версии MySQL 4.1.х. Для особо требовательных вариантов применения можно использовать давно проверенные и стабильные версии 3.23.х, если не требуются какие-то особые функции.

Сразу же советую скачать дополнительную программу для облегчения работы с базой – MySQL Administrator. Об этой утилите и других програмах, позволяющих существенно упростить работу с базой, мы уже писали – " ".

Инсталляция MySQL не сложнее любой другой программы

Инсталляция MySQL очень проста, практически все сводится к нажиманию кнопки "Далее". По умолчанию программа устанавливается в директорию "c:\mysql", хотя вы можете свободно изменить этот путь как в процессе установки, так и в любой момент просто скопировав всю дерикторию в другой каталог или диск. В общих чертах MySQL состоит из нескольких программ (они размещены в виде отдельных exe-файлов в каталоге "c:\maysql\bin", которые работают вместе. Подробнее о назначении каталогов и файлов в дистрибутиве MySQL говорится в статье « ».

Сам сервер СУБД MySQL функционирует как отдельная программа. Непосредственно к нему вы не можете обратиться – для этого существуют специальные программы. Одной из них является терминал mysql – он принимает команды от пользователя и соеденившись с сервером MySQL (который может быть как на другом компьютере в локальной сети, так и на сервере в Интернет-е, или же на том же компьютере — это не имеет значения, для вас как пользователя это совершенно прозрачно) отправляет их на исполнение, обратно принимая результат (например, выбранные данные из базы, или ответ сервера о успешном завершении указанной операции или сообщение об ошибке). Другие программы могут сами взаимодействовать с сервером напрямую, командный терминал нужен лишь для общения пользователя с сервером.

Кстати, сервер MySQL почти сразу показывает свое "не-Windows" происхождение – простого клика по исполняемому файлу mysqld-nt.exe недостаточно для запуска. Проще всего сначала запустить какую-либо графическую утилиту – MySQL Manager или MySQL Administrator и уже потом запускать или останавливать сервер. Дело в том, что для запуска/остановки сервера надо указать много разных параметров, и их запоминание и набор каждый раз из командной строки неудобен. Раньше, когда не было утилит, надо было создавать ярлыки и присваивать им команды. Теперь управлять сервером стало гораздо проще. Но все же знание команд и опций для запуска сервера очень полезно – самые важные из команд описанны в статье " "

Вот теперь мы подошли к раздорожью. Поясню – в принципе, все пользователи СУБД (не только MySQL, но и любой другой) делятся на две категории:

  • разработчики приложений, которые используют СУБД для хранения и управления данными;
  • администраторы, которые настраивают и поддерживают работу сервера СУБД.

Для каждой из этих групп пользователей есть свои программы, каждая группа видит сервер MySQL в своем ракурсе и им нужны разные сведенья для работы. Конечно, разработчик прикладной программы должен ориентироваться в управлении сервером, но совсем не обязательно влезать в тонкости оптимизации или управления пользователями – для этого есть администраторы БД, которые в свою очередь практически не вмешиваются в структуры таблиц, создаваемыми разработчиком, а только настраивают параметры сервера и следят за его работой.

Давайте попробуем кратко взглянуть на MySQL с позиции среднего пользователя, немного администратора и немного разработчика.

С точки зрения прикладного разработчика, работа с сервером MySQL заключается в том, что он подключается к серверу, открывает соединение с указанной базой и работает с таблицами в этой базе данных. Для работы ему необходимо знать параметры соединения с сервером (если сервер на том же компьютере, то это: host: localhost, port: 3306; login/password получается у администратора, по умолчанию это root с пустым паролем) и имя базы данных. Далее все взаимодействие с таблицами происходит через ввод и исполнение SQL-запросов и обработкой возвращенных результатов.

Обычный пользователь с этой служебной базой практически не имеет дела, он может работать только со своей базой, а для администратора наоборот – это практически повседневный рабочий инструмент.

Теперь MySQL поддерживает кластеризацию

Что объединяет всех пользователей, работающих с СУБД (снова таки, не обязательно с MySQL) – это то, что основным языком общения с сервером является SQL – структурированный язык запросов. Существует несколько версий этого языка, MySQL пока поддерживает синтаксис ANSI SQL 92 с некоторыми ограничениями. Да, следует признать, что в СУБД MySQL пока не поддерживаются некоторые функции и возможности, которые определены в стандартах SQL или присутствуют в других СУБД (в том же Oracle или MS SQL Server). Но для этого есть причины – одни функции нужны только при разработке высокоустойчивых кластеров, другие существенно влияют на скорость или ресурсоемкость (разработчики MySQL всегда делали ставку на скорость работы, поэтому часто прямо говорили, что та или иная функция не включена, поскольку влияет на скорость). Поскольку долгое время, да и сейчас, одной из основных сфер применения MySQL является веб-разработка и поддержание динамических веб-сайтов, то такая позиция была оправданна и выгодная. Но, следуя общей тенденции, разработчики потихоньку сближают возможности "тяжелых" СУБД и MySQL – уже версия 5.0 (а начальная поддержка кластеризации внедрена уже в текущую версию 4.1), которая пока в стадии разработки, позволяет строить очень мощные отказоустойчивые сервера, а пакет MySQL Cluster позволит создавать сервера СУБД с надежностью 99,999% (время простоя 5 минут/год), что сразу же выводит MySQL на рынок серьезных корпоративных решений.

Отдельные решения из "тяжелых СУБД" после длительного тестирования попадают и в стабильные версии. Например, поддержка транзакций. Транзакция – это несколько последовательных запросов к БД, которые выполняются или все вместе, или не выполняются вообще. Если первый запрос вставляет данные в одну таблицу, второй в другую, а третий считывает все эти данные и обрабатывает их, то при использовании транзакций никогда не будет такой ситуации, когда данные в первую таблицу уже вставлены, а во вторую еще нет, а операция считывания уже исполняется и дает ложный результат. Если происходит ошибка на какой-либо отдельной операции в транзакции, то делается "откат", и данные остаются такими же, как и до исполнения транзакции. Но если вы используете сервер СУБД в режиме "по-умолчанию", вы даже не заметите новых функций – это существенно при переносе ПО и баз из предыдущих версий СУБД. Если вам действительно нужно использовать новые возможности – это делается вручную, через команды SQL или опции сервера. Например, поддержка транзакций введена через новый формат таблиц – InnoDB. По умолчанию используется привычный формат MyISAM, который универсальный для всех версий сервера (и платформ), а если надо получить доступ к новым возможностям – пожалуйста, это делается заданием опций при создании таблицы (в операторе CREATE TABLE после описания полей новой таблицы пишется предложение TYPE=). Такой способ введение новшеств очень удобен – сохраняется обратная совместимость, а новые возможности применяются только тогда, когда они действительно нужны.

Любой тип данных займет свое место в СУБД MySQL

Еще надо сказать о типах данных, которые поддерживает MySQL. Именно от этого зависит, какие данные сможет разработчик сохранять в базе. Конечно, присутствуют числовые данные – как целые числа (TINYINT, MEDIUMINT, INT, BIGINT), так и вещественные – (FLOAT, DOUBLE, DECIMAL). Для хранения строк применяются или типы CHAR и VARCHAR, длиной до 255 символов, или TEXT, MEDIMTEXT, LONGTEXT для хранения произвольных текстовых массивов. Для хранения двоичных данных используют те же типы – BLOB, MEDIUMBLOB, LONGBLOB – разница между ними в чувствительности к регистру символов и возможности полнотекстового поиска (он поддерживается для типов TEXT и производных). Для хранения даты и времени есть типы DATE, TIME, DATETIME, TIMESTAMP и YEAR. Для перечисляемых типов, значения которых заданы заранее, есть два варианта – SET и ENUM. Комбинируя в таблице поля указанных типов, а при необходимости применяя еще программную обработку данных можно сохранять и управлять практически любыми данными.

Вы все еще сомневаетесь, стоит ли применять СУБД MySQL в своих разработках? Смею заверить, она отлично справится с работой в качестве корпоративного сервера. Или вы считаете, что MySQL не выдержит нагрузки и для вашего приложения лучше купить более "тяжелую" СУБД типа MS SQL Server или Oracle? Попробуем вас переубедить.

MySQL поддерживает таблицы до 512 Гб и до 60 тыс. таблиц в базе

MySQL реально поддерживает работу с большими базами данных. К примеру, размер таблицы может достигать 512 Гб (именно, Гигабайт). Конкретный размер таблицы определяется операционной системой, под управлением которой запущен сервер (таблица представлена одним файлом, поэтому ее максимальный размер ограничен возможностями файловой системы и ОС). Для платформы Intel (32-х разрядной) + Linux/Windows размер таблицы может достигать 4 Гб и более, а указанные 512 Гб можно получить, используя Sun Solaris на платформе UltraSPARC. Впечатляет? Отдельные клиенты MySQL AB рассказывали, что работают с базами данных, содержащими до 60 000 таблиц (!) в одной базе и до 5 миллиардов записей в таблице (!!). А теперь поддержка MySQL Cluster позволит поднять этот показатель еще выше. Более того, даже если ваша ОС или файловая система не поддерживает большие файлы, можно использовать данные, разнесенные на две и больше таблиц в режиме одной – несколько таблиц (физически размещенные в нескольких файлах) будут на уровне базы данных (в SQL-запросах) обрабатываться и отображаться как одна большая таблица.

Даже на старых ПК MySQL отлично работает

Я один раз из чистого любопытства сделал тест на своем компьютере (конфигурация: Intel Celeron 400, 320 RAM, Win2000 Pro Sp4, MySQL 4.01, сервер mysqld-nt-max.exe) – простенький скрипт обрабатывал данные в одной таблице – вставлял, потом сортировал, по нескольким критериям выбирал и переносил в другую таблицу, а потом удалял из исходной. И так в цикле. По статистике, у меня получилось обрабатывать до 285 запросов в секунду, при этом на компьютере можно было более-менее нормально параллельно работать в MS Office.

Вопрос хранения информации с появлением баз данных преобразился, с появлением облачных идей видоизменился, но в конечном итоге разработчик имеет в своем распоряжении полнофункциональную базу и хранит информацию так, как ему кажется правильным, или так, как того требует проект.

MySQL имеет заслуженную репутацию. Это простая, эффективная и надежная система управления информацией, использующая традиционный язык SQL. В умелых руках MySQL - это реляционные идеи хранения и обработки информации в максимально широком спектре услуг, которые исторически сложились. Они отражают практическую целесообразность и представляют собой функциональность современной базы данных.

Рейтинг и место MySQL

Базы данных - востребованный набор инструментов для представления, хранения и обработки информации. Однако, вариантов реализации таких инструментов, то есть моделей и логики реляционных отношений между данными, всегда было много.

MySQL - не единственный вариант для эффективного представления данных и их использования, но в последние несколько лет MySQL - это наиболее часто используемое инструментальное средство.

Если говорить о применении систем управления сайтами, которые в последнее время очень востребованы программистами, то большинство из них основано на использовании именно MySQL. Часто выбрать другую базу просто невозможно.

Если речь идет о ручной разработке веб-ресурса, то проще и надежнее варианта MySQL найти сложно, хотя в таком (ручном) контексте всегда можно выбрать любую базу данных.

В большинстве случаев объективная закономерность выводит разработчика именно на PHP/MySQL. Эта пара стала де-факто лучшей в программировании сайтов и иных ресурсов для локальных и распределенных сетей обработки информации.

Подключение базы данных

Нет ничего проще, чем присоединиться к базе данных.

Здесь на локальном хосте «localhost» находится база «sci_exchange_base» к которой происходит подключение пользователя «sci_iN_WMiX» с паролем «POi17DO». После успешного подключения база данных становится доступной для работы или создается «по новой» функцией scCreateTables().

Такая логика, «если ничего нет или есть проблема: создать все вновь в исходном виде» делает любой код любого ресурса безопасным. Нет ничего проще, чем создать вновь, а не разбирать завалы проблем, создаваемых многочисленными посетителями ресурса, ошибками линий связи и технических средств:

  • подключение к MySQL это - просто;
  • работа с таблицами и данными проста;
  • нет ничего проще, чем обеспечить протоколирование любого действия любого посетителя;
  • создать распределенный поток процессов обработки информации, который адекватно и безопасно будет обеспечивать сохранность всех актуальных данных.

Использование базы данных

Практически любая операция с данными в PHP/MySQL - Результат запроса - данные или изменение содержимого базы данных. Сама по себе MySQL - это инструментальное средство, которое использует свой функционал для исполнения своей функциональности.

Иначе говоря, управление базой, пользователи и другие административные возможности лежат и доступны в пределах ее таблиц и запросов MySQL query.

В подавляющем большинстве случаев разработчики придерживаются сложившегося опыта использования баз данных вообще. В частности, за основу берется стандартная конструкция запроса MySQL query, потом на PHP в коде анализируется результат.

В этом примере (1) - формирование строки запроса, (2) - исполнение запроса. Это обычное применение базы данных, описанное в MySQL manual, сложившееся на практике.

Здесь на вход функции передаются три параметра:

  • список полей таблицы;
  • имя таблицы;
  • условия выборки.

В результате MySQL query делается выборка данных, которые записываются в строку данных и возвращаются в качестве результата работы функции.

Независимое использование MySQL

Функция iLineSel() - метод объекта доступа к базе. Здесь не принципиально использование объектов для доступа к информации, но принципиально разделение функционала на тот, который зависим от самой базы данных, и тот, который зависим от кода ресурса.

В подавляющем большинстве случаев MySQL - это четыре основных процедуры:

  • вставка;
  • удаление;
  • изменение;
  • выборка.

Представив эти четыре действия четырьмя функциями, можно «абстрагироваться» от формирования запросов query в виде MySQL строки.

Функции iLineSel(), iLineIns(), iLineDel(), iLineUpd() используются в коде и требуют указания имен таблиц, имен полей, условий и значений. Это удобно для кода ресурса. Внутри функций используются строки query и конструкции для доступа к базе данных.

Совместимость и эффективность

При таком подходе разработчик получает возможность использовать в своей работе набор конкретных функций базы данных в собственном представлении. Это упрощает его работу с другими разработчиками, делает его код более читабельным и исключает проблемы в случаях, когда меняется синтаксис или логика использования PHP или MySQL, а последнее часто очень важно.

Несовместимость версий - для современных инструментальных средств - норма вещей, причем характерно, то что в отличие от прошлых времен, когда требование совместимости было естественным, теперь стал важен аспект функциональности и эффективности, а совместимость ушла на задний план.

Функциональная динамика

Опыт использования баз столь велик, что многие концептуальные вещи стали слишком привычными. Но пример того, как объективно и естественно ушла на задний план концепция совместимости, позволяет заметить: далеко не все таблицы базы данных «прямоугольные» и совершенно не все отношения в базе данных - «реляционные».

По большому счету, появление в базах данных полей переменной длины само по себе сообщает, что далеко не всё укладывается в привычные рамки. Не каждая таблица имеет заголовки, не все строки обязаны иметь все поля, предусмотренные структурой таблицы. Да и таблица может иметь данные, обуславливающие её структуру, но не наоборот.

Последнее все чаще представляется нормальным и естественным. Широко применяемое в контексте баз данных, особенно в связке PHP/MySQL, позволяет создавать системы объектов, которые сами себя записывают в базу данных. Но поскольку эти объекты не обязательно всегда такие, какие были в момент создания, то и таблицы базы данных могут динамично меняться, когда хранят динамичные объекты.

В самом простом случае современная таблица - это строка или система строк, длина здесь не имеет значения, ее вполне можно эмулировать на уровне таблиц базы данных. А вот использование объектов позволяет эмулировать нужные свойства данных и абстрагироваться от жесткой структуры, реляционных идей, таблиц и привычного строгого синтаксиса работы с данными.

Которая ранее приобрела шведскую компанию MySQL AB . Продукт распространяется как под GNU General Public License , так и под собственной коммерческой лицензией. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации .

MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP , AppServ , LAMP и в портативные сборки серверов Денвер , XAMPP . Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM , поддерживающие полнотекстовый поиск, так и таблицы InnoDB , поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

Сообществом разработчиков MySQL созданы различные ответвления кода, такие как Drizzle (англ. ), OurDelta, Percona Server, и MariaDB . Все эти ответвления уже существовали на момент поглощения компании Sun корпорацией Oracle.

О происхождении MySQL

MySQL возникла как попытка применить mSQL к собственным разработкам компании: таблицам, для которых использовались ISAM - подпрограммы низкого уровня. В результате был выработан новый SQL -интерфейс, но API -интерфейс остался в наследство от mSQL. Откуда происходит название «MySQL» - доподлинно неизвестно. Разработчики дают два варианта: либо потому, что практически все наработки компании начинались с префикса My , либо в честь девочки по имени My , дочери Майкла Монти Видениуса , одного из разработчиков системы .

Логотип MySQL в виде дельфина носит имя «Sakila». Он был выбран из большого списка предложенных пользователями «имён дельфина». Имя «Sakila» было отправлено -разработчиком Ambrose Twebaze.

Лицензирование

MySQL имеет двойное лицензирование. MySQL может распространяться в соответствии с условиями лицензии GPL . Однако по условиям GPL, если какая-либо программа включает исходные коды MySQL, то она тоже должна распространяться по лицензии GPL. Это может расходиться с планами разработчиков, не желающих открывать исходные тексты своих программ. Для таких случаев предусмотрена коммерческая лицензия, которая также обеспечивает качественную сервисную поддержку.

Платформы

MySQL портирована на большое количество платформ: AIX , BSDi , FreeBSD , HP-UX , Linux , Mac OS X , NetBSD , OpenBSD , OS/2 Warp, SGI IRIX , Solaris , SunOS , SCO OpenServer, SCO UnixWare, Tru64 , Windows 95 , Windows 98 , Windows NT , Windows 2000 , Windows XP , Windows Server 2003 , WinCE, Windows Vista и Windows 7 . Существует также порт MySQL к OpenVMS . Важно отметить, что на официальном сайте СУБД для свободной загрузки предоставляются не только исходные коды, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули СУБД MySQL.

Языки программирования

История выпусков

MySQL 4.0

Несмотря на то, что версия 4.0 является устаревшей, она всё ещё имеет значительное распространение. Основные возможности этой версии:

  • практически полная реализация ANSI SQL-99, плюс расширения;
  • межплатформенная совместимость;
  • независимые типы таблиц (MyISAM для быстрого чтения, InnoDB для транзакций и ссылочной целостности);
  • поддержка SSL ;
  • кэширование запросов;
  • репликация : один головной сервер на одного подчинённого, много подчинённых на одного головного;
  • полнотекстовая индексация и поиск с использованием типа таблиц MyISAM;
  • внедрённая библиотека базы данных;
  • поддержка Юникода (UTF-8);
  • таблицы InnoDB , обеспечивающие соответствие требованиям ACID ;
  • встроенный сервер, позволяющий включать MySQL в автономные приложения.

MySQL 4.1

  • вложенные запросы и производные таблицы.
  • новая система кодировок и сортировок;
  • более быстрый и гибкий протокол клиент-сервер с поддержкой подготовленных запросов, обеспечивающий их оптимальное исполнение;
  • новая программа установки и настройки для Microsoft Windows и Linux ;
  • защищённые через OpenSSL соединения клиент-сервер;
  • высоко-оптимизированная библиотека, которая может быть использована в сторонних программах;
  • полноценная поддержка Юникода (UTF-8 и UCS2);
  • стандартные пространственные типы данных GIS , для хранения географической информации;
  • улучшенный полнотекстовый поиск и система помощи.

MySQL 5.0

Версия MySQL 5.0 вышла 24 октября 2005 года, в этой версии значительно расширена функциональность, которая ставит MySQL в один ряд с коммерческими СУБД . Если раньше СУБД MySQL обвиняли в недостаточной поддержке стандарта SQL , то с появлением пятой версии этой популярной базы данных, появилась практически полная поддержка стандарта SQL. MySQL 5.0 содержит следующие нововведения:

  • хранимые процедуры и функции;
  • обработчики ошибок;
  • информационная схема (так называемый системный словарь, содержащий метаданные).

MySQL 5.1

Версия MySQL 5.1 продолжает путь к стандарту SQL:2003 . MySQL 5.1 содержит следующие нововведения.

  • Сегментирование - возможность разбить одну большую таблицу на несколько частей, размещенных в разных файловых системах, основываясь на определенной пользователем функции. При определенных условиях это может дать серьёзное увеличение производительности и, кроме того, облегчает масштабирование таблиц.
  • Изменено поведение ряда операторов, для обеспечения большей совместимости со стандартом SQL2003.
  • Построчная репликация (англ. row-based replication ), при которой в бинарный лог будет записываться только информация о реально измененных строках таблицы вместо оригинального (и, возможно, медленного) текста запроса. Построчную репликацию можно использовать только для определенных типов sql-запросов, в терминах MySQL - смешанная репликация (англ. mixed replication ).
  • Встроенный планировщик периодически запускаемых работ. По синтаксису добавление задачи похоже на добавление триггера к таблице, по идеологии - на crontab .
  • Дополнительный набор функций для обработки XML , реализация поддержки XPath .
  • Новые средства диагностики проблем и утилиты для анализа производительности. Расширены возможности по управлению содержимым лог-файлов, логи теперь могут быть сохранены и в таблицах general_log и slow_log. Утилита mysqlslap позволяет провести нагрузочное тестирование БД с записью времени реакции на каждый запрос.
  • Для упрощения операции обновления подготовлена утилита mysql_upgrade, которая выполнит проверку всех существующих таблиц на предмет совместимости с новой версией, и при необходимости выполнит надлежащие корректировки.
  • MySQL Cluster отныне выпущен как отдельный продукт, базирующийся на MySQL 5.1 и хранилище NDBCLUSTER.
  • Значительные изменения в работе MySQL Cluster, такие, как, например, возможность хранения табличных данных на диске.
  • Возврат к использованию встроенной библиотеки libmysqld, отсутствовавшей в MySQL 5.0.
  • API для плагинов, которое позволяет загружать сторонние модули, расширяющие функциональность (например, полнотекстовый поиск), без перезапуска сервера.
  • Реализация парсера полнотекстового поиска в виде plug-in.
  • Новый тип таблиц Maria (устойчивый к сбоям клон MyISAM).

Тип таблиц Maria

Maria (начиная с версии 5.2.x - Aria) - расширенная версия хранилища MyISAM , с добавлением средств сохранения целостности данных после краха.

  • В случае краха производится откат результатов выполнения текущей операции или возврат в состояние до команды LOCK TABLES. Реализация через ведение лога операций.
  • Возможность восстановления состояния из любой точки в журнале операций, включая поддержку CREATE/DROP/RENAME/TRUNCATE. Может быть использовано для создания инкрементальных резервных копий, через периодическое копирование журнала операций.
  • Поддержка всех форматов столбцов MyISAM, расширена новым форматом «rows-in-block», использующим страничный способ хранения данных, при котором данные в столбцах могут кэшироваться.
  • В будущем будет реализовано два режима: транзакционный и без отражения в журнале транзакций, для некритичных данных.
  • Размер страницы данных равен 8Кб (в MyISAM 1Кб), что позволяет достичь более высокой производительности для индексов по полям фиксированного размера, но медленнее в случае индексирования ключей переменной длины.

MySQL 5.5

Ветка MySQL 5.5 базируется на невыпущенной серии MySQL 5.4 и содержит ряд значительных улучшений, связанных с повышением масштабируемости и производительности, среди которых:

  • Использование по умолчанию движка InnoDB.
  • Поддержка полусинхронного (semi-synchronous) механизма репликации, основанного на патчах к InnoDB от компании Google.
  • Улучшение функций по секционированию данных. Расширенный синтаксис для разбиения больших таблиц на несколько частей, размещенных в файловых системах (partitioning). Добавлены операции RANGE, LIST и метод оптимизации «partition pruning».
  • Новый механизм оптимизации вложенных запросов и JOIN-операций.
  • Переработана система внутренних блокировок.
  • Интегрированы патчи Google с оптимизацией работы InnoDB на процессорах с большим количеством ядер.

MySQL 6.0

Версия MySQL 6.0 была заморожена на стадии альфа-тестирования. Первоначально было принято решение о создании версии 5.2, вскоре эта версия была переименована в 6.0. Однако, позже информация о MySQL 6.0 исчезла с сайта, а разработчики сосредоточились на версии 5.5 и следующей за ней версии 5.6.

Одним из основных нововведений версии 6.0 планировался новый тип таблиц Falcon, разработанный в качестве потенциальной замены для InnoDB компании Innobase , приобретённой компанией Oracle . В связи с приобретением в 2010 году Sun Microsystems тем же Oracle , судьба Falcon остаётся под вопросом.

Технические характеристики

Максимальные размеры таблиц

Максимальный размер таблиц в MySQL 3.22 до 4 ГБ, в последующих версиях максимальный размер до 8 млн ТБ (2 63 байт).

Размер таблицы ограничен её типом. В общем случае тип MyISAM ограничен предельным размером файла в файловой системе операционной системы . Например в NTFS этот размер теоретически может быть до 32 эксабайт . В случае InnoDB одна таблица может храниться в нескольких файлах, представляющих единое табличное пространство . Размер последнего может достигать 64 терабайт .

В отличие от MyISAM в InnoDB имеется значительное ограничение на количество столбцов, которое можно добавить в одну таблицу. Размер страницы памяти по умолчанию составляет 16 килобайт, из которых под данные отведено 8123 байта. Размер указателя на динамические поля составляет 20 байт. Таким образом, в случае использования динамического формата строки (ROW_FORMAT=DYNAMIC), одна таблица может вместить максимум 409 столбцов типа blob или text.

Локализация

Начиная с версии 4.1 в СУБД MySQL внедрена новая система кодировок и сортировок. При использовании кодировки Windows-1251, перед выполнением SQL-инструкций необходимо настроить кодировку соединения при помощи операторов:

SET character_set_client= "cp1251" ; SET character_set_results= "cp1251" ; SET character_set_connection= "cp1251" ;

Эти три оператора эквивалентны вызову одного оператора:

SET NAMES "cp1251"

Переменная character_set_client устанавливает кодировку данных отправляемых от клиента, переменная character_set_results устанавливает кодировку данных отправляемых клиенту, переменная character_set_connection устанавливает кодировку, в которую преобразуется информация пришедшая от клиента, перед выполнением запроса на сервере.

При использовании Юникода UTF-8 этот оператор выглядит следующим образом:

SET NAMES "utf8"

Кодировка ISO 8859-5 не поддерживается.

Примечания

См. также

Ссылки

  • mysql.com - официальный сайт MySQL (англ.)
  • Документация на сайте разработчиков MySQL (англ.)

Литература

  • В. Васвани. MySQL: использование и администрирование = MySQL Database Usage & Administration. - М .: «Питер» , 2011. - 368 с. - ISBN 978-5-459-00264-5
  • Стив Суэринг, Тим Конверс, Джойс Парк. PHP и MySQL. Библия программиста, 2-е издание = PHP 6 and MySQL 6 Bible. - М .: «Диалектика», 2010. - 912 с. - ISBN 978-5-8459-1640-2
  • Роберт Шелдон, Джоффрей Мойе. MySQL 5: базовый курс = Beginning MySQL. - М .: «Диалектика», 2007. - 880 с. - ISBN 978-5-8459-1167-4
  • MySQL на примерах. - Спб.: «БХВ-Петербург», 2008. - С. 952. - ISBN 978-5-9775-0066-1
  • Поль Дюбуа. MySQL, 3-е издание = MySQL, 3ed. - М .: «Вильямс», 2006. - 1168 с. - ISBN 5-8459-1119-2
  • Кузнецов Максим, Симдянов Игорь. MySQL 5. В подлиннике. - Спб.: «БХВ-Петербург», 2006. - С. 1024. - ISBN 5-94157-928-4
  • Кузнецов Максим, Симдянов Игорь. Самоучитель MySQL 5. - Спб.: «БХВ-Петербург», 2006. - С. 560. - ISBN 5-94157-754-0