Redis e MongoDB
Os dois que não são SQL: o que cada um resolve, o que não resolve, e por que o driver cabe em poucas linhas.
Os dois entram pela mesma porta (Forge.conectar) e respondem a perguntas diferentes das do SQL. Usá-los como banco principal é o erro mais caro dos dois.
Redis#
Memória, com persistência opcional. O que ele faz melhor que qualquer banco: expirar sozinho. Cache, sessão, limite de taxa, fila simples — tudo isso é um valor com prazo.
dataforge
adopt Arcane.Forge as Forge
// Comentado porque exige o conteiner:
//
// r := Forge.conectar("redis://localhost:6379")
// Forge.executar(r, "SET sessao:abc {\"id\": 7}")
// Forge.executar(r, "EXPIRE sessao:abc 3600")
// out Forge.consultar(r, "GET sessao:abc")
//
// O protocolo (RESP) e texto, e e por isso que o driver cabe em
// poucas linhas: cada comando e uma lista de strings, e cada
// resposta tem um prefixo de um caractere dizendo o que ela e.
out "veja o exemplo acima; ele precisa de um Redis no ar"| Use Redis para | Não use para |
|---|---|
| cache com prazo | o dado que não pode ser perdido |
| sessão | relação entre entidades |
| limite de taxa compartilhado entre processos | relatório |
| fila simples | fila com garantia forte — isso é um broker |
MongoDB#
Documentos, sem esquema declarado. O driver fala o wire protocol com BSON — e bson.py existe aqui pelo mesmo motivo dos outros: sem pymongo.
| Use Mongo para | Pense duas vezes |
|---|---|
| documento cuja forma varia de verdade | dado com relações — join não é o forte dele |
| esquema que muda toda semana no começo | quando a forma estabilizar, o SQL volta a ser melhor |
| agregação sobre eventos | transação entre coleções |
Continue em Cada motor e O banco em contêiner.