Разработку и сопровождение MySQL
Доклад, 29 Октября 2012, автор: пользователь скрыл имя
Краткое описание
Нами была поставлена цель создать справочное руководство на живом и понятном языке, но в то же время не переходить на чистый сленг.
Содержимое работы - 1 файл
1.1.doc
— 231.50 Кб (Скачать файл)1.3.1. Список терминов, принятых в русском переводе
Редакционная коллегия при подготовке этого перевода старалась как можно адекватнее перевести специфические термины с английского языка на русский. Нами была поставлена цель создать справочное руководство на живом и понятном языке, но в то же время не переходить на чистый сленг. Поэтому терминология, принятая в этом переводе, возможно, не полностью соответствует четким терминам, принятым в русскоязычной литературе на "около-реляционную" тему.
Для ясности понимания мы включаем в документацию список принятых в этом переводе терминов.
Термин |
Значение |
account |
аккаунт, учетная запись |
ACL |
списки контроля доступа |
banner |
баннер |
benchmark page |
страничка тестов производительности |
Berkeley-style copyright |
лицензия наподобие Berkeley |
binary release, binary distribution |
бинарная поставка, двоичная поставка |
cache |
кэш |
case sensitive |
чувствительный к регистру, регистро-зависимый |
change history |
история изменений |
charset |
набор символов, кодировка |
client/server |
клиент-серверный |
command-line tool |
утилита командной строки |
commit |
принять; commit transaction - принять транзакцию |
communication protocol |
коммуникационный протокол |
contact form |
форма. fill in the contact form - заполните форму |
data dir |
каталог с данными |
datadir, data dir |
каталог datadir, каталог данных |
date type |
тип даты |
DBA |
администратор (физическое лицо) |
dbms |
см. rdbms |
ddos |
distributed dos - распределенная атака создания отказа в обслуживании |
denial of service |
отказ в обслуживании |
deployment |
распространение |
distribution |
поставка, дистрибутив |
distributor |
производитель |
dos |
см. denial of service |
embedded |
встраиваемый. Не "встроенный" |
environment variables |
переменные окружения |
escape chars |
символы экранирования |
escaped chars |
экранированные символы |
extended regular expression |
расширенное регулярное выражение |
fail-safe |
отказобезопасный |
feature |
возможность, особенность |
firewall |
брандмауэр |
flush |
сброс, очистка, перегрузка |
foreign key constraint |
ограничения внешних ключей |
full precision |
полная точность |
full-text |
полнотекстовый |
grant tables |
таблицы привилегий |
grants |
привилегии |
group |
группа, группировка |
group functions |
групповые функции, операции группировки данных, операции над групповыми данными |
host |
удаленный компьютер |
inserting data |
добавление, вставка данных |
join |
связь |
join optimizer |
оптимизатор связей |
key cache |
кэш ключей |
large-scale |
широкомасштабный |
license |
лицензция |
link |
линкование (в контексте линкования компиляции программ) |
localhost, local host |
локальный хост, локальный компьютер |
locking |
блокировка |
log |
журнал |
log position |
точка положения в журнале репликации |
login |
см. account |
login shell |
первая оболочка входа (login shell) |
master |
(репликация) головной сервер |
miscellaneous |
разнообразный |
multi-byte |
мультибайтный |
multi-layered |
многоуровневый |
multithread |
многопоточный |
mysql server |
MySQL или сервер |
mysql user |
пользователь MySQL |
non-updating queries |
запросы, не изменяющие информацию |
null |
null |
open source |
система с открытым кодом (open source) |
optional |
опциональный |
parser |
синтаксический анализатор |
patch |
патч |
port listening |
слушание порта, слушать порт, ожидать соединение на порту |
privacy |
конфиденциальность |
privilege |
привилегии |
qualifier |
определитель |
qualify |
определять |
rdbms |
система управления реляционными базами данных |
reference manual |
справочник, руководство |
regular client |
обычный клиент |
regular expression |
регулярное выражение; extended - расширенное р.в. |
released under gpl |
выпущено под лицензией GPL |
replica (server) |
сервер с копиями |
robustness |
надежность, отказоустойчивость |
rollback |
откат |
rotation |
ротация |
row-level locking |
строчная блокировка |
scope |
контекст |
script |
сценарий, скрипт |
security |
безопасность |
security issues |
вопросы безопасности |
SET |
множество |
silent |
молчаливо |
slave |
(репликация) подчиненный сервер |
snapshop |
образ, снимок |
socket |
сокет |
ssh port-forwarding |
пересылка по SSH (SSH port-forwarding) |
SSL connections |
SSL-соединения |
sticky |
прилипчив |
superuser |
суперпользователь |
symbol table |
см. charset |
symbol value |
строкое значение |
symlink |
символическая ссылка |
table handler |
обработчик таблиц |
thread |
поток |
time stamp |
временная метка |
timestamp |
тип данных временной метки |
TODO-list |
список задач к выполнению |
track |
последовательность, протокол |
transactional |
транзакционный |
trick |
трюк, хитрость |
unix socket, unix domain socket |
unix-сокет |
up-to-date |
своевременный |
utilities |
инструментальные программы |
vendor |
поставщик |
verbose |
расширенный режим вывода сообщений |
voting algorithm |
алгоритм голосования |
warning |
предупреждение |
wildcard |
шаблон, шаблонные символы |
wrapper |
оболочка |
1.4. Что представляет собой MySQL?
Разработку и сопровождение MySQL, самой популярной SQL-базы данных с открытым кодом, осуществляет компания MySQL AB. MySQL AB - коммерческая компания, основанная разработчиками MySQL, строящая свой бизнес, предоставляя различные сервисы для СУБД MySQL. SeeРаздел 1.5, «Что представляет собой компания MySQL AB?».
На веб-сайте MySQL (http://www.mysql.com/) представлена самая свежая информация о программном обеспечении MySQL и о компании MySQL AB.
- MySQL - это система управления базами данных.
База данных представляет собой структурированную совокупность данных. Эти данные могут быть любыми - от простого списка предстоящих покупок до перечня экспонатов картинной галереи или огромного количества информации в корпоративной сети. Для записи, выборки и обработки данных, хранящихся в компьютерной базе данных, необходима система управления базой данных, каковой и является ПО MySQL. Поскольку компьютеры замечательно справляются с обработкой больших объемов данных, управление базами данных играет центральную роль в вычислениях. Реализовано такое управление может быть по-разному - как в виде отдельных утилит, так и в виде кода, входящего в состав других приложений.
- MySQL - это система управления реляционными базами данных.
В реляционной базе данных данные хранятся не все скопом, а в отдельных таблицах, благодаря чему достигается выигрыш в скорости и гибкости. Таблицы связываются между собой при помощи отношений, благодаря чему обеспечивается возможность объединять при выполнении запроса данные из нескольких таблиц. SQL как часть системы MySQL можно охарактеризовать как язык структурированных запросов плюс наиболее распространенный стандартный язык, используемый для доступа к базам данных.
- Программное обеспечение MySQL - это ПО с открытым кодом.
ПО с открытым кодом означает,
что применять и модифицировать
его может любой желающий. Такое
ПО можно получать по Internet и использовать
бесплатно. При этом каждый пользователь
может изучить исходный код и изменить
его в соответствии со своими потребностями.
Использование программного обеспечения
MySQL регламентируется лицензией GPL (GNU General Public License), http://www.gnu.org/
- В каких случаях следует отдавать предпочтение СУБД MySQL?
MySQL является очень быстрым,
Первоначально сервер MySQL разрабатывался для управления большими базами данных с целью обеспечить более высокую скорость работы по сравнению с существующими на тот момент аналогами. И вот уже в течение нескольких лет данный сервер успешно используется в условиях промышленной эксплуатации с высокими требованиями. Несмотря на то что MySQL постоянно совершенствуется, он уже сегодня обеспечивает широкий спектр полезных функций. Благодаря своей доступности, скорости и безопасности MySQL очень хорошо подходит для доступа к базам данных по Internet.
- Технические возможности СУБД MySQL
Более детальную информацию по техническим возможностям MySQL можно получить в разделе Глава 6, Справочник по языку MySQL. ПО MySQLявляется системой клиент-сервер, которая содержит многопоточный SQL-сервер, обеспечивающий поддержку различных вычислительных машин баз данных, а также несколько различных клиентских программ и библиотек, средства администрирования и широкий спектр программных интерфейсов (API).
Мы также поставляем сервер MySQL в виде многопоточной библиотеки, которую можно подключить к пользовательскому приложению и получить компактный, более быстрый и легкий в управлении продукт.
- Доступно также большое количество программного обеспечения MySQL,
разработанного сторонними разработчиками.
Вполне возможно, что СУБД MySQL уже поддерживается вашим любимым приложением или языком.
MySQL правильно произносится как ''Май Эс Кью Эль'' (а не ''майсиквел''), хотя никто не запрещает вам произносить эту аббревиатуру как ``майсиквел'' или еще каким-либо образом.
1.4.1. История MySQL
В один прекрасный день мы решили применить mSQL для доступа к нашим таблицам, для которых использовались собственные быстрые (ISAM) подпрограммы низкого уровня. Однако после тестирования мы пришли к заключению, что для наших целей скорость и гибкость mSQL недостаточны. В результате для базы данных был разработан новый SQL-интерфейс, но почти с тем же API-интерфейсом, что и mSQL. Этот API мы выбрали, чтобы упростить перенос на код сторонних разработчиков.
Происхождение имени MySQL не совсем ясно. Уже около 10 лет наша основная директория и большое количество библиотек и инструментария имеют префикс my. Более того, дочь Монти (она несколькими годами моложе) тоже получила имя My! Что из этих двух факторов повлияло на имя - до сих пор остается загадкой, даже для разработчиков.
1.4.2. Основные возможности MySQL
Ниже приведено описание важных характеристик программного обеспечения MySQL. See Раздел 1.7, «Кратко о MySQL 4.x».
- Внутренние характеристики и переносимость
- Написан на C и C++. Протестирован на множестве различных компиляторов.
- Работает на различных платформах. See Раздел 2.2.3, «Операционные системы, поддерживаемые MySQL».
- Для обеспечения переносимости используется GNU Automake, Autoconf и Libtool.
- API для C, C++, Eiffel, Java, Perl, PHP, Python, Ruby и Tcl. See Глава 8, Интерфейсы для MySQL.
- Полностью многопоточный с использованием потоков ядра. Это означает, что, если такая возможность обеспечивается, можно легко организовать работу с несколькими процессорами.
- Очень быстрые дисковые таблицы на основе В-деревьев со сжатием индексов.
- Очень быстрая базирующаяся на потоках система распределения памяти.
- Очень быстрые соединения, использующие оптимизированный метод однопроходного мультисоединения (one-sweep multi-join).
- Хеш-таблицы в памяти, используемые как временные таблицы.
- SQL-функции реализованы при помощи хорошо оптимизированной библиотеки классов, поэтому они выполняются настолько быстро, насколько это возможно. Обычно после инициализации запроса распределения памяти не происходит вообще.
- MySQL- код протестирован с использованием Purify (коммерческий детектор утечки памяти), а также Valgrind, одного из GPL-инструментов (http://developer.kde.org/~
sewardj/ - Типы столбцов
- Большое количество: целочисленные со знаком/беззнаковые,
длиной в 1, 2, 3, 4 и 8 байтов, FLOAT, DOUBLE, CHAR, V
ARCHAR, TEXT, BLOB,DATE, TIME, DATETIME, TIMESTAMP, YEAR, SE T и ENUM. See Раздел 6.2, «Типы данных столбцов». - С записями фиксированной и переменной длины.
- Все столбцы имеют значения по умолчанию. С помощью INSERT можно вставить подмножество столбцов таблицы; столбцы, для которых явно не заданы значения, устанавливаются в значения по умолчанию.
- Команды и функции
- Полная поддержка операторов и функций в SELECT- и WHERE- частях запросов. Например:
- mysql> SELECT CONCAT(first_name, " ", last_name)
- -> FROM tbl_name
- -> WHERE income/dependents > 10000 AND age > 30;
- Полная поддержка для операторов SQL GROUP BY и ORDER BY с выражениями SQL.
Поддержка групповых функций (COUNT(), COUNT(DISTINCT ...), AVG(), STD(), SUM(), MAX
() и MIN()). - Поддержка LEFT OUTER JOIN и RIGHT OUTER JOIN с синтаксисом ANSI SQL и ODBC.
- Разрешены псевдонимы для таблиц и столбцов в соответствии со стандартом SQL92.
- DELETE, INSERT, REPLACE, and UPDATE возвращают число строк, которые были изменены. Вместо этого можно задать возвращение совпавших строк. Для этого следует установить флаг при соединении с сервером.
- Команду SHOW, которая является специфической для MySQL, можно использовать для получения информации о базах данных, таблицах и индексах. Чтобы выяснить, как оптимизатор выполняет запрос, можно применять команду EXPLAIN.
- Имена функций не конфликтуют с именами таблиц и столбцов. Например, ABS является корректным именем столбца. Для вызова функции существует только одно ограничение: между именем функции и следующей за ним открывающей скобкой ‘(’ не должно быть пробелов. SeeРаздел 6.1.7, «``Придирчив'' ли MySQL к зарезервированным словам?».
- В одном и том же запросе могут указываться таблицы из различных баз данных (с версии 3.22).
- Безопасность
- Система, основанная на привилегиях и паролях, за счет чего обеспечивается гибкость и безопасность, и с возможностью верификации с удаленного компьютера. Пароли защищены, т.к. они при передаче по сети при соединении с сервером шифруются.
- Масштабируемость и ограничения
- Управляет очень большими базами данных. Компания MySQL AB. использует MySQL для работы с несколькими базами данных, которые содержат 50 миллионов записей, кроме того, нам известны пользователи, использующие MySQL для работы с 60000 таблицами, включающими около 5000000000 строк.
- Для каждой таблицы разрешается иметь до 32 индексов. Каждый индекс может содержать от 1 до 16 столбцов или частей столбцов. Максимальная ширина индекса 500 бит (это значение может быть изменено при компиляции MySQL). Для индекса может использоваться префикс поля CHAR или VARCHAR.
- Установка соединений
- Клиенты могут соединяться с MySQL, используя сокеты TCP/IP, сокеты Unix или именованные каналы (named pipes, под NT).
- Поддержка ODBC (Open-DataBase-
Connectivity) для Win32 (с исходным кодом). Все функции ODBC 2.5 и многие другие. Например, для соединения с MySQL можно использовать MS Access. See Раздел 8.3, «Поддержка ODBC в MySQL». - Локализация
- Сервер может обеспечивать сообщения об ошибках для клиентов на различных языках. See Раздел 4.6.2, «Сообщения об ошибках на языках, отличных от английского».
- Полная поддержка нескольких различных кодировок, включая ISO-8859-1 (Latin1), немецкий, big5, ujis и многие другие. Например, скандинавские символы разрешены в именах таблиц и столбцов.
- Для хранения всех данных используется выбранный набор символов. Все сравнения для столбцов с нормальными строками проводятся с учетом регистра символов.
- Сортировка производится согласно выбранному алфавиту (по умолчанию используется шведский). Эту установку можно изменить при запуске сервера MySQL. Чтобы ознакомиться с примером очень грамотной сортировки, можно обратиться к коду сортировки для чешского языка. MySQL поддерживает много различных кодировок, которые можно задавать во время компиляции и в процессе работы.
- Клиенты и инструментарий
- Включает myisamchk, очень быструю утилиту для проверки, оптимизации и восстановления таблиц. Все функциональные возможностиmyisamchk также доступны через SQL-интерфейс. See Глава 4, Администрирование баз данных.
- Все MySQL-программы можно запускать с опциями --help или -? для получения помощи.
1.4.3. Насколько стабильным является MySQL?
Этот раздел дает ответ на следующие вопросы ''Насколько стабильным является MySQL?'' и ''Могу ли я положиться на MySQL в своем проекте?'' Мы попытаемся внести ясность в эти проблемы, а также ответить на некоторые важные вопросы, которые имеют значение для многих потенциальных пользователей. Информация данного раздела базируется на данных из списка рассылки, - наши пользователи очень активно сообщают нам о выявленных проблемах и о своем опыте использования нашего ПО.
Самые первые версии кода были созданы в начале 80-х. Это был устойчивый код с форматом таблиц ISAM, обеспечивающим обратную совместимость с предыдущими версиями. Во времена компании TcX, предшественника MySQL AB, с середины 1986 года код MySQL работал в проектах без каких-либо проблем. Но когда сервер MySQL был выпущен для широкого использования, оказалось, что существует несколько фрагментов ``непротестированного кода''. Эти фрагменты были быстро обнаружены новыми пользователями, которые составляли запросы в несколько ином виде, чем мы.
С каждым новым релизом количество проблем, связанных с переносимостью, уменьшалось (несмотря на то, что в каждом выпуске появлялось множество новых возможностей).
Каждый релиз MySQL был рабочим, проблемы возникали только при использовании кода из ``серых зон''. Естественно, что новые пользователи не знают о том, где находятся такие ``серые зоны''; в данном разделе сделана попытка описать те из них, которые известны на данный момент. Большая часть описания относится к версии 3.23 MySQL-сервера. В самой последней версии все известные ошибки устранены, за исключением тех, которые перечислены в разделе ошибок, а также конструктивных дефектов. See Раздел 1.9.5, «Известные ошибки и недостатки проектирования в MySQL».
Структура ПО MySQL является многоуровневой с независимыми модулями. Некоторые из новейших модулей перечислены ниже, причем по каждому дается информация о том, насколько хорошо он протестирован.
- Репликация - Gamma
Большие серверные кластеры, в которых применяется репликация, находятся в промышленной эксплуатации и показывают хорошие результаты. Работа над средствами репликации в MySQL 4.x продолжается.
- InnoDB-таблицы - стабильно (в 3.23 с 3.23.49)
Обработчик транзакционных Inno