Seminário feito para a disciplina de Sistemas Distribuídos da Universidade Federal de São Paulo, ministrada pelo Prof. Dr. Arlindo Flávio da Conceição.
Entenda como as grandes empresas utilizam múltiplas abordagens de armazenamen...
MongoDB Documentos Bancos
1. MongoDB e Bancos de Dados
Orientados a Documentos
Fernanda Lembo Vedovello - 61583
Mariana Amery – 71097
2. NoSQL
● Termo criado por Carlo Strozzi e Eric Evans como
referência a um tipo de armazenamento de dados;
● Not Only SQL (Não apenas, não somente SQL)
● Termos NoREL e Não Relacional também são bastante
utilizado.
● Alternativa ao modelo relacional
3. Por que usar NoSQL?
● Escalabilidade
● Performance
● Flexibilidade
● Manipulação de quantidade massiva de dados
– Dados que crescem exponencialmente;
– Agregam muitos valores dinamicamente;
– Não precisam de modelagem;
● Facilidade para consultas
4. Tipos de NoSQL
● Key/Value: DynamoDb, Riak, Azure Table Storage,
Berkeley DB, etc.
● Wide column store: Hadoop, Cassanda, Hypertable,
Amazon SimpleDB, etc.
● Document store: MongoDb, CouchDB, RavenDb, etc.
● Graph store: Neo4J, Infinite Graph, InforGrid,
HyperGraphDB, etc.
5. Bancos de Dados Orientados a
Documentos
● Conceito de dados e documentos autocontidos e auto
descritivos.
– Isso implica que o documento em si já define como ele
deve ser apresentado e qual é o significado dos dados
armazenados na sua estrutura.
6. Bancos de Dados Orientados a
Documentos
● Cada entrada no banco de dados corresponde a um
documento, normalmente decompostos por um
identificador e um valor.
– É possível introduzir mais identificadores seguidos de
valores neste valor.
● Dados estruturados de forma encadeada, podendo ser
coleções, tags, metadatas, hierarquias de informações,
etc.
7. Bancos de Dados Orientados a
Documentos
● Exemplo de documento:
{
“nome” : ”Fernanda”,
“faculdade” :”UNIFESP”,
“contatos” : [{“twitter” : ”@fefa”}, {“email” : ”fernanda.lembo@unifesp.br”}],
“endereço” : {
“CEP” : “04302020”,
“rua” : “Paracatu”,
“numero” : 357,
“cidade” : “São Paulo”,
“estado” : {
“sigla”: 'SP',
“nome” : “São Paulo”
}
}
}
● Bom para aplicações de conteúdo, blogs, análise estatísticas, sistemas de
gerenciamento de documentos, etc.
8. Bancos de Dados Orientados a
Documentos
● Permite que tenha redundância e inconsistência.
● Contêm todas as informações importantes em um único
documento.
● Livre de esquemas.
● Identificadores Únicos Universais(UUID)
● Consultar os documentos através de métodos avançados
de agrupamento e filtragem: MapReduce
9. Bancos de Dados Orientados a
Documentos
● Codifica os documentos com XML, JSON, BSON e os
formatos binários mais conhecidos como PDF, DOC, XLS,
etc.
● Suportam anexos e possuem um controle de versão para,
se necessário, restaurar versões mais antigas.
10. BDOD x BD Relacional
BDOD BD Relacional
Documentos autocontidos. Tabelas.
Sem necessidade de definir um esquema
rígido.
Colunas e chaves rigidamente definida.
Inserção de um novo campo sem afetar outros
documentos.
Modificações posteriores é uma tarefa rígida e
difícil.
Os documentos não precisam armazenar
valores de dados vazios para campos os quais
não possuem um valor.
Registros não podem ser adaptados para
diferentes circunstâncias. Por exemplo, deixar
um campo vazio.
Os dados podem estar repetidos em diversos
documentos.
Única entrada para cada dado sem
possibilidade de repetição.
Universally Unique Identifier (UUID) Chaves primárias
Não suporta junções, mas possibilita criar uma
visualização o qual permite gerar uma relação
arbitrária entre documentos que não está
realmente definida no próprio BD.
Suporta junções usando chaves primárias e
estrangeiras
12. MongoDB
● Início em 2007, com primeira versão em 2009
● Código aberto
● Escrito em C++
● Multiplataforma
● Utiliza JSON com esquema dinâmico, ou seja, não existe
schema fixo
● Dados ficam armazenados de forma mais parecida com o
mundo real
● Collections são como as tabelas em BD relacional e os
documentos são como os registros
19. MongoDB x CouchDB
MongoDB CouchDB
Escrito em Erlang Escrito em C++
Ponto forte: mantém algumas propriedades
amigáveis de SQL (query, index)
Ponto forte: consistência e facilidade de uso
Licença: AGPL Licença: Apache
Replicação: Master-slave Replicação: bidirecional