четверг, 15 января 2009 г.

История MySQL

Все началось с намерения подключиться с помощью mSQL к нашим таблицам данных,
используя наши собственные низкоуровневые (ISAM) процедуры. Не особо долгое тес-
тирование показало, что mSQL не обладает достаточной производительностью и гибко-
стью, дабы полностью удовлетворить существующие у нас требования. В итоге был соз-
дан новый SQL-интерфейс к нашей базе данных, который обладал почти таким же API-
интерфейсом, что и mSQL. Этот API-интерфейс был разработан так, чтобы существенно
упростить перенос кода независимых разработчиков, ориентированного на взаимодейст-
вие с mSQL, на новую платформу, связанную с MySQL.
Происхождение наименования "MySQL" неоднозначно. Наименования нашего базо-
вого каталога и огромного количества библиотек и инструментов имели префикс "ту" в
течение более 10 лет. С другой стороны, дочку одного из наших соучредителей, Монти
Видениуса (Monty Widenius), тоже звали Май (My). Какое именно из этих двух обстоя-
тельств стало причиной появления наименования MySQL - до сих пор является тайной
за семью печатями, даже для нас.
Кличка дельфина MySQL, изображенного на нашем логотипе - Сакила (Sakila) - бы-
ла выбрана основателями компании MySQL AB из большого списка кличек, предложен-
ных пользователями в процессе дискуссии "Дайте кличку дельфину". Победила кличка,
предложенная Эмброузом Твибейзом (Ambrose Twebaze), разработчиком программного
обеспечения с открытым исходным кодом из Свазиленда (Африка). Как утверждал Эм-
броуз, кличка Сакила своими корнями уходит в Си-Свати (SiSwati) - язык, на котором
говорят в Свазиленде. Сакила - это также название города в Аруше (Танзания), рядом с
родной страной Эмброуза, Угандой.
Ниже представлен список наиболее важных характеристик программного обеспече-
ния баз данных MySQL. Дополнительную информацию о текущих и планируемых воз-
можностях можно получить в разделе 1.5.
• Внутренние характеристики и переносимость.
• Написан на языках С и C++.
• Протестирован на широком спектре различных компиляторов.
• Работает на множестве различных платформ.
• Для обеспечения переносимости использует инструменты GNU — Automake,
Autoconf и Libtool.
• Доступны API-интерфейсы для С, C++, Eiffel, Java, Perl, PHP, Python, Ruby и Tel.
• Полностью многопоточный с использованием потоков ядра. Может работать в
многопроцессорных системах.
• Обеспечивает транзакционный и нетранзакционный механизмы хранения.
• Использует очень быстрые дисковые таблицы (MylSAM) со сжатием индексов
на основе бинарных деревьев (В-деревьев).
• Сравнительно простое добавление другого механизма хранения. Это удобно, ес-
ли требуется добавить SQL-интерфейс к базе данных собственной разработки.
• Очень быстрая система распределения памяти, основанная на потоках.
• Очень быстрые соединения, использующие оптимизированные однопроход-
ные мультисоединения.
• Хранимые в памяти хеш-таблицы, которые используются в качестве времен-
ных таблиц.
• Функции SQL реализованы с использованием высоко оптимизированной биб-
лиотеки классов и должны выполняться предельно быстро. Как правило, како-
го-либо распределения памяти после инициализации запроса не выполняется.
• Код MySQL протестирован с помощью инструментов поиска утечки памяти,
как коммерческих, так и с открытым исходным кодом.
• Сервер доступен как отдельная программа для использования в клиент-
серверной сетевой среде. Кроме того, он также поставляется в виде библиоте-
ки, которая может быть встроена в отдельные автономные приложения. Такие
приложения могут применяться в изолированной среде или среде, не имеющей
доступа к сети.
• Типы столбцов
• Множество типов данных для столбцов таблиц: знаковые/беззнаковые целые
ДЛИНОЙ В 1, 2, 3, 4 и 8 байт; ТИПЫ FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE,
TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM и пространственные типы OpenGIS.
• Записи фиксированной и переменной длины.
• Операторы и функции.
• Полная поддержка операций и функций в конструкциях SELECT и WHERE запро-
сов, например:
mysql> SELECT CONCAT(first_name, ' ', last_name)
-> FROM citizen
-> WHERE income/dependents > 10000 AND age > 30;
• Полная поддержка конструкций GROUP BY и ORDER BY. Поддержка групповых
функций (COUNT (), COUNT (DISTINCT . . . ) , AVG (), STD (), SUM (), MAX (), MIN () И
GROUP_CONCAT()).
• Поддержка LEFT OUTER JOIN и RIGHT OUTER JOIN как с синтаксисом SQL, так и
с синтаксисом ODBC.
• Поддержка псевдонимов для таблиц и столбцов, как того требует стандарт
SQL.
• Операторы DELETE, INSERT, REPLACE и UPDATE возвращают количество строк,
которые были изменены. Вместо этого можно задать возврат количества строк,
соответствующих запросу, для чего потребуется установить соответствующий
флаг при подключении к серверу.
• Специфическая для MySQL команда SHOW может быть использована для
извлечения информации о базах данных, таблицах и индексах. Команда
EXPLAIN позволяет просмотреть, как оптимизатор выполняет запрос.
• Имена функций не конфликтуют с именами таблиц и столбцов. Например,
ABS - абсолютно корректное имя столбца. Единственное ограничение, которое
накладывается на вызов функций, - это то, что между именем функции и сле-
дующей за ним открывающей скобкой ' (' не должно быть пробелов.
• Можно смешивать таблицы из разных баз данных в одном запросе (как в
MySQL 3.22).
• Безопасность.
• Система, основанная на паролях и привилегиях, является исключительно гиб-
кой и безопасной и позволяет организовать верификацию средствами хоста.
Пароли защищены, поскольку весь трафик паролей во время соединения с сер-
вером шифруется.
• Масштабируемость и ограничения.
• Поддерживает работу баз данных огромных объемов. Например, компания
MySQL AB применяет сервер MySQL для обслуживания базы данных, содер-
жащей 50 миллионов записей. Известна также организация, использующая
сервер MySQL для обслуживания базы данных из 60 000 таблиц, которая хра-
нит около 5 миллиардов записей.
• Разрешается иметь до 64 индексов на таблицу (в версиях, предшествующих
MySQL 4.1.2, допускалось до 32 индексов). Каждый индекс может содержать от
1 до 16 столбцов или частей столбцов. Максимальная ширина индекса составля-
ет 1000 байт (500 байт в версиях, предшествующих MySQL 4.1.2). Для индекса
может применяться префикс столбцов с типами CHAR, VARCHAR, BLOB и TEXT.
• Сетевая связность
• Клиенты могут подключаться к серверу MySQL, используя сокеты TCP/IP на
любой платформе. В Windows-системах семейства NT (NT, 2000 или ХР) клиен-
ты могут подключаться с использованием именованных каналов. В системах на
базе UNIX клиенты могут подключаться через файлы сокетов UNIX-доменов.
• Интерфейс Connector/ODBC позволяет MySQL поддерживать клиентские про-
граммы, которые используют ODBC-соединения. Например, для подключения
к серверу MySQL можно использовать MS Access. Клиентское программное
обеспечение может выполняться под управлением Windows или UNIX. Исход-
ные тексты интерфейса Connector/ODBC доступны. Поддерживаются все
функции ODBC 2.5, равно как и множество других.
• Интерфейс Connector/JDBC позволяет MySQL взаимодействовать с клиент-
скими программами на Java, в которых используются JDBC-подключения.
Клиентское программное обеспечение может выполняться под управлением
Windows или UNIX. Исходные тексты интерфейса Connector/JDBC доступны.
• Локализация
• Сервер может выдавать клиентам сообщения об ошибках на разных языках.
• Полностью поддерживаются несколько кодовых таблиц, включая latinl (ISO-
8859-1), german, big5, ujis и другие. Например, в именах таблиц и столбцов
разрешается применять скандинавские символы наподобие 'а', 'а' и 'б'. Начи-
ная с версии MySQL 4.1, также обеспечивается поддержка Unicode.
• Все данные сохраняются в выбранной кодировке. Все сравнения столбцов с
нормальными строками чувствительны к регистру.
• Сортировка выполняется в соответствии с выбранной кодировкой (по умолча-
нию используется шведский набор). Во время запуска сервера MySQL это
можно изменить. В качестве примера весьма совершенной сортировки реко-
мендуется обратить внимание на код сортировки для чешского языка. Сервер
MySQL поддерживает множество различных кодировок, причем они могут
быть указаны как во время компиляции, так и во время выполнения.
• Клиенты и инструменты.
• Сервер MySQL имеет встроенную поддержку SQL-операторов для проверки,
оптимизации и восстановления таблиц. Эти операторы можно выполнять в
режиме командной строки, используя клиентское приложение mysqlcheck.
MySQL включает также myisamchk - очень быструю утилиту командной стро-
ки для реализации тех же операций над таблицами MylSAM.
• Все программы MySQL можно запускать на выполнение с опцией —help или
-? для получения быстрой подсказки.

Комментариев нет:

Отправить комментарий