Что такое MySQL и зачем его использовать серверу CS1.6? MySQL - это что такое и где применяется

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

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

Немаловажным фактором является ее бесплатность. MySQL распространяется на условиях общей лицензии GNU (GPL, GNU Public License).

Ранее для долговременного хранения информации мы работали с файлами: помещали в них некоторое количество строчек, а затем извлекали их для последующей работы. Задача длительного хранения информации очень часто встречается в программировании Web-приложений: подсчёт посетителей в счётчике, хранение сообщений в форуме, удалённое управление содержанием информации на сайте и т.д.

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

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

Возможности MySQL

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

Краткий перечень возможностей MySQL:

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

2. Количество строк в таблицах может достигать 50 млн.

3. Быстрое выполнение команд. Возможно MySQL самый быстрый сервер из существующих.

4. Простая и эффективная система безопасности.

Недостатки MySQL

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

В MySQL отсутствуют:

1. Поддержкавложенныхзапросов, типа SELECT * FROM table1 WHERE id IN (SELECT id FROM table2). Утверждается, что такая возможность будет в версии 3.23.

2. Не реализована поддержка транзакций. Взамен предлагается использовать LOCK/UNLOCK TABLE.

3. Нет поддержки внешних (foreign) ключей.

4. Нет поддержки триггеров и хранимых процедур.


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 имеет заслуженную репутацию. Это простая, эффективная и надежная система управления информацией, использующая традиционный язык 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 представляет собой одну из самых распространенных сегодня систем управления базами данных в сети Интернет. Данная система используется для работы с достаточно большими объемами информации. Однако MySQL идеально подходит как для небольших, так и для крупных интернет-проектов. Немаловажной характеристикой системы является ее бесплатность.

Как работают базы данных MySQL?

Когда пользователь пытается открыть страницу сайта (page.php), то перед тем как он увидит сайт, на сервере хостинг-провайдера произойдет следующее:

  1. Выполнится PHP-код из файла page.php
  2. Из базы данных (database.sql) будет считан весь текстовый контент страницы
  3. Из файла стилей (style.css) будут считаны стили (что, где и на каком месте находится, шрифты, размеры и т.д.)
  4. Пользователю будет показана страница которую он хотел увидеть.

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

Основные преимущества MySQL

Надежность, высокая скорость и гибкость - основные качества MySQL . Работа с данной системой не вызывает больших сложностей, а поддержка сервера MySQL автоматически включена в поставку РНР . MySQL предоставляется на условиях общей лицензии GNU (GNU Public License, GPL).

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

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

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

Примечание

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

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

Почему используют MySQL?

MySQL является системой «клиент-сервер»

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

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

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

MySQL-является полностью многопоточной системой

Это означает, что пакет может легко использовать много процессоров, если они есть. На многих серверных системах уже ставят по несколько процессоров. На таких системах MySQL может строго параллельно выполнять сразу несколько запросов к базам данных (по одному на процессоре).

MySQL является пакетом с открытыми исходными текстами

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

MySQL бесплатен в большинстве случаев

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

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

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

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

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

В MySQL принято, что тип данных присваивается столбцу в таблице и распространяется на все ячейки в этом столбце. То есть, если первому столбцу присвоен некий тип (например, char), то это значит, что первое поле любой записи в этой таблице всегда будет иметь именно тип char и никакой иной.

Это очень важно! Большую часть времени вы будете работать со столбцами, поскольку именно они определяют тип данных и структуру таблицы. Строки в таблице не нумеруются, они существуют только для простоты работы с данными. В большинстве случаев количество записей в таблице вас вообще не должно интересовать. Вы работаете с данными, а их структура определена типами и порядком следования столбцов. Количество записей важно только для сервера.

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

Таблица также имеет тип и атрибуты . От этого зависит набор возможностей, доступных при работе с этой таблицей, а также логика ее обработки сервером. Это будет подробно рассмотрено позднее.

