leituras é muito maior que o número de atualizações nos dados ◂ É fácil distribuir os dados entre servidores diferentes. ◂ Duplicar apenas dados estritamente necessários para a leitura. 16
para um valor ◂ Todo documento possui um identificador único ◂ Pode ter uma sub coleção ◂ Pode ter no máximo 1MB ▪ 1 ◂ nome: "Ada Lovelace" ◂ email: "[email protected]" 20
◂ Todos os documentos podem ser acessados com seus identificadores através de referências. ◂ É possível referenciar também coleções 22 collections/Usuários/1/Transações/1
email: "[email protected]", Transações: [ 1: { valor: 50.00, data: 20-11-2018, tipo: "despesa" } ] } ] 25 ◂ Máx 1MB ◂ Máx 1 escrita/ doc / segundo ◂ Não suporta queries ◂ Pouco escalável ◂ Retorna muitos dados e as vezes não são necessários
◂ email: "[email protected]" ☰ Transações ▪ 1 ◂ valor: 50.00 ◂ data: 20-11-2018 ◂ tipo: "despesa" 27 ◂ Consegue otimizar queries dentro da sub coleção ◂ Mais escalável ◂ Não é tão simples deletar sub coleções ◂ Não é possível fazer queries entre coleções diferentes
end de forma fácil e rápida ◂ Triggers de eventos de outras funcionalidades do Firebase (autenticação, banco de dados, armazenamento, etc) ◂ Chamadas Http 39
quem pode acessar quais informações de qual recurso Regras de Segurança Documento que define as regras de acesso do lado do cliente, independente de servidor 42
atualizar alguma transação que não tenha sido criada por ele mesmo, dentro da sua própria coleção. ◂ Ao criar uma transação, nenhuma data deve ser maior que a data de criação. ◂ Apenas administradores podem ler as transações na raiz. ◂ Nenhum usuário pode criar ou atualizar transações na raiz. 44
multi-doc (batch) ◂ Profundidade máxima de chamadas de função: 20 ◂ Não permite chamadas recursivas ◂ Número máximo de expressões: 10.000 ◂ Tamanho máximo: 46KB 47
◂ Após atingir o limite, os acessos param de funcionar Atribuir um orçamento mensal para os gastos com Google Cloud ◂ É possível configurar alertas para saber quando seu gasto está no limite do orçamento 49
exclusões 2. Tamanho dos dados armazenados 3. Largura de banda utilizada Será cobrado pelo menos 1 leitura, mesmo que a chamada não retorne nenhum documento
real Cobrado unitariamente para cada documento que é alterado Queries Cobrado uma leitura para cada documento recuperado Soluções: Cursores, paginação, limites e offsets Functions e Regras de segurança Cada chamada no functions é contada assim como get() e exists() no documento de regras Solução: muitas chamadas são cacheadas 51
https://www.youtube.com/playlist?list=PLl-K7zZEsYLluG5MC VEzXAQ7ACZBCuZgZ ◂ Plug-in para Visual Studio Code: https://marketplace.visualstudio.com/items?itemName=tob a.vsfire