Что такое mysql и его преимуществах. MySQL – почему и для чего. О происхождении 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 показаны разные типы таблиц. Каждый из них имеет свой внутренний формат хранения данных. Самый простой способ конвертации одного в другой сводится к дампам.

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

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

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

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

Какими преимуществами обладает MySQL?

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

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

SQL – язык запросов, предназначенный для организации управления реляционными БД (со связанными между собой данными). Он многофункционален и с его помощью можно корректировать, создавать и убирать данные из таблиц, запрашивать из них информацию, создавать сами таблицы и т.д.

На заметку! В интернет-пространстве MySQL еще известна как «мускул». Такое название ей придумали веб-мастера. К примеру, когда говорят фразу «CMS на мускуле», это значит, что система управления контентом сайта (движок) применяет СУБД MySQL.

Как информация хранится в реляционных БД?


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

Все значения в БД делятся на два типа:

  • Уникальные.
  • Неуникальные.

К первому типу относятся хостинговые договора, номера банковских карт и т.п. А к неуникальным приписывается информация, которая может повторяться, например, имя, дата рождения, время и пр. Уникальные данные содержатся в списке под названием «уникальный индекс».

Отличия MySQL от других СУБД

От других программ MySQL отличается тем, что он без проблем работает с интерфейсом API. С помощью данного программного обеспечения, юзер легко получает доступ из пользовательской программы к системе управления БД, даже если она написана на C, Perl и прочих языках программирования.

Для администрирования веб-сайтами, чаще всего используется сочетание MySQL с PHP. Большое количество движков (CMS) написаны именно на базе этой «связки». Один из таких движков известен любому начинающему web-мастеру – это система управления контентом для блогов и сайтов WordPress, получившая огромную популярность во всем мире. В вордпрессе присутствует огромное количество функций, на основе которых обеспечивается взаимодействие с MySQL, к примеру, «mysql_connect».

Так выглядят mysql таблицы у wordpress

Заключение

Кроме MySQL, сегодня на просторах Интернета вы можете найти огромное количество других систем управления БД, таких как PostgreSQL, mSQL и т.д. Все они обладают рядом преимуществ и недостатков, однако именно программа 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 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

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. Кроме этого, на сайте Википедии , всем желающим, можно познакомиться с историей развития данной технологии и прочими особенностями.