Что именно представляет собой движок базы данных?

14

Я несколько раз просматривал определение на http://en.wikipedia.org/wiki/Database_engine :

Механизм базы данных (или «механизм хранения») является базовым программным компонентом, который система управления базами данных (СУБД) использует для создания, чтения, обновления и удаления (CRUD) данных из базы данных.

Что я не понимаю, так это то, что осталось сделать, разве CRUD не все, что делают базы данных?

Если механизм базы данных выполняет эти функции, что делает остальная часть базы данных?

Lazer
источник
Для прямого ответа на вопрос, поставленный жирным шрифтом ( что делает остальная часть базы данных? ), См. Ответ Брайана. Для большей ясности относительно того, что делает механизм базы данных, кроме CRUD, см. Ответ Ли.
nealmcb

Ответы:

15

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

Для сравнения, по сути, транспортное средство - это устройство, используемое для транспорта. Хотя это определение верно, оно не включает в себя все детали современного автомобиля.

Механизм базы данных может обрабатывать несколько пользователей, транзакции , MVCC (Multiversion Concurrency Control) , буферы и кэши, ACID (атомарность, согласованность, изоляция, долговечность) , а также различные уровни изоляции . Чтение может извлекать данные из памяти, удаленных баз данных и нескольких таблиц на диске, обрабатывая их с использованием SQL через несколько явных и / или неявных путей кода, чтобы представить их запрашивающему приложению. Создание может распределять хранилище, предоставлять структуры, назначать значения и выполнять собственную обработку перед сохранением данных. И т.п.

Ли Риффель
источник
Это очень компактный, но полный ответ. +1 !!!
RolandoMySQLDBA
Кстати, хорошая аналогия о транспортном средстве против конкретного типа транспортного средства.
RolandoMySQLDBA
По моему мнению, транзакции, гарантия ACID, уровни изоляции, управление параллелизмом, буферы, кэши обрабатываются самим компонентом Database Engine. Почему я так говорю? ... Посетите этот linux.org/threads/an-introduction-to-mysql-storage-engines.4220
Шату
@Leigh, разве параллелизм (из-за отсутствия) не является функцией механизма хранения, а не СУБД? Если это особенность СУБД, то почему MariaDB / MySQL не может выполнять транзакции для определенных механизмов хранения, таких как MyISAM?
Pacerier
@Pacerier - это может быть верно для систем, которые разделяют СУБД и механизм хранения, для других это различие не имеет смысла.
Ли Риффель
12

В некоторых базах данных может работать много двигателей, в зависимости от того, насколько они лучше подходят для работы. Например, многие из моих приложений используют InnoDB для большинства данных (ограничения ключа и блокировки на уровне строк), MyISAM для данных сеанса (быстрая, меньшая обработка) и ArchiveDB для контрольного журнала (только сжатые и вставляемые / выбираемые, без обновления / удаления).

«Остальная часть» программного обеспечения базы данных обеспечивает общий интерфейс для использования через API или терминалы, позволяет выполнять сложные действия (такие как объединения, подзапросы и т. Д.) И управляет состоянием / состоянием и конфигурацией включенных модулей. Существует много возможностей для подачи и ухода за движком, а программное обеспечение базы данных скрывает всю эту сложность.

Брайан Эйджи
источник
Спасибо за ответ на вопрос, выделенный жирным шрифтом!
nealmcb