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!