O que exatamente é um mecanismo de banco de dados?

14

Passei pela definição em http://en.wikipedia.org/wiki/Database_engine várias vezes:

Um mecanismo de banco de dados (ou "mecanismo de armazenamento") é o componente de software subjacente que um sistema de gerenciamento de banco de dados (DBMS) usa para criar, ler, atualizar e excluir dados (CRUD) de um banco de dados.

O que eu não entendo é o que resta fazer, não é CRUD tudo o que os bancos de dados fazem?

Se o mecanismo do banco de dados executa essas funções, o que o restante do banco de dados faz?

lazer
fonte
Para uma resposta direta à pergunta colocada em negrito ( o que o restante do banco de dados faz? ), Consulte a resposta de Bryan. Para mais clareza sobre o que um mecanismo de banco de dados faz, além do CRUD, consulte a resposta de Leigh.
Nealmcb

Respostas:

15

O CRUD visa definir as características necessárias para um banco de dados no que se refere ao armazenamento persistente. Não se destina a descrever tudo o que poderia ser feito por um mecanismo de banco de dados.

Para fazer uma comparação, fundamentalmente um veículo é um dispositivo usado para o transporte. Embora verdadeira, essa definição certamente não inclui todos os detalhes de um automóvel moderno.

Um mecanismo de banco de dados pode lidar com vários usuários, transações , MVCC (Multiversion Concurrency Control) , buffers e caches, ACID (atomicidade, consistência, isolamento, durabilidade) , além de diferentes níveis de isolamento . Uma leitura pode extrair dados da memória, bancos de dados remotos e várias tabelas no disco, processando-os usando SQL através de vários caminhos de código explícitos e / ou implícitos, a fim de apresentá-los ao aplicativo solicitante. Uma criação pode alocar armazenamento, provisionar estruturas, atribuir valores e fazer seu próprio processamento antes de armazenar dados. Etc.

Leigh Riffel
fonte
Essa é uma resposta muito compacta e completa. +1 !!!
RolandoMySQLDBA
Entre boa analogia sobre veículo versus tipo específico de veículo.
RolandoMySQLDBA 13/08
Na minha opinião, transações, garantia ACID, níveis de isolamento, controle de concorrência, buffers e caches são todos tratados pelo próprio mecanismo de banco de dados. Por que eu digo isso? Para obter mais informações, consulte
linux.org/threads/an-introduction-to-mysql-storage-engines
@ Leigh, a simultaneidade (da falta de) não é um recurso do mecanismo de armazenamento e não do DBMS? Se é um recurso do DBMS, por que o MariaDB / MySQL não pode fazer transações para determinados mecanismos de armazenamento como o MyISAM?
Pacerier
@Pacerier - Isso pode ser verdade para sistemas que fazem uma separação entre o DBMS e o mecanismo de armazenamento, para outros a distinção não faz sentido.
Leigh Riffel
12

Alguns bancos de dados podem executar muitos mecanismos, dependendo da melhor opção para o trabalho. Por exemplo, muitos dos meus aplicativos usam o InnoDB para a maioria dos dados (restrições de chave e bloqueio no nível de linha), o MyISAM para dados da sessão (rápido, com menos processamento) e o ArchiveDB para trilha de auditoria (compactado e somente inserir / selecionar, sem atualização / exclusão).

O "restante" do software de banco de dados fornece uma interface comum para uso através de APIs ou terminais, permite ações complexas (como junções, subconsultas etc.) e gerencia a integridade / status e a configuração dos mecanismos incluídos. Há muito para alimentar e cuidar de um mecanismo, e o software de banco de dados oculta toda essa complexidade.

Bryan Agee
fonte
Obrigado por realmente responder à pergunta colocada em negrito!
Nealmcb