Lição 11: Sistema Gerenciador de
Banco de Dados (SGDB)
Banco de Dados (SGDB)
Aprendemos, ao longo das lições, que um banco de dados é uma coleção de dados relacionados, organizados, de forma que os dados possam ser facilmente acessados, gerenciados e atualizados. Os dados são organizados de forma que seja possível encontrar e gerenciar, rapidamente, as informações desejadas. Para ajudar a lembrar, um exemplo simples de um banco de dados pode ser uma lista de nomes em ordem alfabética, como a lista de contatos do WhatsApp, ou uma lista crescente de códigos numéricos, em que cada código representa um item do estoque (DIAS, 2021). Para acessar essas informações, como nome da lista de contatos ou código número de um banco de dados, você, normalmente, precisará de um sistema de gerenciamento de banco de dados, ou simplesmente, SGBD. Dessa forma, o objetivo desta lição é proporcionar a você um conhecimento sobre o Sistema de Gerenciamento de Banco de Dados (SGBD). Ele é um conjunto de softwares responsável pelo gerenciamento de bases de dados. Ao final desta lição, você entenderá e terá maior conhecimento sobre o Sistema Gerenciador de Banco de Dados (SGBD).
Nesse momento, pedirei que você pare um instante e imagine a quantidade de dados que as empresas precisam armazenar diariamente, nos dias atuais. É algo gigantesco e surreal, pois, hoje, tudo é feito por algum aplicativo ou portal via web. Para ajudar na organização e no controle dessa quantidade de dados, as empresas utilizam softwares que ajudam a fazer esse controle do banco de dados, que são os SGBD. Eles possuem várias funcionalidades que ajudam com o acesso, a edição, a consulta e a inserção de dados no banco. Há um tempo, era opcional as empresas usarem um SGBD para gerenciar seus dados, mas, hoje, com o aumento das tecnologias e dos dados circulando, é primordial ter um SGBD eficiente que ajude o DBA (Administrador do banco de dados) a organizar, proteger, editar e acessar as informações da empresa armazenadas no banco de dados (DIAS, 2021).
Imagine que sua mãe está realizando uma transferência via PIX de sua conta bancária para a conta da Paula, sua amiga. Consideraremos que a sua mãe e a Paula possuem o saldo de R$ 2.000,00 em suas contas bancárias. Sua mãe transferirá o valor de R$ 200,00 de sua conta bancária para a conta de Paula. Essencialmente, o que deve ser feito na transação é:
Retirar o valor de R$ 200,00 do saldo de sua mãe, atualizando este novo saldo.
Somar o saldo atual de Paula com o valor de R$ 200, atualizando este novo saldo.
Vejamos um código que exemplifica essa transação:
UPDATE conta SET saldo = saldo – 200 WHERE cliente = ‘Mãe’
UPDATE conta SET saldo = saldo + 200 WHERE cliente = ‘Paula’
O código representa uma única transação, apesar de ter duas linhas. Imagine que, por exemplo, o nome do cliente destinatário (Paula) estiver errado ou não existir no banco, a transação não será efetivada. Sua mãe continuará com seu saldo anterior (ou seja, não terá o débito do valor de R$ 200,00 em sua conta) e Paula não receberá o crédito. Mas, se a transação for finalizada com sucesso, no final, o novo saldo da sua mãe será de R$ 1.800,00 e de Paula, R$ 2.200,00.
O modelo de banco de dados mais usado é o relacional, que usa relações e conjuntos para armazenar os dados. Seus dados são organizados em tabelas e, para acessar as informações de um banco de dados, normalmente, usa-se um Sistema de Gerenciamento de Banco de Dados (SGBD). Este contém os principais instrumentos para controlar e gerenciar o banco de dados (DIAS, 2021).
Um SGBD é um software que permite a criação, definição e manipulação de banco de dados, permitindo aos usuários armazenar, processar e analisar dados com facilidade. O SGBD fornece uma ferramenta para realizar várias operações, como criar banco de dados, armazenar dados nele, atualizar dados, criar tabelas no banco de dados e muito mais. O software SGBD funciona, principalmente, como uma interface entre o usuário final e o banco de dados, gerenciando simultaneamente os dados, o mecanismo do banco de dados e o esquema do banco de dados para facilitar a organização e a manipulação dos dados (DIAS, 2021, p. 9).
As funções do SGBD podem variar, mas os recursos e a capacidades do SGBD de uso geral, normalmente, incluem (DIAS, 2021):
Catálogo acessível ao usuário que descreva os metadados.
Sistema de gerenciamento de biblioteca SGBD.
Abstração e independência de dados.
Opções para a segurança de dados.
Registro e auditoria das atividades realizadas.
Suporte para simultaneidade e transações.
Suporte para autorização de acesso.
Suporte de acesso de locais remotos.
Suporte de recuperação de dados SGBD em caso de danos.
Aplicação de restrições, para garantir que os dados sigam certas regras.[1]
Além disso, o SGBD fornece proteção e segurança para os bancos de dados, mantendo a consistência dos dados no caso de ter vários usuários conectados. Relembremos: existem dois tipos de SGBDs: os relacionais (que usam SQL) e os não relacionais (NoSQL). São diferentes em relação à recuperação, à distribuição e à forma como ocorre o processamento de dados (DIAS, 2021).
Os Bancos de Dados Relacionais (SGBDR) são conhecidos por usarem a linguagem SQL, e seus dados aparecem como tabelas de linhas e colunas e possuem uma estrutura rígida e com dependências bem definidas. Para Dias (2021, p. 10), “devido à estrutura integrada e ao sistema de armazenamento de dados, os bancos de dados SQL não requerem muito esforço de engenharia para torná-los bem protegidos”. Eles são considerados boa escolha para a construção de software que sejam complexos, em que qualquer interação gera uma série de consequências. Lembra da sigla ACID (atomicidade, consistência, isolamento e durabilidade)? Um dos fundamentos do SQL é a conformidade com o ACID, principalmente se forem criados aplicativos de comércio eletrônico ou aplicativos financeiros que tenham a integridade considerada crítica.
A escalabilidade pode ser um desafio com bancos de dados SQL. O dimensionamento de um banco de dados SQL entre vários servidores (dimensionamento horizontal) exige esforços adicionais de engenharia, sendo um ponto fraco deste tipo de banco. Em vez disso, os bancos de dados SQL são, geralmente, escalados verticalmente, ou seja, adicionando mais poder de computação a um servidor. Entre os principais bancos de dados SQL, destacam-se: SQL Server, Oracle, MySQL, MariaDB e PostgreSQL (DIAS, 2021, p. 11).
Já os Bancos de Dados Não Relacionais (NoSQL) não estão limitados a uma estrutura de tabela, pois esse tipo de sistema de gerenciamento de banco de dados é considerado orientado a documentos. Por exemplo, dados não estruturados, como textos, artigos, fotos, vídeos, publicações em redes sociais, áudios e outros, podem ser coletados em um único documento (DIAS, 2021).
Nesse banco de dados, a consulta aos dados é simples, mas nem sempre são classificados em linhas e colunas, geralmente, são escalados horizontalmente com a adição de novos servidores. Os bancos de dados NoSQL estão se tornando mais populares a cada dia, sendo utilizados por grandes nomes, como Facebook, Netflix, Twitter, Google, entre outros. Os bancos de dados NoSQL são divididos em quatro tipos:
Banco de dados Modelo Chave-Valor.
Banco de dados Modelo Colunas.
Banco de dados Modelo Grafos.
Banco de dados Modelo Documentos.
Agora, entraremos nos conceitos sobre o Processamento de Transações. Os SGBDs fazem parte de uma classe de sistemas, que chamamos de Sistemas de Processamento de Transações Online, ou OLTP (OnLine Transaction Processing), que são um tipo de processamento de dados que consiste na execução de várias transações que ocorrem simultaneamente. Como exemplo, temos as transações bancárias que são realizadas online, as compras online etc.
E o que é uma transação? Para Dias (2021, p. 21), ela representa uma “série de operações realizadas em um SGBD em relação a um banco de dados de modo que, uma vez que a transação é concluída, os dados são deixados em um estado confiável e também consistente”. E, se, em algum momento, alguma etapa da transação falhar, todas as etapas serão revertidas, ou seja, retrocedidas, para que a integridade dos dados possa ser mantida (DIAS, 2021).
Para você entender melhor o que é uma transação, imagine que esteja fazendo uma compra em uma loja virtual. Você escolhe os produtos e realiza um pedido de venda. Esse pedido consiste em uma série de eventos, como: inserção dos produtos, aceitação do pedido, manutenção dos dados no estoque (verificar se há produto disponível), informações de endereço e comprovação de pagamento, entrega, etc. A transação, nesse exemplo, o pedido de venda, só será efetivada quando todos os eventos forem processados. Caso ocorra uma falha na aceitação do pedido de venda ou na comprovação do pagamento, a transação não será efetivada. São muitos eventos, mas a principal característica é que todos eles são tratados como um todo.
O processamento da transação é projetado para manter a integridade do banco de dados e a consistência dos itens de dados relacionados em um estado conhecido (DIAS, 2021). Para Dias (2021, p. 23), as transações, também, “podem ocorrer em outros ambientes, por exemplo, entre uma organização e sua equipe por meio do aplicativo de Recursos Humanos, em marketing, controle de produção e em outros lugares”, e esses aplicativos, muitas vezes, são implementados sobre bancos de dados relacionais.
Os SGBDs foram desenvolvidos para oferecer suporte ao processamento de transações, entretanto, não são os únicos meios para o processamento de transações por motivos históricos e por motivos técnicos. Além de aplicativos transacionais baseados em dados puramente relacionais, os bancos de dados relacionais incorporaram XML e recursos orientados a objetos ao longo dos anos para que ambientes transacionais híbridos (que requerem o uso dessas tecnologias junto com dados relacionais) também possam oferecer suporte ao processamento de transações, embora XML puro e os bancos de dados orientados a objetos continuem a fazer parte do mercado de aplicativos especializados (DIAS, 2021, p. 23).
Falaremos, agora, sobre as Propriedades ACID (atomicidade, consistência, isolamento e durabilidade), que garantem que as transações sejam processadas de forma confiável, pois, além do desempenho e outras considerações generalizadas, essas propriedades são os principais requisitos para bancos de dados de processamento de transações. Veja, a seguir, a explicação de cada uma das propriedades ACID:
No exemplo apresentado no case da conta bancária, se alguma das instruções falhar, toda a transação deve ser abortada e retrocedida (atomicidade). Agora, vamos supor que a transação falhe na segunda instrução, ou seja, no momento de atualizar o saldo de Paula, não somando em sua conta os R$ 200,00 e a transação não seja revertida. O banco de dados ficará inconsistente, pois a soma do dinheiro de sua mãe e da Paula, após a transação, não será igual à quantidade de dinheiro que havia antes da transação (consistência). Se, no exato momento em que sua mãe estiver fazendo o PIX para a Paula, a mãe de Paula acessar a conta para ver o saldo, caso a transação de transferência, ainda, não tenha sido finalizada, o saldo que ela verá será de R$ 2.000,00, mesmo que a sua mãe já tenha solicitado a transferência dos R$ 200,00, afinal, a transação, ainda, não foi finalizada.
Logo, a transação de transferência entre as amigas é isolada da transação de visualização de saldo realizada pela mãe de Paula (isolamento). Se a conta de Paula possui R$ 2.200,00, essas informações não devem desaparecer em caso de falha do sistema, queda de energia ou falha de software (durabilidade) (DIAS, 2021). Assim, podemos observar que as propriedades ACID procuram garantir que as transações dos bancos de dados sejam válidas, mesmo que ocorram falhas ou interrupções de energia elétrica, falha de hardware, falha de software, entre outras situações que possam a vir ocorrer (DIAS, 2021).
Para que você possa fixar bem o conteúdo sobre os SGBDs e entender que eles fornecem proteção e segurança para os bancos de dados, mantendo a consistência dos dados, no caso de ter vários usuários conectados, e sobre as propriedades ACID, voltaremos ao exemplo do case. Imagine que a conta corrente da sua mãe não tem o saldo necessário de R$ 200,00 para realizar o PIX para a amiga Paula. O que acontecerá? Ocorrerá uma falha na transação? Será possível executar a operação? Ou a transação será abortada? Agora, é com você!
DIAS, A. S. Administração de bancos de dados. São Paulo: Saraiva, 2021.