Pular para conteúdo

Banco não relacional (noSQL)

Bancos não relacionais (NoSQL) não exigem o mesmo formato rígido de esquema dos relacionais.

Principais modelos

  • Documento (ex.: MongoDB)
  • Chave-valor (ex.: Redis)
  • Colunar (ex.: Cassandra)
  • Grafo (ex.: Neo4j)

Exemplo de documento:

{
  "_id": "4556712cd2b2397ce1b47661",
  "name": { "first": "Thomas", "last": "Anderson" },
  "date_of_birth": "1964-09-02",
  "occupation": ["The One"],
  "steps_taken": 4738947387743977493
}

Quando escolher NoSQL

  • Estrutura de dados muda com frequência.
  • É necessário escalar horizontalmente com facilidade.
  • O foco é throughput alto e baixa latência em casos específicos.
  • Nem toda consulta exige relacionamentos complexos entre entidades.

NoSQL em arquitetura de alto vs baixo throughput

Baixo throughput

  • NoSQL também funciona, mas pode ser excesso de complexidade se SQL já atende.

Alto throughput

  • Geralmente brilha em cenários como:
  • eventos e telemetria em grande volume;
  • dados semi-estruturados;
  • sessões, carrinho, feed, catálogo, ranking.
  • Estratégias comuns:
  • particionamento por chave;
  • replicação distribuída;
  • consistência eventual (dependendo do caso de uso).

Ponto de atenção

NoSQL não significa “sem consistência” e SQL não significa “sem escala”. A escolha depende do tipo de problema, requisitos de consistência, volume e padrão de acesso.

Panorama de modelos NoSQL

flowchart LR
  N[NoSQL] --> K[Key-Value]
  N --> D[Document]
  N --> C[Column Family]
  N --> G[Graph]

Quando considerar NoSQL

[Dados variam muito de formato?] -- sim --> [Document/Key-Value]
[Escala horizontal e throughput alto?] -- sim --> [NoSQL favorece]
[Relacoes complexas e ACID forte?] -- sim --> [Avaliar SQL]