Bancos de dados não relacionais com

O que é NoSQL
Not OnlySQL (não apenas SQL)
Não exigem esquemas de tabelas fixas
Não suportam operações de junções (JOIN)
Distintos do modelo relacional
Não têm a preocupação de fornecer garantias ACID

Classificação de bancos de dados não relacionais
| Orientado a Documentos (MongoDB, DynamoDB) |
| Orientado a Grafos (Neo4j) |
| Colunares (Cassandra, HBase) |
| Chave-Valor (Redis) |
| Time-Series (InfluxDB) |
| Multi-Modelo (ArangoDB, CosmosDB) |
Banco de dados orientado a objetos
Dados armazenados em coleções de documentos
Cada documento é autossuficiente
Hierarquias complexas, porém fáceis de buscar
MongoDB vs Banco Relacional
| Bancos relacionais | MongoDB |
|---|---|
| Armazenam dados em tabelas, com linhas divididas em colunas. | Armazena dados em coleções de documentos, com campos e subdocumentos. |
| Foco em garantir o ACID. | Foco em garantir escalabilidade, alta disponibilidade e performance. |
| Uso de transações para garantir commits e rollbacks. | Transações devem ser garantidas a nível de aplicação. |
MongoDB vs Banco Relacional
| Bancos relacionais | MongoDB |
|---|---|
| Cada coluna de uma linha armazena apenas um dado. | Os campos do documento podem armazenar múltiplos valores. |
| Schema pré-definido e rígido. | Schema variável conforme uso da aplicação. |
| Foco em não repetição de dados (DRY). | Foco em acesso rápido de dados. |


Principais características do MongoDB
Armazena os dados em formato JSON
Foi criado com Big Data em mente
É multiplataforma e relativamente leve
Schemaless
Quando devo usar MongoDB?
Escalonamento vertical e horizontal
Dados não estruturados
JSON
Catálogos de produtos e-commerce
Prós
Open source e multi plataforma
Pesquisas muito mais rápidas
Schema variável
Funciona muito bem com dados desestruturados
Contras
Máximo de 16MB por documento
Menos flexível em pesquisas
Maior consumo de RAM
Nível máximo de profundidade de um documento é 100
Curva de aprendizagem
Aceitação no mercado
Modelagem de Dados com MongoDB
Talvez porque durante anos fomos instruídos a modelar nossos bancos de dados usando as Formas Normais.
Talvez porque durante anos fomos instruídos a modelar nossos bancos de dados pensando em não repetição de dados.

Modelagem de dados com MongoDB
Tenha a mente aberta!
Tente evitar relacionamento entre documentos
Documentos não são equivalentes a linhas de banco de dados
Modelagem de Blog (Relacional)
Artigo => ID, Titulo, DataPublicacao, Conteudo, IDAutor, Status, URL
Autor => ID, Nome, Bio, Foto, Usuario, Senha
Categoria => ID, Nome, Descricao
Modelagem de Blog (Relacional)
ArtigoCategoria => ID, IDArtigo, IDCategoria
Tag => ID, IDArtigo, Nome
Comentario => ID, IDArtigo, Nome, Texto, Data
Modelagem de Blog (Relacional)

Modelagem de Blog (Não Relacional)
// Collection Artigo
{
_id: ObjectID("123abc"),
titulo: "Blog Não Relacional",
dataPublicacao: newDate("2018-09-15T14:00:00Z"),
conteudo: "Conteúdo do Blog Não Relacional",
autor: {
_id: ObjectID("456def"),
nome: "Autor"
},
status: 1,
url: "http://url-exemplo.com.br/blog/1",
categorias: [{
_id: ObjectID("789ghi"),
nome: "Categoria 1"
}],
tags: ["Tag1", "Tag2"],
comentarios: [{
_id: ObjectID("456mno"),
nome: "Autor do comentário",
texto: "Comentário",
data: new Date("2018-09-15T14:00:00Z")
}]
}// Collection Autor
{
_id: ObjectID("123abc"),
nome: "Autor",
bio: "Escritor",
foto: "http://minha-url.jpg",
usuario: "autor",
senha: "sdkhfjywgewhjbsjy"
}// Collection Categoria
{
_id: ObjectID("123jkl"),
nome: "Tag1",
descricao: "Descrição"
}Boas Práticas com MongoDB
Evite negações em queries
Atualize apenas os campos necessários
Armazene os dados de uma entidade em um único documento
Evite documentos muito grandes
Obrigada!
Helen Dias
FullStack Developer - Cotabox
Node | GraphQL | Vue | MongoDB
Bancos de dados não relacionais com MongoDB
By helendias
Bancos de dados não relacionais com MongoDB
- 244