Fernando Jorge Mota

SGBDs – O que são, o que fazem e alguns fatos importantes sobre eles

Praticamente toda aplicação criada hoje precisa armazenar informações de algum jeito. Entretanto, lidar com armazenamento de informações não é algo exatamente simples, pois é necessário tratar inúmeros problemas, como modificação concorrente de dados, criação de índices para realização de consultas mais eficiente, leitura dos dados no disco de maneira eficiente, compressão de dados (em alguns casos), cache das consultas para consultas muito frequentes, e também garantir que só para citar alguns dos casos de uso.  Hoje, apresentaremos alguns exemplos de SGBDs, o que são, numa definição mais precisa, e alguns exemplos que você pode encontrar facilmente na web e dos quais falaremos mais em outros posts aqui no blog.

Afinal, o que é um SGBD?

Para muitos, um SGBD, ou sistema gerenciador de banco de dados, é apenas um software "que armazena dados".  Não está errado definir assim, mas...é muito simplista para o que esses softwares tem que fazer com extrema precisão e cuidado para garantir que as consultas, sejam escritas, sejam atualizações, não sejam perdidas por algum eventual problema relacionado aos variados componentes tanto do computador quanto da rede. Um exemplo é o uso do disco (seja ele HD ou SSD, aqui): Quando você escreve um dado no disco, normalmente o sistema operacional, quando te diz que está "TUDO OK" com a escrita, está apenas dizendo que bem...ele recebeu aquela atualização..Mas, isso não quer dizer que o dado foi efetivamente escrito no disco. Para isso, existe outra chamada (que varia de sistema operacional para sistema operacional) e que, essa sim, força o sistema operacional a salvar o dado fisicamente no disco.

Por causa disso e de outros probleminhas é que SGBDs normalmente passam por inúmeros testes para garantir que está tudo ok e seguro. Um exemplo disso é que bancos de dados precisam garantir segurança, e para garantir isso da melhor forma possível, é necessário, além da proteção por usuário e senha, suporte a permissão de acesso e também criptografia.

Mas...claro que esses não são as únicas coisas com o qual SGBDs precisam se preocupar pois, além de gravar dados, esse tipo de sistema também precisa ler dados, e o principal: LER DADOS RÁPIDO! Mas..ler dados pode ser extremamente ineficiente caso você não tenha salvo eles num formato adequado para as consultas que pretende fazer. Mas...como descobrir que formato adequado é esse? Simples! Com o uso de indices, que permitem armazenar os dados em um formato especial no qual apenas os dados das colunas indexadas são armazenadas, evitando, assim, que todas as colunas precisem ser pesquisadas para atender a consulta.

Mas... Se índices fazem uma cópia dos dados da colunas indexadas? Aí é outra tarefa para os SGDBs, que ainda precisam descobrir quando usar e quando não usar um determinado índice para atender uma determinada consulta.

Já dá para ver que SGBDs são bem complexos, né? Isso porque nem mencionei ainda que tudo isso ainda deve ser acompanhado de... Concorrência. Pois afinal um SGBD não pode se reservar a atender apenas uma consulta por vez a qualquer momento do tempo, né? Imagina só se você não pudesse postar uma foto no Facebook porque tem alguém em algum lugar do mundo postando? Ia ser meio louco o tamanho correto da fila, certo? Pois então, por isso que SGBDs tem que lidar com concorrência.

Mas.. Concorrência não é algo simples de lidar. O que fazer se dois ou mais processos tentam modificar o mesmo registro ao mesmo tempo? Tem que garantir consistência aqui também. E se um processo manda uma consulta buscando por um registro no exato momento que ele está sendo apagado? É, não é coisa simples de lidar.

O que eu quero mostrar com tudo isso é que SGBDs tendem a ser super complexos. São inúmeras questões pra lidar, muito mais do que eu consigo listar num único Post aqui no Blog. Pra variar, você pode ver que SGBDs realmente não podem ser em nada comparados com aquele sistema de armazenamento em flat file (ou seja, que pega um dado, salva em um arquivo de forma estruturada e trabalha com ele de maneira básica) que todo programador curioso já criou alguma vida na vida, e que o sistema como um todo é muito mais complexo do que somente um sistema qualquer que "armazena dados".

Tipos de SGBDs

Existem vários tipos de SGBDs. E um "tipo" não necessariamente exclui o outro (na verdade, está mais para "característica" do que para tipo, mas preferi chamar assim para simplificar), por exemplo, um banco de dados pode ser relacional e não-distribuído ao mesmo tempo. Ou pode ser orientado a documentos e distribuído, por exemplo. Veja a lista abaixo:

Obviamente, há vários outros tipos de SGBDs, mas já dá para ter uma noção de que trata-se de uma área de software muito diversificada, e portanto dois softwares, ambos caracterizados como SGBDs, podem muito bem ser totalmente diferentes um do outro.

Exemplos de SGBDs

Alguns exemplos válidos de SGBDs (dos quais falaremos no futuro aqui no blog, acompanhe para não perder as novidades) são:

Novamente, a lista de SGBDs conhecidos é muito grande. E portanto resolvi mencionar apenas alguns exemplos aqui, de tipos mais variados, para que você possa ter uma simples ideia da variedade de SGBDs que podem ser encontrados na internet.

Por último, quero atentar apenas para dois fatos a respeito da nomenclatura do SGBD:

Bom, a principio é isso. Como este post é focado no conceito de SGBD, não há, dessa vez, links para documentação/download/repositórios. Deixo apenas o pedido para que, para quaisquer dúvidas, comentários ou sugestões, que você sinta-se a vontade para mandar um comentário para este post. \o/

Ah, e se você curtiu, não se esqueça de acompanhar o blog para não perder os próximos posts. Até a próxima! 🙂

PS: Esse é o meu primeiro post de conceitos aqui no blog. O que você achou? Manda nos comentários! Sua opinião é muito bem vinda aqui. =)

Gostou do conteúdo desse post? Apoie o blog contribuindo a partir de R$1/mês através da nossa página no Apoia.se! Isso me ajudará a manter o blog no ar, além de trazer mais coisas legais para vocês! Obrigado desde já! 😀