computador representando banco de dados

5 bancos de dados gratuitos para você conhecer

Quando trabalhamos com software, é muito importante escolhermos a ferramenta certa, de acordo com o problema que queremos resolver. Uma das decisões mais importantes no desenvolvimento web é a escolha do banco de dados.

Bom, antes de começar o conteúdo em si, gostaria de compartilhar rapidamente minha história  com a programação. Meu nome é Guilherme Gervasio e desde pequeno sempre fui apaixonado por tecnologia.

Aprendi a programar aos 18 anos usando C++ para resolver problemas relacionados a métodos e modelos matemáticos. Gostei tanto, que resolvi trabalhar com software para o resto da vida. A partir daí comecei trilhar o caminho do desenvolvimento web.

Durante minha carreira trabalhei em diversas startups seguindo sempre metodologias ágeis e fora do horário, adoro contribuir para projetos open-source como o IPFS.

Atualmente, faço parte do time de ensino da Kenzie Academy Brasil.  Sou o instrutor de ensino do quarto módulo, onde os alunos mergulham no back end com o framework Django.

Quando comecei a trabalhar com software, eu não tinha muita noção das diferenças entre os bancos. Para mim era só uma caixa preta onde era possível ler e escrever dados. Porém, com o passar do tempo, eu percebi que era muito vantajoso investir no aprendizado dessas tecnologias.

Normalmente, conforme os projetos ganham usuários, existe uma demanda crescente pela eficiência no banco de dados. Isso acontece porque a otimização prematura não é uma boa ideia e as primeiras implementações servem, muitas vezes, apenas para tirar a aplicação do papel.

Isso é ótimo, porém conforme o tempo passa, existe uma tendência a sobrecarregar o banco de alguma forma, gerando lentidão e custos mais altos de infraestrutura. O que pode ser bem ruim, concorda?

Saber equilibrar bem entre as soluções eficazes e eficientes é uma habilidade fundamental para o engenheiro de software. Para atingir esse equilíbrio é muito importante conhecer bem as ferramentas e saber quais suas vantagens e limitações.

O que considerar antes de escolher um banco de dados?

Aqui vão alguns pontos importantes que podem te ajudar nessa escolha:
– Os dados têm uma estrutura fixa ?

– É necessário flexibilidade para acomodar diferentes formatos dos dados?

– Será necessário processar grandes volumes de informação ?

– Atomicidade é fundamental? Atomicidade é uma das propriedades das transações no banco com características ACID. Numa transação atômica, temos uma situação de tudo ou nada, ou seja, todas as operações ocorrem conforme as instruções. Se alguma das instruções falhar, todos os comandos são revertidos. Saiba mais sobre ACID em: https://www.ibm.com/support/knowledgecenter/SSGMCP_5.4.0/product-overview/acid.html

– Os dados têm alta volatilidade (são alterados frequentemente) ?

– Qual é o nível de tolerância com dados inválidos ?

Nesse contexto, vamos explorar algumas características de diferentes bancos para entender melhor sua utilidade, em diferentes cenários:

Qual banco de dados escolher?

Redis

É um tipo de banco que trabalha com estruturas simples, muito similares a um objeto do JavaScript ou dicionário do Python. Nele você pode salvar dados usando chaves únicas. Os comandos SET e GET escrevem e leem dados numa determinada key, respectivamente.

No caso do Redis, todas as informações ficam presentes na memória RAM da máquina.

Essa é uma característica diferente dos outros tipos de bancos que vamos abordar nesse post, que utilizam um HDD ou SSD para fazer a persistência. Apesar desse fator limitar a quantidade de dados que podemos salvar, (porque as memórias RAM não têm tanto espaço) essa opção traz uma grande velocidade às operações de escrita e leitura.

Usar esse tipo de banco como opção de armazenamento principal seria algo bastante raro. Normalmente, ele é utilizado juntamente com outros bancos e realiza um papel de cache. Basicamente, fazer um cache significa evitar operações de leitura e escrita no banco principal, através de uma cópia que é mantida na memória RAM. Isso é vantajoso porque algumas operações podem ser computacionalmente caras e o cache ajuda a dividir a carga do banco.

Além de ser usado para implementar caching, o Redis também pode ser uma boa opção para aplicações que fornecem dados em tempo real como sistemas de pontuação em videogames.

MongoDB

MongoDB é um tipo de banco NoSQL, ou seja, não é relacional. Foi feito para salvar dados de uma maneira flexível, utilizado documentos semelhantes a JSON. Isso significa que os campos podem variar de entre os documentos e que a estrutura pode ser alterada mais facilmente, conforme o desenvolvimento do app.

O MongoDB é um banco de dados distribuído e 100% open source. Portanto alta disponibilidade e escalabilidade horizontal são features notáveis e fáceis de usar.

SQLite

SQLite é um database engine que não utiliza servidores nem requer qualquer tipo de configuração de ambiente. O projeto começou em 2000. Seu código é 100% open source e é a solução em banco de dados mais utilizada pela indústria de software. A grande maioria sistemas operacionais rodando em smartphones utilizam o SQLite e ele também pode ser frequentemente encontrado em todo o tipo de software embarcado.

