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);

}

Entradas relacionadas: