Bancos de dados são a parte mais fundamental da programação. No entanto, você sabe quais são seus tipos e para que servem? Descubra aqui!
Grande parte do desenvolvimento da humanidade ocorreu devido à necessidade de armazenar dados. Informações são cruciais para nós: desde as tábuas dos Dez Mandamentos até a contagem de cabeças de gado em uma fazenda, estamos sempre registrando aquilo que é importante. E foi assim que conseguimos acumular mais conhecimento: escrevendo o que sabemos para que as gerações posteriores pudessem conhecer também.
E, ao vir para o meio digital, essa necessidade também se mostrou urgente. Podemos utilizar arquivos no Excel ou no Word para armazenar algumas coisas, como uma tabela de dados pessoais, escrever alguns livros ou coisas do tipo. No entanto, quando precisamos de armazenar muitas informações de muitas pessoas e torná-las facilmente acessíveis, é preciso de mais do que tabelas. Foi assim que surgiram os bancos de dados: eles servem como grandes armazéns de dados que podem ser usados por programas ou por outras pessoas.
E não é errado dizer que eles são a espinha dorsal da internet. Pense que até mesmo os códigos de aplicações têm de ser salvos em nuvem para que se executem depois! E são os bancos de dados que sustentam tudo isso. Dessa forma, podemos defini-los da seguinte forma:
O que são bancos de dados?
Conceitualmente, bancos de dados são sistemas capazes de coletar, armazenar e prover informações de diversos tipos. Eles funcionam em servidores físicos, e, sendo assim, é preciso que a informação tenha um meio físico para sua hospedagem. Alguns exemplos simples são, por exemplo, HD’s de computadores pessoais; no entanto, podemos escalar esse conceito até os grandes data centers das big techs.
E, com as grandes massas de dados, podemos extrair informações. A diferença é que, enquanto aquele é o dado bruto, apenas uma série de caracteres, a informação é algo que tem sentido em si mesmo e que traz valor para o usuário. É, portanto, o dado processado: ou por pessoas ou por máquinas. Além disso, por vezes, é preciso armazenar metadados: ou seja, dados que explicam outros dados. Expliquemos melhor:
Por exemplo, quando você faz uma requisição no Google para fazer uma pesquisa, além dos dados que você quer pesquisar você envia também outros dados sobre seu acesso. Dentre eles, temos o endereço de IP da sua máquina, o horário da busca, há quanto tempo você está utilizando o website, dentre outras tantas informações que passamos por debaixo dos panos. É por meio destes que as grandes empresas entendem melhor a experiência de seus usuários ao utilizar as suas aplicações, desta forma trabalhando para uma melhor usabilidade.
O primeiro banco de dados teve seu lançamento no ano de 1960. De lá para cá, ao longo das décadas, eles passaram por diversas evoluções até chegar nos diferentes tipos de bancos de dados que temos hoje.
Os princípios do ACID
Um banco de dados, para poder merecer o seu nome, deve garantir que as suas transações internas sigam uma lista com quatro princípios: os chamados princípios ACID. Eles são simples em conceito, mas indispensáveis para o bom funcionamento de um banco. São eles:
- Atomicidade: Essa propriedade ordena que todas as transações sejam atômicas (indivisíveis), ou seja, que todas as transações sejam plenamente executadas. Isso implica que, caso haja algum erro em uma única etapa das transações a em progresso, todas as demais devem resultar em erro, quer seja a primeira quer seja a última.
- Consistência: A transação deve levar o banco de dados de um estado de consistência para outro estado de consistência, ou seja, é necessário que se respeitem as regras de funcionamento do banco de dados. Algumas dessas regras são os tipos de dados, as chaves, as restrições programadas pelo desenvolvedor etc.
- Isolamento: Pede que as transações ocorrem em isolamento, de modo que uma não interfira na outra. É crucial em bancos que serão utilizados por muitos usuários ao mesmo tempo, onde poderia ocorrer mal funcionamento caso uma transferência tivesse algo que ver com outra.
- Durabilidade: Implica em que uma transação, após sua conclusão, é permanente. A modificação que ela faz no banco de dados só pode sofrer alterações vindas de outra transação bem-sucedida. Do contrário, o que se gravou no banco ficará assim indeterminadamente.
No entanto, apesar de serem princípios básicos dos bancos, nem todos os tipos seguem-nos estritamente. Os bancos de dados do tipo NoSQL, como o MongoDB, acabam fugindo de algumas dessas regras em prol da praticidade em que eles se sustentam.
Quais são os tipos de bancos de dados?
Ao longo do desenvolvimento dos bancos de dados, foram criados vários tipos. Cada um supre diferentes necessidades de uso para as mais variadas aplicações, alguns com mais sucesso e outros com menos. No entanto, todos eles são úteis e é bom conhecê-los:
Bancos de dados relacionais
Os bancos de dados relacionais são o tipo mais comum de se encontrar atualmente devido à sua ampla utilidade. Quase todo problema que se tiver se resolverá com bancos de dados relacionais, e alguns deles são os mais famosos do mercado, como o Oracle Database, o MySQL e o Microsoft SQL Server, que são soluções proprietárias. Há também algumas alternativas open source, como o PostgreSQL, o MariaDB e o Apache Hive.
Por via de regra, eles seguem todos os princípios do ACID citados acima, e ele funciona com uma estrutura bastante simples. O banco de dados se divide em tabelas, e cada tabela tem suas colunas e atributos. Uma linha forma uma entrada no banco de dados, e as linhas devem preencher todos os dados de cada uma das colunas com atributos válidos. Podemos dizer que ele funciona como uma tabela do Excel, sendo que automatizada e de forma que o usuário não precisa se preocupar com preencher tudo.
Outra coisa interessante dos bancos de dados relacionais é a sua capacidade de estabelecer relacionamentos entre os dados (como o nome sugere, aliás). É através de um banco desse tipo que é possível unir tabelas, dando significado às informações. Por exemplo, em um banco de uma farmácia, é possível relacionar os pedidos, os endereços, os clientes e os remédios, tudo isso em tabelas diferentes mas operando em conjunto.
O funcionamento desse tipo de banco de dados depende diretamente da chamada SQL (System Query Language). Nós já escrevemos um artigo anteriormente sobre isso, e você pode ler clicando aqui.
Bancos de dados não-relacionais
Os bancos de dados não-relacionais servem para armazenar tudo aquilo que não entra em uma tabela. Nisso, temos como exemplo imagens, vídeos, áudios, arquivos, coisas desse tipo: esses objetos não se encaixam em planilhas do Excel, e, por isso, também não entram em bancos de dados relacionais. Por isso, ele não pede que haja relacionamento entre as diferentes entradas, servindo apenas como uma espécie de cesto onde pode-se jogar, indiscriminadamente, tudo o que se quiser salvar.
Apesar da facilidade conferida, isso apresenta também um perigo: é necessário tomar bastante cuidado antes de inserir alguma coisa em um banco de dados. Como ele não faz checagem do tipo de arquivo e nem coisas assim, além de não seguir todos os princípios do ACID, eles tudo permitem, o que pode abrir brechas para usuários maliciosos infectarem sistemas inteiros de uma vez. É preciso fazer validações de dados antes de permiti-los entrar no banco!
No entanto, eles são bancos bastante eficientes e fáceis de se usar, e, por isso, acabam recebendo bastante espaço no mercado. E, mesmo dentre eles, há bastante diferença entre os tipos de bancos: alguns armazenam documentos puros, outros em tuplas, outros em método chave-valor etc. Exemplos populares de bancos de dados não-relacionais são, além do já citado MongoDB, o Redis, o Cassandra, o Oracle NoSQL Database, o Apache River etc.
Bancos de dados orientados a objetos
Como o nome sugere, esse tipo de banco se utiliza da orientação a objetos nas informações a serem salvas. As informações são salvas em blocos com identificadores, sem terem uma estrutura definida, como ocorre nos bancos de dados relacionais (que forma tabelas com linhas e colunas).
Caso você conheça alguma linguagem orientada a objeto, é fácil de conceber a ideia: você cria o tipo do objeto, lhe determina uma quantidade de atributos desejada, e depois cria instâncias de objetos que você irá armazenar no banco de dados. A ideia é a mesma. Além disso, ele atende a todos os princípios da orientação a objeto; por isso, obviamente, é bastante prático de se usar em projetos com linguagens orientadas a objeto, como Java ou C++. Alguns exemplos famosos são o GemStone/S, o ObjectDB, o Versant, dentre outros.
Bancos de dados relacionais-orientados a objetos
Os chamados object-relational databases são híbridos entre os orientados a objetos e os relacionais. Assim sendo, eles apresentam a funcionalidade do primeiro de criar objetos e de seguir os preceitos deles, como encapsulamento, herança e outras coisas do tipo, enquanto que mantém o sistema de tabelas com colunas e linhas e também o uso de linguagens SQL.
É, portanto, uma opção que une o melhor de ambos os mundos. Alguns dos servidores que implementam o suporte para este tipo de banco de dados são IBM Db2, Oracle database e Microsoft SQL Server, alguns com mais sucesso e outro com menos. Apesar da proposta ser interessante, é inegável que ela é pouco utilizada na indústria. Raríssimo se tem algum caso de necessidade de uso desta solução, e ela parece ter caído no esquecimento.
Banco de dados autônomo
Este é o tipo de banco de dados ideal para sistemas grandes demais para seres humanos. Desta forma, ele é mantido por máquinas, por meio de machine learning. Assim, toda a manutenção, desde backups até consultas e queries são feitas por inteligências artificiais, de forma inteiramente automática. Daí vem o nome de banco de dados autônomo.
É uma solução extremamente sofisticada e que requer um amplo aprendizado de máquina para que esta possa entender o que fazer. Desta forma, só é viável para grandes empresas que tenham não só o recurso como também o know-how da implementação. No entanto, uma vez que esta integração é feita, há um grande ganho de eficiência e velocidade, dado que o banco irá se manter por conta própria.
Conclusão
O uso de bancos de dados é realmente uma das bases de toda a computação, e, com isso, não seria exagero dizer que eles sustentam a vida moderna. É por isso que há tantos problemas quando uma base de dados de uma empresa sofre um vazamento: muitas informações de usuários se espalham. Deve-se, então, criptografar informações sensíveis e procurar o máximo de segurança de dados possível. Além disso, deve-se atentar para a LGPD (Lei de Garantia de Proteção de Dados) para a manutenção da privacidade, já que, por vezes, informações extremamente pessoais ficam armazenadas em sistemas de terceiros.
É, então, um trabalho que todo desenvolvedor deve ao menos conhecer e entender como funciona. O SQL é uma linguagem que se assemelha bastante com o inglês, e, na maior parte do tempo, você não vai precisar se aprofundar muito. O dev back-end em especial precisa demais do conhecimento de banco de dados, já que ele normalmente será o responsável por modelar todo o funcionamento deste. Existem, também, diversas carreiras que se especializam no domínio desses bancos:
Para ilustrar isso, demos alguns exemplos: um analista de banco de dados ganha, em média, R$4.696, segundo a revista Love Mondays, mas esse salário pode variar para até R$10.294. Um cientista de dados ganha, em média, R$8.361, segundo pesquisa do Glassdoor. E, segundo essa outra pesquisa, o salário inicial de um desenvolvedor back-end está na faixa dos R$5.216; com isso, é notável que essas áreas promovem legítimas mudanças de vidas.
Então, no geral, banco de dados não só é uma das bases de toda a internet e um dos conhecimentos principais para todo o dev, como também uma carreira bastante promissora que se pode seguir caso haja uma identificação.