Bancos de Dados NoSQL: Guia Completo
Classificado em Computação
Escrito em em português com um tamanho de 3,24 KB.
O que é NoSQL?
NoSQL não significa "não SQL", e sim "não somente SQL".
Os bancos de dados NoSQL são sistemas de armazenamento de dados que surgiram para atender a necessidades nas quais os bancos de dados tradicionais (relacionais) são ineficazes.
Muitos desses bancos de dados apresentam características interessantes, como:
- Alta performance
- Escalabilidade
- Replicação
- Suporte a dados estruturados
- Grafos e subcolunas
Quando usar NoSQL e SQL?
Usamos bancos relacionais principalmente em cenários em que a integridade dos dados é extremamente importante e não pode haver nenhuma quebra de referência.
Para todos os outros cenários, podemos utilizar o NoSQL, principalmente quando precisamos de alta disponibilidade ou escalabilidade.
Resumo:
- SQL: Ideal quando a consistência dos dados é crucial.
- NoSQL: Recomendado para os demais casos, especialmente quando o foco é a melhoria de performance e escalabilidade.
Cloud Firestore
O Cloud Firestore é um banco de dados NoSQL hospedado na nuvem.
- Acessado diretamente por SDKs nativos (iOS, Android, Web, Node.js, Java, Python, Go, REST e RPC APIs).
- Modelo de armazenamento orientado a documentos.
Modelo Orientado a Documentos
Ao contrário de um banco de dados SQL, no modelo orientado a documentos não há tabelas nem linhas.
Os dados são armazenados em documentos, que são organizados em coleções.
Cada documento contém um conjunto de pares chave-valor. O Cloud Firestore é otimizado para armazenar grandes coleções de documentos pequenos.
Documentos
Podem ter um código (ID) gerado automaticamente ou manualmente (recomenda-se o automático).
Coleções
São recipientes para documentos. Por exemplo, uma coleção "users" pode conter diversos usuários, cada um representado por um documento.
Subcoleções
Uma subcoleção é uma coleção associada a um documento específico.
Exemplo de Código (Angular e Firestore)
Observable
Tipo de informação que fica "observando" alguma alteração dos dados. É diferente de um Listener.
items$: Observable<ICategoria[]>;
Referência do Banco de Dados
constructor(public navCtrl: NavController, categoriaProvider: CategoriaProvider, private afs: AngularFirestore)
Vínculo com a Coleção (Remoto)
items$: Observable<ICategoria[]>;
itemsRef: AngularFirestoreCollection<ICategoria>;
// Evento que é executado ao abrir a página pela primeira vez
ngOnInit() {
this.itemsRef = this.afs.collection<ICategoria>('categorias');
this.items$ = this.itemsRef.valueChanges();
}
Adição de uma Nova Categoria
salvar() {
// console.log(this.categoria);
this.itemsRef.add(this.categoria);
}