Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
123.docx
Скачиваний:
12
Добавлен:
20.02.2016
Размер:
638.04 Кб
Скачать

2 Анализ функциональных возможностей MySql

2.1 История развития

Достаточно часто встречается вопрос: "Какая разница между SQL и MySQL?"

SQL - это язык запросов для управления СУБД. А MySQL - это одна из таких СУБД. В частности, помимо MySQL существуют и другие СУБД: Oracle, MS SQL Server, PostgreSQL и много других. И чтобы работать с любой из этих СУБД необходим язык запросов, и таким языком и является SQL.

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

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

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

26 февраля 2008 года Sun MicrosystemsприобрелаMySQL ABза$1 млрд, 27 января 2010 годаOracleприобрелаSun Microsystemsи включила MySQL в свою линейку СУБД.

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

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

Рисунок 3 – Логотип MySQL

Примечание – Источник: [http://ru.wikipedia.org/wiki/MySQL].

Теперь о том, зачем нужен MySQL:

  1. Для создания базы данных.

  2. Для управления базой данных.

  3. Для выборки записей из базы данных.

MySQL - одна из самых популярных СУБД в современных интернет-технологиях. Web-мастера даже придумали альтернативное название MySQL – «мускул».

В конце 1970-х годов будущий создатель СУБД MySQL Монти Видениус (Monty Widenius) работал в шведской компании ТсХ, занимающейся информационными технологиями и предоставлением консультаций в области обработки данных. Работая в компании ТсХ, Монти разработал программу формирования терминальных интерфейсов UNIREG, предназначенную для непосредственного подключения к хранилищам данных в формате ISAM. В течение следующих 15 лет программное обеспечение UNIREG успешно эксплуатировалось в компании, приспосабливаясь ко все более крупным наборам данных благодаря использованию сложных преобразований и расширений.

С 1994 года компания ТсХ приступила к работе над приложениями, предназначенными для обработки данных, поступающих через Web. С этого времени в программном обеспечении UNIREG стали обнаруживаться недостатки, в основном обусловленные большими издержками в работе данного приложения. Это вынудило Монти и его коллег приступить к поиску других инструментальных средств. Наибольшее внимание этих специалистов привлекло простое и быстродействующее приложение Hughes mSQL, предназначенное для поддержки баз данных, которое было разработано Дэвидом Хьюсом (David Hughes). Программа mSQL обладала такими явными преимуществами, как невысокая стоимость и определенная известность на рынке. Кроме того, для этого серверного программного обеспечения был предусмотрен довольно хорошо разработанный клиентский API-интерфейс. Но в ряде версий 1.0 программы mSQL отсутствовала возможность индексации, а это средство крайне необходимо для повышения производительности работы с большими хранилищами данных. Средства поддержки индексации появились в ряде версий 2.0 программы mSQL 2.0, но данная конкретная применяемая реализация не была совместимой с возможностями программы UNIREG, основанной на использовании индексов типа В+. Именно с этого момента началась разработка проекта MySQL, по крайней мере концептуальная. И сам Монти, и другие специалисты компании ТсХ решили воспользоваться значительными наработками, созданными в рамках проекта UNIREG, и вместе с тем разработать новый API-интерфейс, в основном аналогичный используемому в программе mSQL, если не считать того, что в нем должна была применяться более эффективная схема индексации из программы UNIREG. К началу 1995 года в компании ТсХ была готова версия 1.0 этого нового программного продукта. Разработчики присвоили новому программному продукту имя MySQL и выпустили его позже в том же году, применив сочетание схем лицензирования с открытым исходным кодом и коммерческого лицензирования, позволившего продолжить разработку программного продукта и в то же время обеспечить приток прибылей для компании MySQL АВ, в которую была преобразована компания ТсХ.

В течение последних десяти лет СУБД MySQL действительно прошла большой путь развития, превратившись в программный продукт мирового класса. В наши дни MySQL успешно конкурирует даже с такими наиболее полнофункциональными коммерческими приложениями, предназначенными для поддержки баз данных, как Oracle и Informix. А в ряде версий 4.x, кроме прочих дополнений, были включены такие долгожданные средства, как транзакции и поддержка внешних ключей. Благодаря всему этому СУБД MySQL превратилась в программное обеспечение баз данных с открытым исходным кодом, наиболее широко применяемое во всем мире – число загрузок её дистрибутива составляет более 50 тыс. в день.

Основные положительные стороны MySQL:

  • Многопоточность. Поддержка нескольких одновременных запросов.

  • Оптимизация связей с присоединением многих данных за один проход.

  • Записи фиксированной и переменной длины.

  • ODBC драйвер в комплекте с исходником

  • Гибкая система привилегий и паролей.

  • До 16 ключей в таблице. Каждый ключ может иметь до 15 полей.

  • Поддержка ключевых полей и специальных полей в операторе .

  • Поддержка чисел длинной от 1 до 4 байт (ints, float, double, fixed), строк переменной длины и меток времени.

  • Интерфейс с языками C и perl.

  • Основанная на потоках, быстрая система памяти.

  • Утилита проверки и ремонта таблицы (isamchk).

  • Все данные хранятся в формате ISO8859_1.

  • Все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках.

  • Псевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице.

  • Все поля имеют значение по умолчанию. можно использовать на любом подмножестве полей.

  • Легкость управления таблицей, включая добавление и удаление ключей и полей.

В 1998 году была выпущена версия для Windows систем (Windows 95 и NT). В январе 2001 года была выпущена версия 3.23.

Версии 4.0 – 5.5 рассмотрим подробнее.

Версия 4.0 – 2003 год содержит следующие основные нововведения:

  • межплатформенная совместимость;

  • независимые типы таблиц;

  • кэширование запросов;

  • поддержка SSL – протокола, который обеспечивает установление безопасного соединения между клиентом и сервером;

  • внедрённая библиотека базы данных;

  • поддержка Юникода (UTF-8);

  • встроенный сервер, позволяющий включать MySQL в автономные приложения.

Версия 4.1 – 2004 год:

  • новая система кодировок и сортировок;

  • более быстрый и гибкий протокол клиент-сервер с поддержкой подготовленных запросов, обеспечивающих их оптимальное исполнение;

  • новая программа установки для Microsoft Windows и Linux;

  • полноценная поддержка Юникода (UTF-8 и UCS2);

  • улучшенный полнотекстовый поиск и система помощи.

Версия 5.0 – 2005 год: в данной версии значительно расширена функциональность, которая ставит MySQL в один ряд с коммерческими СУБД. Также появилась практически полная поддержка стандарта SQL. Основные нововведения:

  • хранимые процедуры и функции;

  • обработчики ошибок;

  • курсоры - получаемые при выполнении запроса результирующие наборы и связанные с ними указатели текущей записи;

  • представления – виртуальные таблицы, представляющие собой поименованные запросы, которые будут представлены как подзапросы при использовании представления;

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

Версия 5.1 – 2008 год: данная версия продолжает путь к стандарту SQL2003. Нововведения данной версии:

  • новый тип таблиц Maria. Maria представляет собой расширенную версию хранилища MyISAM, с добавлением средств сохранения целостности данных после краха. Основные достоинства Maria:

  • В случае краха производится откат результатов выполнения текущей операции или возврат в состояние до команды LOCK TABLES. Реализация через ведение лога операций.

  • Возможность восстановления состояния из любой точки в логе операций, включая поддержку CREATE/DROP/RENAME/TRUNCATE.

  • Поддержка всех форматов столбцов MyISAM, расширена новым форматом «rows-in-block», использующим страничный способ хранения данных, при котором данные в столбцах могут кэшироваться.

  • В будущем будет реализовано два режима: транзакционный и без отражения в логе транзакций, для не критичных данных.

  • Размер страницы данных равен 8Кб (в MyISAM 1Кб), что позволяет достичь более высокой производительности для индексов по полям фиксированного размера, но медленнее в случае индексирования ключей переменной длины.

  • сегментирование – возможность разбить одну таблицу на несколько частей. Таким образом была существенно увеличена масштабируемость;

  • изменены некоторые операторы (приближение к стандарту SQL2003);

  • построчная репликация – механизм синхронизации нескольких копий объекта;

  • встроенный планировщик периодически запускаемых работ;

  • упрощение операции обновления;

  • новые средства диагностики проблем и утилиты для анализа производительности;

  • API для плагинов, которые позволяют загружать сторонние модули, расширяющие функциональность.

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

  • использование по умолчанию движка InnoDB;

  • поддержка полусинхронного (semi-synchronous) механизма репликации, основанного на патчах к InnoDB от компании Google;

  • улучшение функций по секционированию данных. Расширенный синтаксис для разбиения больших таблиц на несколько частей, размещенных в файловых системах (partitioning). Добавлены операции RANGE, LIST и метод оптимизации «partition pruning»;

  • новый механизм оптимизации вложенных запросов и JOIN-операций;

  • переработана система внутренних блокировок;

  • интегрированы патчи Google с оптимизацией работы InnoDB на процессорах с большим количеством ядер.

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

Последняя на данный момент версия 5.5.28 была выпущена 28 сентяря 2012г.

Устройство MySQL

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

Сервер MySQL постоянно работает на компьютере. Клиентские программы (например, скрипты PHP) посылают серверу MySQL SQL-запросы через механизм сокетов (то есть при помощи сетевых средств), сервер их обрабатывает и запоминает результат. То есть скрипт (клиент) указывает, какую информацио он хочет получить от сервера баз данных. Затем сервер баз данных посылает ответ (результат) клиенту (скрипту).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]