Mecanismo de banco de dados - Database engine

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 (CRUD) dados de um banco de dados . A maioria dos sistemas de gerenciamento de banco de dados inclui sua própria interface de programação de aplicativo (API) que permite ao usuário interagir com seu mecanismo subjacente sem passar pela interface de usuário do SGBD.

O termo "mecanismo de banco de dados" é freqüentemente usado de forma intercambiável com " servidor de banco de dados " ou "sistema de gerenciamento de banco de dados". Uma "instância de banco de dados" refere-se aos processos e estruturas de memória do mecanismo de banco de dados em execução .

Mecanismos de armazenamento

Muitos dos DBMS modernos oferecem suporte a vários mecanismos de armazenamento no mesmo banco de dados. Por exemplo, o MySQL suporta InnoDB e também MyISAM .

Alguns mecanismos de armazenamento são transacionais .

Nome Licença Transacional
Ária GPL Não
Falcão GPL sim
InnoDB GPL sim
MyISAM GPL Não
InfiniDB GPL Não
TokuDB GPL sim
WiredTiger GPL sim
XtraDB GPL sim
RocksDB GPL v2 ou Apache 2.0 sim

Os tipos de motor adicionais incluem:

Considerações de design

As informações em um banco de dados são armazenadas como bits dispostos como estruturas de dados no armazenamento que podem ser lidas e gravadas com eficiência, dadas as propriedades do hardware. Normalmente, o armazenamento em si é projetado para atender aos requisitos de várias áreas que utilizam extensivamente o armazenamento, incluindo bancos de dados. Um SGBD em operação sempre utiliza simultaneamente vários tipos de armazenamento (por exemplo, memória e armazenamento externo), com os respectivos métodos de layout.

Em princípio, o armazenamento do banco de dados pode ser visto como um espaço de endereço linear , onde cada bit de dados tem seu endereço exclusivo neste espaço de endereço. Na prática, apenas uma porcentagem muito pequena de endereços é mantida como ponto de referência inicial (o que também requer armazenamento); a maioria dos dados é acessada indiretamente usando cálculos de deslocamento (distância em bits dos pontos de referência) e estruturas de dados que definem caminhos de acesso (usando ponteiros) para todos os dados necessários de uma maneira eficaz, otimizada para as operações de acesso de dados necessárias.

Hierarquia de armazenamento de banco de dados

Um banco de dados, enquanto em operação, reside simultaneamente em vários tipos de armazenamento, formando uma hierarquia de armazenamento . Pela natureza dos computadores contemporâneos, a maior parte da parte do banco de dados dentro de um computador que hospeda o DBMS reside (parcialmente replicado) no armazenamento volátil. Os dados (partes do banco de dados) que estão sendo processados ​​/ manipulados residem dentro de um processador, possivelmente nos caches do processador . Esses dados estão sendo lidos / gravados na memória, normalmente por meio de um barramento de computador (até agora, normalmente, componentes de armazenamento voláteis). A memória do computador está comunicando dados (transferidos de / para) armazenamento externo, normalmente por meio de interfaces ou redes de armazenamento padrão (por exemplo, canal de fibra , iSCSI ). Uma matriz de armazenamento , uma unidade de armazenamento externa comum, normalmente tem hierarquia de armazenamento própria, a partir de um cache rápido, geralmente consistindo em DRAM (volátil e rápida) , que é conectada (novamente por meio de interfaces padrão) a drives, possivelmente com velocidades diferentes, como drives flash e drives de disco magnético (não voláteis). As unidades podem ser conectadas a fitas magnéticas , nas quais normalmente as partes menos ativas de um grande banco de dados podem residir ou gerações de backup de banco de dados.

Normalmente, existe uma correlação entre a velocidade de armazenamento e o preço, enquanto o armazenamento mais rápido é geralmente volátil.

Estruturas de dados

Uma estrutura de dados é uma construção abstrata que incorpora dados de uma maneira bem definida. Uma estrutura de dados eficiente permite a manipulação dos dados de maneiras eficientes. A manipulação de dados pode incluir inserção, exclusão, atualização e recuperação de dados em vários modos. Um certo tipo de estrutura de dados pode ser muito eficaz em certas operações e muito ineficaz em outras. Um tipo de estrutura de dados é selecionado no desenvolvimento de DBMS para melhor atender às operações necessárias para os tipos de dados que ele contém. O tipo de estrutura de dados selecionada para uma determinada tarefa normalmente também leva em consideração o tipo de armazenamento em que ela reside (por exemplo, velocidade de acesso, tamanho mínimo do bloco de armazenamento acessado, etc.). Em alguns SGBDs, os administradores de banco de dados têm a flexibilidade de selecionar entre as opções de estruturas de dados para conter os dados do usuário por motivos de desempenho. Às vezes, as estruturas de dados têm parâmetros selecionáveis ​​para ajustar o desempenho do banco de dados.

Os bancos de dados podem armazenar dados em muitos tipos de estrutura de dados. Exemplos comuns são os seguintes:

Orientação e agrupamento de dados

Em contraste com a orientação de linha convencional, os bancos de dados relacionais também podem ser orientados a coluna ou correlacionais na maneira como armazenam dados em qualquer estrutura específica.

Em geral, uma melhoria substancial de desempenho é obtida se diferentes tipos de objetos de banco de dados, que normalmente são utilizados juntos, forem colocados em armazenamento nas proximidades, sendo "agrupados". Isso geralmente permite recuperar os objetos relacionados necessários do armazenamento em um número mínimo de operações de entrada (cada uma às vezes consideravelmente demorada). Mesmo para bancos de dados na memória, o cluster oferece vantagem de desempenho devido à utilização comum de grandes caches para operações de entrada e saída na memória, com comportamento resultante semelhante.

Por exemplo, pode ser benéfico agrupar um registro de um "item" em estoque com todos os seus respectivos registros de "pedido". A decisão de agrupar certos objetos ou não depende das estatísticas de utilização dos objetos, tamanhos de objetos, tamanhos de caches, tipos de armazenamento, etc.

Indexação de banco de dados

A indexação é uma técnica que alguns mecanismos de armazenamento usam para melhorar o desempenho do banco de dados. Os vários tipos de índices compartilham a propriedade comum de reduzir a necessidade de examinar cada entrada ao executar uma consulta. Em grandes bancos de dados, isso pode reduzir o tempo / custo da consulta em ordens de magnitude. A forma mais simples de índice é uma lista ordenada de valores que podem ser pesquisados ​​usando uma pesquisa binária com uma referência adjacente à localização da entrada, análoga ao índice no final de um livro. Os mesmos dados podem ter vários índices (um banco de dados de funcionários pode ser indexado por sobrenome e data de contratação).

Os índices afetam o desempenho, mas não os resultados. Os designers de banco de dados podem adicionar ou remover índices sem alterar a lógica do aplicativo, reduzindo os custos de manutenção conforme o banco de dados cresce e o uso do banco de dados evolui. Os índices podem acelerar o acesso aos dados, mas consomem espaço no banco de dados e devem ser atualizados sempre que os dados são alterados. Os índices, portanto, podem acelerar o acesso aos dados, mas retardar a manutenção dos dados. Essas duas propriedades determinam se um determinado índice vale o custo.

Referências

links externos