Vamos falar sobre Banco de Dados

  Eu decidi evoluir meu conhecimento técnico acerca de Banco de Dados, e resolvi começar revisando alguns conceitos básicos, porém importantes para o que virá a seguir. Então, vamos lá.

O que é um Banco de Dados?

Conceitualmente, um banco de dados (BD), é uma coleção organizada de informações – ou dados – estruturadas, normalmente armazenadas eletronicamente em um sistema de computador. Um BD geralmente é controlado por um Sistema de Gerenciamento de Banco de Dados (SGBD), falaremos dele a seguir. De forma prática, seguindo o conceito acima, podemos considerar como BD uma lista telefônica, por exemplo. Certamente você é capaz de pensar em outros exemplos que são uma coleção organizada de informações bem estruturadas e, por essa razão, podem ser consideradas um Banco de Dados.

SGBD ou DBMS?

Bem, uma coisa tem relação direta com a outra. SGBD (Sistema de Gerenciamento de Banco de Dados), é um software para gestão de bases de dados que permite criar, modificar, inserir e remover elementos. O termo tem sua origem do inglês Data Base Management System (DBMS). Em suma, ele é responsável por toda a gestão do banco de dados. Podemos citar como exemplos: Oracle, SQL Server, DB2, PostgreSQL, MySQL e muitos outros. Eu sei, isso para mim foi uma surpresa também, o que eu sempre chamei de banco de dados, na realidade, é um SGBD.

Arquitetura de Software

Não dá para seguir falando de Banco de Dados antes de entendermos alguns assuntos correlatos, dentre eles, um conceito importante sobre Arquitetura de Software é o Padrão MVC (Model, View, Controller). Na camada View, temos o que o usuário vê. Na camada Controller, processamos as regras do negócio. Na camada Model, encontramos as classes modelos que são simples e representam o objeto, como Pessoa, Cliente, Carro, etc. As classes modelos representam tabelas do banco de dados. Esse assunto é muito mais profundo do que eu abordei aqui, mas é uma base importante para seguirmos entendendo cada vez mais o funcionamento de todo o ecossistema de desenvolvimento de Software.





Tipagem dos Dados e Performance

A tipagem correta dos dados está diretamente relacionada a uma melhor performance do nosso BD. Sabemos os tipos de dados, em sua maioria, são:

Para caracteres literais: CHAR e VARCHAR (VARiable-length CHARacter).

Para números: FLOAT (números reais) e INT (números inteiros).

Para objetos como fotos e documentos: BLOB.

Para textos extensos: TEXT.

Cada caractere em um banco de dados representa 1 byte. Logo, se eu entro com o dado “Joao”, estamos inserindo 4 bytes no banco. E aqui vem o motivo da tipagem estar relacionada diretamente com a performance do banco. Um BD funciona como um download de dados da internet, quanto maior o tamanho do arquivo, maior o tempo para baixa-lo (considerando, óbvio, a mesma velocidade de conexão).

Para ilustrar esse assunto, vamos fazer uma simples comparação entre CHAR e VARCHAR com 10 bytes cada, ou seja, char(10) e varchar(10). Eu irei inserir em cada um o dado “Joao” e, como vimos anteriormente, esse dado ocupa 4 bytes.

Considerando os tipos, o VARCHAR passará a conter 4 bytes enquanto o CHAR continuará a ter 10 bytes. Os demais bytes do CHAR vão ser preenchidos com espaços vazios e isso irá impactar na performance do nosso BD. Obviamente esse é um exemplo simplista, mas é bem didático e exemplifica bem o que queremos dizer.

Então, vamos utilizar sempre VARCHAR? Nah, calma aí. Como eu disse, é um exemplo simplista. O CHAR é ligeiramente mais performático, pois ele não gasta tempo variando de tamanho. O legal é sempre utilizarmos o CHAR quando o número de caracteres da coluna nunca for variante. Por exemplo, quando vamos armazenar a unidade federativa (MG, SP, RJ, MS, BA, etc.), sempre teremos 2 caracteres. Ou quando formos armazenar o sexo, que pode ser M ou F, sempre teremos 1 caractere.

É importante ressaltar que a tipagem dos bancos pode variar um pouco de banco para banco. A maioria dos tipos são iguais, como o VARCHAR. Mas existem algumas exceções, como o ENUM que só existe no MySQL. Aconselho a dar uma pesquisada no Google para obter mais detalhes e exemplos sobre os tipos.

Eu trarei novos posts sobre esse assunto mais adiante, indo cada vez mais adiante e mais fundo em relação a conceitos e definições. Por ora, é só.

Um abraço!

Postagens mais visitadas deste blog

Teste Driven Development ou TDD, o que é?

Fall Through em Java: O que é?