Теперь поговорим о данных в полях. Чтобы что-то сделать с какими-то данными, их сначала надо найти. Для этого и используется язык SQL. На нем пишутся запросы, в процессе обработки которых сервер просматривает таблицы базы данных, находит по заданным в запросе критериям требуемые данные и что-то с ними делает (что именно, зависит от запроса).

Те данные, по которым производится поиск записи, называются ключом . Если в записи несколько полей, то найти ее можно по разным ключам, каждый для своего поля. Тот ключ, по которому с наибольшей вероятностью будет производиться поиск записи, называется первичным ключом (PRIMARYKEY). Ключ может относиться не только к одному полю, а сразу к нескольким.

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

Следующим понятием является индекс . Представьте себе, как работает сервер базы данных. Получив запрос, он начинает просматривать таблицы на предмет поиска соответствующих данных. Просмотр выполняется последовательно, строка за строкой. Чтобы удостовериться в том, что собраны все данные, сервер должен просмотреть все строки в таблице (или в таблицах, если поиск идет сразу по нескольким таблицам).

Но легко сказать: просмотреть. А если таблица включает десять тысяч записей? А если миллион? Сервер, конечно, ее просмотрит, но вот сколько времени у него на это уйдет? Немало. А ответ надо получить как можно быстрей.

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

Процесс построения индекса занимает немало времени, но после его создания сервер уже не просматривает всю таблицу в поисках данных: Он ищет данные по индексу, где для каждого встречающегося в таблице значения указано, в каких именно ячейках таблицы можно найти нужные данные. Это существенно ускоряет работу (в десятки раз).

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

Получается, что для каждой таблицы порой следует иметь несколько разных индексов. В MySQL можно иметь до 32 индексов на таблицу. Максимальная индексная длина (то есть длина каждой записи в индексе) составляет до 500 байт. Индекс может включать в себя данные из нескольких столбцов сразу (в текущей реализации MySQL максимальное количество столбцов в каждом индексе составляет 15).

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

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

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

Столбцы необязательно создаются вместе с таблицами. Таблицу можно менять по мере надобности, добавляя или удаляя столбцы, меняя их типы. В инструкциях SQL вы можете обращаться к таблицам из различных баз данных с помощью синтаксиса Имя_базы_данных.Имя_таблицы . Это длинное имя позволяет однозначно указать таблицу и называется полным именем таблицы .

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

Столбцы помимо имени и типа могут также иметь необязательные атрибуты , которые определяют, как именно сервер обрабатывает тот или иной столбец, меняют логику работы сервера с этим столбцом. Присвоение атрибута столбцу равносильно присвоению этого атрибута соответствующему столбцу полю в каждой записи в таблице. Замечу, что столбцы одного типа, но с разными атрибутами, обрабатываются различными способами.

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

При обращении к столбцу в активной таблице можно вместо его полного имени (с указанием базы данных и таблицы) указывать только имя столбца. Оно автоматически будет дополнено именем активной таблицы текущей базы данных, что существенно ускоряет процесс ввода. Также, если вы обращаетесь к столбцу из другой таблицы в текущей базе данных, то можно указать его имя как Имя_таблицы.Имя_столбца , опустив часть Имя_базы_данных. оно будет приравнено к текущей базе данных.

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

Символы подстановки или групповые символы представляют собой такие символы, которым может соответствовать некое количество других символов. Например, при работе в Windows вы, скорее всего, сталкивались с символом звездочки (*), который обозначает любую цепочку произвольных символов. Такой метод широко применяется при работе с группами файлов. Вот это и есть групповой символ.

Регулярные выражения представляют собой некие последовательности символов, часть или все из которых являются символами подстановки. Например, при работе в Windows вы, скорее всего, сталкивались с обозначениями вида *.doc (соответствует всем файлам с расширением doc в текущем каталоге) или *.* (определяет все файлы в каталоге). Это и есть регулярные выражения, только в Windows их называют иначе. Как видите, ничего сложного в них нет. В MySQL вы не раз встретитесь с такими выражениями (правда, куца более сложными). Именно с их помощью задаются критерии для поиска информации.

Теперь давайте задумаемся о такой сложной проблеме: сервер допускает одновременную работу множества пользователей с одной и той же базой данных (даже с одной и той же таблицей). Но как обеспечить при этом целостность данных? Если один пользователь пишет одни данные, а другой в это же время пытается изменить именно эти данные, они разнесут всю базу данных. Как избежать этого?

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

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

Итак, как выглядит работа с транзакцией? Сервер представляет это так: сначала определяется, что именно в таблице будет изменено, затем делается отметка о том, что вот эти ячейки меняются некоторым образом, затем реально вносятся изменения, а потом ставится, отметка, что модификация выполнена. При этом на время внесения изменений таблица либо возвращает старые данные, либо не возвращает вообще ничего, но в любом случае не дает двум пользователям одновременно вносить изменения в одни и те же данные. Сначала первый заканчивает модификацию, потом за дело берется следующий.

Разница между транзакцией и атомной модификацией, если отбросить всю научную теорию, для конечного пользователя заключается в том, что в случае транзакционной модели пользователь может после выполнения запроса, который изменяет какие-то данные в таблице, решить, как именно он хочет завершить транзакцию: следует ли сохранить изменения (commit) или Отказаться от них (вызвать обратную перемотку, rollback ), вернув тем самым таблицу к тому состоянию, которое она имела до вызова запроса. Следует отметить, что существует режим автоматического сохранения всех изменений (AUTO_COMMIT). В атомной модели изменения отменены быть не могут: они вносятся в таблицу немедленно. Выполняемая в настоящий момент транзакция именуется активной.

MySQL по умолчанию использует свой формат таблиц: MyISAM. Раньше применялся тоже собственный формат ISAM, но теперь он объявлен устаревшим и поддерживается исключительно для совместимости со старыми пользователями. Если у вас есть таблицы в этом формате, мы очень рекомендуем конвертировать их в новый формат MyISAM. Он работает надежнее и быстрее.

Раз уж речь зашла о поддерживаемых форматах таблиц, следует сразу внести ясность на предмет того, что MySQL поддерживает несколько разных форматов. Одни работают на основе транзакций, другие на атомных модификациях, чтобы у конечного пользователя всегда был выбор, чем пользоваться. Надо отметить, что транзакционная модель намного сложнее в реализации, чем атомная, а поэтому поддержка транзакций в MySQL появилась существенно позднее. Свои форматы MySQL (MyISAM и ISAM) используют именно атомные модификации, но реализуют их настолько хорошо, что по надежности они ничем не уступают транзакционной модели доступа. В таблице 1.1. приведены поддерживаемые MySQL типы таблиц с их краткими описаниями.

Таблица 1.1. Краткие описания поддерживаемых MySQL типов таблиц.

Тип таблицы

Краткое описание

BDB или Berkeley_db

Транзакционно-безопасные таблицы с блокировкой страниц

HEAP

Данные для этих таблиц сохранены только в памяти (временные таблицы, но зато быстрые)

ISAM

Первоначальный драйвер таблицы MySQL. Устарел

InnoDB

Транзакционно-безопасные таблицы с блокировкой строки

MERGE

Совокупность таблиц MyISAM, используемых как одна

MyISAM

Новый двоично-независимый драйвер таблицы, который заменяет формат ISAM. Используется по умолчанию как основной тип таблицы

Обратите внимание, что не все версии сервера поддерживают все перечисленные таблицы! Типы ISAM и MyISAM поддерживаются всегда, а вот насчет остальных возможны варианты. Так что посмотрите на сайте http://www.mysql.com , что именно вам нужно.

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

Зачем это нужно? Дампы очень удобны для резервного копирования, а также для переноса данных между разными серверами. Может возникнуть необходимость применения дампа и в рамках одного сервера.

В таблице 1.1 показаны разные типы таблиц. Каждый из них имеет свой внутренний формат хранения данных. Самый простой способ конвертации одного в другой сводится к дампам.