base de dados nosql - nuno peralta - joão proença

23
MONGO DB Base de dados NoSQL - Nuno Peral - João Proen

Upload: internet

Post on 18-Apr-2015

110 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Base de dados NoSQL - Nuno Peralta - João Proença

MONGO DBBase de dados NoSQL

- Nuno Peralta- João Proença

Page 2: Base de dados NoSQL - Nuno Peralta - João Proença

O QUE É?

Sistema de Base de Dados;

Não usa SQL, orientada a documentos;

Usa o formato Binary JSON;

Schema-Less;

Escrito em C;

Suporta índices;

Auto-Sharding;

Insert / Update -> Dados armazenados em memória em

segundo plano, depois gravados em disco.

Page 3: Base de dados NoSQL - Nuno Peralta - João Proença

QUAL A NECESSIDADE DE NOSQL?

Cloud Computing; Estrutura de DBs actual não suporta a escalabilidade exigidapela nuvem; Muitos dados na WEB para serem armazenados,

necessidades de grandes armazenamentos; Respostas mais rápidas pelas aplicações; Diminuição do custo em DBA (DataBase

Administrators) e DBM (DataBase Managements).

Page 4: Base de dados NoSQL - Nuno Peralta - João Proença

OBJECTIVO

Ser diferente do modelo relacional, por isso NoREL?

NoSQL é mais comercial =P

Base de dados horizontais: Baixo custo; Poder de processamento; Facilidade de manutenção.

Page 5: Base de dados NoSQL - Nuno Peralta - João Proença

MODELO DE DADOS

Bases de Dados

Colecções

Documentos

BSON

Page 6: Base de dados NoSQL - Nuno Peralta - João Proença

BASES DE DADOS

Ficheiro (.ns) com todos os namespaces (nome das colecções);

Faz a junção física das colecções.

Page 7: Base de dados NoSQL - Nuno Peralta - João Proença

COLECÇÕES

Equivalente a tabelas numa base de dados relacional;

Faz a junção lógica dos documentos.

Page 8: Base de dados NoSQL - Nuno Peralta - João Proença

DOCUMENTOS

Equivalente a linhas numa base de dados relacional;

Onde os dados em si são armazenados;

Todos eles têm um ID único.

Page 9: Base de dados NoSQL - Nuno Peralta - João Proença

BSON

JSON em binário;

Formato de armazenamento de dados no MongoDB;

Guarda todos outros tipos de dados (string, int, etc).

Page 10: Base de dados NoSQL - Nuno Peralta - João Proença

BASE DE DADOS DE GRANDES DIMENSÕES

Tem limites nas colecções.

Aumentar limite -> Correr mais processos “mongod” e particionar a DB entre processos.

Muitas empresas a usar MongoDB, mas grande parte não o usa como DB principal.

Erros de memória e espaço, como aconteceu no nosso trabalho.

Page 11: Base de dados NoSQL - Nuno Peralta - João Proença

TRABALHO - EXEMPLO

Page 12: Base de dados NoSQL - Nuno Peralta - João Proença

INTERFACE APLICAÇÕES EXTERNAS

Queries MongoDB bastante verbosas;

Chave-valor;

Aplicação deve verificar consistência/integridade.

Page 13: Base de dados NoSQL - Nuno Peralta - João Proença

VS MYSQL

Tabela de suporte:

Page 14: Base de dados NoSQL - Nuno Peralta - João Proença

VS MYSQL

Page 15: Base de dados NoSQL - Nuno Peralta - João Proença

VS MYSQL

Page 16: Base de dados NoSQL - Nuno Peralta - João Proença

VS MYSQL

Page 17: Base de dados NoSQL - Nuno Peralta - João Proença

VS MYSQL

{ }

Page 18: Base de dados NoSQL - Nuno Peralta - João Proença

VS MYSQL

Page 19: Base de dados NoSQL - Nuno Peralta - João Proença

VS MYSQL (TEMPOS)

Inserção:

Selecção:

 MongoDB

 MySQL

 0.03112387657165

5 segundos

 29.805167913437

segundos 

 MongoDB

 MySQL

 0.003483057022094

7 segundos

 6.8415830135345

segundos  

Page 20: Base de dados NoSQL - Nuno Peralta - João Proença

ALGUNS EXEMPLOS PRÁTICOS

Fazer a ligação: $connection = new Mongo();

Seleccionar uma base de dados:$database = $connection->selectDB(‘nomedabase’);

Seleccionar uma colecção:$collection = $database->selectCollection(‘nomedacoleccao’);

Page 21: Base de dados NoSQL - Nuno Peralta - João Proença

ALGUNS EXEMPLOS PRÁTICOS

Criar documento:$doc = array(“nome” => “Nuno”, “email” => “[email protected]”);

Guardar documento na coleção:$collection->save($doc);

SELECTS:$gt, $lt, $gte, $lte, $eq, $neq, $size, $exists, $in, $nin, group(), limit(), skip(), sort().

UPDATES: $set, $unset, $push, $pull, $inc

$collection->update(<select>, <novo_obj>, <upsert>, <multi>);

Page 22: Base de dados NoSQL - Nuno Peralta - João Proença

ÍNDICES

Criar/garantir índice:$collection->ensureIndex(array(“campo" => 1));

Indice único:$collection->ensureIndex(array(“campo" => 1),

array("unique" => 1));

Remover um índice:$collection->deleteIndex(“campo”);

Page 23: Base de dados NoSQL - Nuno Peralta - João Proença

CONCLUSÃO

MongoDB é mais rápido;

Nem sempre é a melhor escolha;

Usar quando queremos boa performance, os dados não necessitem de consistência, e não seja preciso relacionar tabelas;

Para aplicações que necessitam de realtime e

históricos;

Caso contrário, MySQL.