Por exemplo: aplicações rodando em automóveis, aviões, TVs, equipamentos multimídia, IoT, etc.

Ao contrário da maioria dos outros bancos, o funcionamento do SQLite não requer um processo de servidor. O SQLite lê e escreve diretamente nos arquivos do sistema. Dessa forma, é possível construir um banco relacional (SQL) completo com tabelas, índices, triggers e views num único arquivo que pode ser lido em diversos tipos de plataforma.

O SQLite é uma solução perfeita para sistemas embarcados considerando a sua simplicidade na configuração e também tolerância a falhas elétricas ou perdas de sinal. É fácil fazer seu setup, e por isso alguns frameworks web como o Django e o Flask criam esse tipo de banco automaticamente.

Porém, nesses casos, a ideia é utilizar o banco SQLite somente no ambiente local de desenvolvimento.

Utilizar bancos SQLite em aplicações web pode trazer alguns problemas. Para arquiteturas cliente/servidor pode não ser uma boa opção por conta de bugs relacionados ao file locking em sistemas de arquivo em rede (presentes tanto em máquinas Unix quanto Windows).

Basicamente, isso significa que se dois ou mais clientes alteram o mesmo arquivo simultaneamente, não há como garantir que essa operação seja feita de uma maneira segura, podendo resultar em dados corrompidos.

Portanto, quando o banco é acessado diretamente (sem intermédio de um servidor) e por vários clientes ao mesmo tempo, é melhor evitar a utilização do SQLite.

PostgreSQL

PostgreSQL é um ORDBMS – um gestor de banco de dados misto que funciona tanto com objetos quanto com dados relacionais. É o resultado de um projeto open source que tem mais de 30 anos de atividade.

Em termos de arquitetura, o PostgreSQL utiliza um esquema cliente / servidor. Cada acesso ao banco é possível graças a alguns processos que cooperam entre si:

  • Um processo de servidor que faz a gestão dos arquivos do banco, aceita conexões de clientes e que executa ações no banco de acordo com os sinais enviados pelo cliente. O nome desse servidor é “postgres”;
  • Um cliente (aplicação) que envia o sinal para executar alguma ação. Existem vários tipos de clientes: back-ends web, alguma interface gráfica para explorar o banco, etc.

Esses processos trocam informação através de uma conexão TCP/IP. O servidor consegue aceitar várias conexões concorrentes. Para tal, para cada conexão é feito um “fork” do processo de servidor (ou seja, é criada uma nova instância). Desse ponto em diante, o cliente e o novo processo se comunicam sem que haja intervenção do processo original. Dessa forma, o processo original (mestre) está sempre rodando e esperando por conexões vindas do cliente.

O PostgreSQL ganhou uma reputação forte pela sua arquitetura, robustez, integridade de dados e flexibilidade. É possível rodá-lo na maioria dos sistemas operacionais e tem plugins poderosas como PostGIS que ajudam a salvar dados referentes a posicionamento geoespacial. Além disso ele permite definir novos tipos de dados e construir funções personalizadas para processar fazer filtros e processamentos específicos.

MySQL

Ao contrário do PostgreSQL, o MySQL é um banco mais simples e puramente relacional. Porém é rápido e robusto. Embora também não tenha tanta flexibilidade é bastante famoso, principalmente porque é parte integral da LAMP stack (Linux, Apache HTTP Server, MySQL e PHP).

Além disso, algumas soluções de CMS como o Drupal, e WordPress dependem do MySQL. Portanto ele acaba sendo bastante popular. Também é um projeto open source, cuja manutenção é feita principalmente pela Oracle.

A performance do banco é sempre um fator muito importante. Os desenvolvedores do MySQL escolheram não implementar algumas features do SQL, porém priorizaram a velocidade.

Embora outros bancos cheguem perto da sua velocidade, o MySQL ainda tem a reputação de ser um banco extremamente rápido. Além disso, a escalabilidade horizontal do MySQL (replicação de dados) continua sendo uma vantagem.

Conclusão

Deu pra perceber que existem diversos bancos de dados por aí né? Esses foram apenas 5 que escolhi compartilhar com você. Cada um tem sua particularidade, mas o que realmente importante é o que você busca com eles e se eles atendem a sua real necessidade.

Se você gostou desse conteúdo e gostaria de entrar na área de programação, eu recomendo você conhecer mais sobre a Kenzie Academy Brasil.

Aproveite e já se inscreva gratuitamente na Experiência Kenzie: Introdução à Programação com JavaScript: https://participe.kenzie.com.br/curso-javascript

Um curso gratuito, com mais de 80 horas de conteúdo para você assistir quando quiser, suporte para tirar dúvidas em tempo real e acesso exclusivo a uma comunidade no slack para receber conteúdos sobre carreira, tecnologia e programação, além de interagir com os outros participantes.

Inscreva-se agora e comece seu futuro hoje!

Leia também:

0
Escreva o primeiro comentário

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *