MongoDB e Bancos de Dados Orientados a Documentos

20
MongoDB e Bancos de Dados Orientados a Documentos Fernanda Lembo Vedovello - 61583 Mariana Amery – 71097

Transcript of MongoDB e Bancos de Dados Orientados a Documentos

MongoDB e Bancos de Dados Orientados a Documentos

Fernanda Lembo Vedovello - 61583Mariana Amery – 71097

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

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

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.

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.

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.

Bancos de Dados Orientados a Documentos

● Exemplo de documento:{

“nome” : ”Fernanda”,“faculdade” :”UNIFESP”,“contatos” : [{“twitter” : ”@fefa”}, {“email” : ”[email protected]”}], “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.

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

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.

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

BDs orientados a documentos mais utilizados

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

MongoDB

MongoDB - Comandos

● Create

MongoDB - Comandos

● Delete

MongoDB - Comandos

● Insert

MongoDB - Comandos

● Update

MongoDB - Comandos

● Select

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