Движки баз данных.
Всем привет! Наверняка, вы, создавая таблицы в базе данных, видели такие надписи, как MyISAM или InnoDB. Возможно, вы даже знаете, что это такое, но вот когда что выбирать? Об этом мы сегодня и поговорим.
Движок базы данных - это способ хранения данных.
Существуют самые разные движки баз данных - MyISAM, InnoDB, Memory, Archive, CSV, DBD, Federated, Blackhole.
InnoDB
Это многофункциональный движок, который поддерживает большинство функций: транзакции, все ограничения, внешние ключи, связи таблиц и другое, но НЕ поддерживает полнотекстовый индекс. Данный движок в основном направлен на выборку данных, а не на вставку, следовательно, используйте его там, где вам чаще всего нужно будет быстро что-то выбрать, а не вставить. Или там, где вам нужен какой-то функционал, который не поддерживают другие движки.
MyISAM
Движок MyISAM направлен на быстрое добавление или изменение данных, однако, он не оптимизирован на выборку, так что используйте его там, где вам нужно быстро вставлять, изменять, удалять данные, но не выборка. Также, данный движок не поддерживает внешний ключ и транзакции, но поддерживает блокировки и полнотекстовый индекс.
Archive
Из названия понятно, для чего нужен этот движок. Он хранит данные в виде ZIP архива. Размер таблицы, работающей на данном движке, будет очень мал. Однако, из этого следует, что изменение данных будет ОЧЕНЬ медленным. Выборка же данных примерно как у движка MyISAM. У этого движка нет ограничения Primary Key, транзакций и прочего. Основное предназначение данного движка для данных, которые никогда или очень редко меняются. Например, справочники.
CSV
Данные в данном движке хранятся в таком виде:
value1,value2,value3
value1,value2,value3
Т.е. каждая новая запись с новой строки, а столбцы разделяются запятой.
В основном данный движок предназначен для совместимости со старыми mainframe записями.
Внешнего ключа нет, транзакций нет, полнотекстового индекса нет, primary key, unique key есть.
Скорость выборки примерно как у MyISAM. Врядли вам когда-нибудь придется его использовать.
BDB
Используется для совместимости с сервером BerkeleyDB. Тоже врядли он вам понадобится.
Memory
Данный движок хранит все данные в оперативной памяти сервера. На диске он ничего не хранит.
Данный движок очень быстр как на запись, изменение, удаление данных, так и на их выборку. Однако, вы должны понимать, что данные очень легко потерять.
Рекомендуется для хранения временных таблиц.
Federated
Данный движок используется для создания кластерных решений. Это когда несколько серверов подключаются к одному серверу, на котором хранится база данных с этим движком, и каждый из этих серверов считает эту базу данных своей.
Скорость будет просто огромная, но вы должны понимать, что обычным сайтам это не нужно и используется только на очень высоконагруженных проектах. Плюс ко всему, данный движок является платным.
Blackhole
Очень интересный движок. Его название переводится как "черная дыра". И это не просто так. Если вы попробуете создать таблицу на этом движке, а потом что-то выбрать из нее, то увидите Empty set. Все, что записывается в таблицу на движке Blackhole, сразу уничтожается.
Данный движок используется для отладки.
Заключение
Итак, надеюсь, что теперь для вас такое словосочетание, как "движки баз данных" не будет просто пустым звуком. Конечно, мы разобрали здесь не все движки, которые существуют у баз данных, но самые распространенные я описал. Выбирайте тот, который лучше подходит под ваши задачи. Спасибо за внимание и удачного проектирования баз данных! :)
-
- Михаил Русаков
Комментарии (2):
Я б краще навчив новачків ставити MariaDB чи Percona. Там нема того. що з цього рідко використовується, але зате є ефективніші движки. Так, наприклад XtraDB - ефективний форк InnoDB, там є патчі від самого гугла і т.д Швидкість набагато краща і менше навантаження. А щодо BerkeleyDB я використовую memcachedb. Це memcache i berkeleyDB одночасно. Точніше, зберігається інформація в 2, а для швидкості кешується в 1. А щодо Archive - то, блін, я таке теж думав зробити, а воно є)
Ответить
Михаил, доброго времени суток. В своих курсах Вы рекомендуете использовать MyISAM. Подскажите, пожалуйста, для реализации соцсети имеет ли смысл создать базу на InnoDB с использованием внешних связей. Какие могут быть нюансы использования InnoDB кроме описанных в Вашей статье?
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.