up:: System Design related:: Data Models, Database Models Reference, ACID, BASE, CAP Theorem, PACELC

Abstração de Armazenamento & Tipos de Bancos de Dados

A base do armazenamento de dados em um sistema resume-se ao fluxo de abstração do software:

Cliente Dados (Lógica/Software) Disco (Armazenamento Físico)

1. Bancos de Dados Relacionais (SQL)

Modelos baseados em estruturas rígidas e previsíveis, ideais para transações complexas e dados altamente estruturados.

  • Estrutura: Tabelas compostas por linhas (tuplas) e colunas.

  • Esquema: Schemas rígidos e predefinidos (exigem migrações formais).

  • Garantias: Seguem estritamente as propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade) para garantir integridade.

  • Principais Exemplos: MySQL, PostgreSQL, Oracle, SQL Server.

2. Bancos de Dados Não Relacionais (NoSQL)

Modelos projetados para alta escalabilidade horizontal, flexibilidade e grande volume de dados.

  • Esquema: Schemas flexíveis ou dinâmicos.

  • Consistência: Geralmente adotam Consistência Eventual (Teorema CAP).

  • Garantias: Sem garantias estritas de ACID nativo em cenários distribuídos.

Categorias e Exemplos:

  • Documentos: MongoDB, Azure Cosmos DB

  • Busca Textual/Indexação: Elasticsearch

  • Colunar (Wide-column): Cassandra

3. Bancos de Dados em Memória (In-Memory)

Armazenam os dados diretamente na memória RAM em vez de discos rígidos (SSD/HDD) para atingir latências extremamente baixas (sub-milissegundos).

  • Casos de Uso: Sistemas de Cache, gerenciamento de sessões, leaderboards em tempo real e filas de mensageria rápidas.

  • Trade-off: Alta velocidade vs. Volatilidade (risco de perda de dados se o servidor cair, embora muitos usem mecanismos de persistência assíncrona em disco, como AOF/RDB).

  • Principais Exemplos: Redis, Memcached, Valkey.

4. Bancos de Dados de Séries Temporais (TSDB - Time Series)

Otimizados para armazenar e consultar fluxos de dados associados a carimbos de data/hora (timestamps).

  • Casos de Uso: Telemetria de infraestrutura (métricas de CPU/Memória), monitoramento de IoT (sensores), dados financeiros (cotações de ações) e logs de auditoria.

  • Características: Alta taxa de escrita de dados sequenciais (appends constantes), raras atualizações de dados antigos (updates) e compressão agressiva de dados históricos.

  • Principais Exemplos: InfluxDB, Prometheus, TimescaleDB (uma extensão do PostgreSQL).

5. NewSQL

Une as garantias transacionais do SQL clássico com a capacidade de escala horizontal do NoSQL.

  • Core: Mantém propriedades ACID aliado à Escalabilidade Horizontal.

  • Mecanismo: Utilizam protocolos de consenso distribuído para replicação e consistência.

    • Protocolos: Raft, Paxos.
  • Principais Exemplos: Google Cloud Spanner, SingleStore (antigo MemSQL), CockroachDB.