Programação · dados · bases de dados
O que é uma base de dados?
Todas as aplicações que usas — o teu banco, uma loja, um feed social — guardam a sua informação algures, onde possa ser recuperada, modificada e considerada fiável. Esse «algum lugar» é uma base de dados. É uma das ideias fundadoras do software. Este guia explica o que é uma base de dados, os grandes tipos, os conceitos que importam, exemplos reais e a sua ligação ao SQL.
A definição curta
Uma base de dados é uma coleção organizada de dados, gerida por software (um sistema de gestão de base de dados, ou SGBD) que permite armazenar, recuperar, atualizar e proteger esses dados de forma fiável. Uma folha de cálculo também pode conter dados, mas uma base de dados acrescenta estrutura, consultas rápidas em grande escala, acesso multiutilizador e a garantia de que os dados se mantêm coerentes mesmo quando muitas coisas mudam ao mesmo tempo.
Base de dados vs SGBD
Duas palavras usadas muitas vezes de forma intercambiável, mas que designam coisas diferentes. A base de dados são os dados em si e a sua organização. O SGBD — PostgreSQL, MySQL, SQLite, MongoDB — é o software que os armazena, executa as tuas consultas, aplica as regras e gere os acessos concorrentes. Quando se pergunta «que base de dados usar?», fala-se geralmente do SGBD.
As duas grandes famílias
- Bases de dados relacionais (SQL): organizam os dados em tabelas de linhas e colunas, com relações definidas entre si, e consultam-se com SQL. Destacam-se com dados estruturados e coerência garantida. Exemplos: PostgreSQL, MySQL, SQLite, SQL Server.
- Bases de dados NoSQL: flexibilizam a estrutura rígida em tabelas para ganhar flexibilidade e escalabilidade. Existem em várias formas: orientadas a documentos (MongoDB), chave-valor (Redis), colunas largas (Cassandra) e grafos (Neo4j). Úteis para grandes volumes, cache rápida ou dados cuja forma muda com frequência.
A maioria dos sistemas reais usa várias — por exemplo, uma base relacional para os registos principais e um armazenamento chave-valor para a cache.
Os conceitos-chave
- Esquema — a estrutura definida: que tabelas existem, as suas colunas e tipos, e as regras. As bases relacionais são esquema primeiro; muitas NoSQL são flexíveis.
- Consulta — um pedido de dados precisos («todas as encomendas da semana passada»). Nas bases relacionais, escrevem-se em SQL.
- Índice — uma estrutura de pesquisa que torna as consultas rápidas ao evitar percorrer cada linha, como o índice remissivo no fim de um livro.
- Transação — um grupo de alterações que têm de ter sucesso todas ou falhar todas em conjunto (transferir dinheiro entre duas contas). As bases relacionais garantem-no com as propriedades ACID.
O que significa ACID
ACID descreve as garantias que uma base de dados fiável oferece a uma transação: Atomicidade (tudo ou nada), Consistência (os dados respeitam as suas regras antes e depois), Isolamento (as transações concorrentes não se corrompem entre si) e Durabilidade (uma vez confirmada, a alteração sobrevive a uma falha). São estas garantias que fazem com que se confie dinheiro e registos a uma base de dados, em vez de a um simples ficheiro.
Por que as bases de dados importam
Permitem ao software armazenar os dados uma única vez e usá-los em todo o lado, em segurança, em grande escala, com muitos utilizadores ao mesmo tempo — e recuperar qualquer fatia deles em poucos milissegundos. Quase todo o programa não trivial acaba por precisar de uma. Saber escolher o tipo certo e consultá-lo bem é uma das competências mais duradouras em informática.
Os compromissos honestos
Não existe uma base de dados universalmente «melhor». As bases relacionais oferecem forte coerência e consultas poderosas, mas exigem um esquema definido; o NoSQL oferece flexibilidade e escalabilidade horizontal, mas muitas vezes sacrifica certas garantias de coerência. A escolha certa depende da forma dos teus dados, da tua escala e da importância que dás à coerência estrita face à flexibilidade. Muitas equipas combinam ambos.
FAQ
Uma base de dados é o mesmo que SQL? Não. Uma base de dados armazena os dados; o SQL é a linguagem usada para consultar as bases relacionais. As bases NoSQL usam outros métodos de consulta.
Uma folha de cálculo é uma base de dados? Em sentido lato sim, mas não verdadeiramente. Uma folha de cálculo contém dados, mas uma base de dados acrescenta estrutura imposta, consultas rápidas em grande escala, segurança multiutilizador e garantias transacionais que uma folha de cálculo não tem.
Qual é a diferença entre SQL e NoSQL? As bases SQL/relacionais usam tabelas estruturadas e forte coerência; as bases NoSQL flexibilizam a estrutura para flexibilidade e escalabilidade. Nenhuma substitui a outra — adequam-se a usos diferentes. Para uma comparação aprofundada, vê SQL vs NoSQL: que base de dados, e quando.
Que base de dados aprender primeiro? Uma relacional — SQLite ou PostgreSQL — porque o modelo relacional e o SQL transferem-se para todo o lado e ensinam com clareza as ideias de base.
Para consultar uma base relacional, vais usar o SQL; os dados que uma base devolve a uma aplicação viajam muitas vezes em JSON. Explora outras explicações claras no nosso índice de guias.