A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Mongo db Base de dados NoSQL - Nuno Peralta - João Proença GUGA

Apresentações semelhantes


Apresentação em tema: "Mongo db Base de dados NoSQL - Nuno Peralta - João Proença GUGA"— Transcrição da apresentação:

1 Mongo db Base de dados NoSQL - Nuno Peralta - João Proença GUGA
Mongo db - Nuno Peralta - João Proença

2 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. Guga Schema-Less -> Não é necessário parar o site para adicionar uma nova coluna numa “tabela”. Auto-Sharding -> Preparado para escalar horizontalmente. Podemos ter vários nós (maquinas) como se fossem todos um único nó e se por algum motivo uma máquina não funcionar temos sempre outra que a possa substituir.

3 Qual a necessidade de nosql?
Cloud Computing; Estrutura de DBs actual não suporta a escalabilidade exigida pela 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). Guga - Cloud Computing -> Cada vez há mais a necessidade em armazenar os dados em serviços para que possam ser acedidos em qualquer parte do mundo. O acesso é feito pela a internet daí o conceito de nuvem.

4 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. Guga

5 Modelo de dados Bases de Dados Colecções Documentos BSON Guga

6 Bases de Dados Ficheiro (.ns) com todos os namespaces
(nome das colecções); Faz a junção física das colecções. Guga

7 ColeCções Equivalente a tabelas numa base de dados relacional;
Faz a junção lógica dos documentos. Guga Em vez da estrutura relacional que o MySQL permite fazer, o esquema é baseado em colecções que não se relacionam entre si (pelo menos o sistema de base de dados não faz isso ele próprio). Portanto, vamos ter uma colecção para cada entidade, mas não vamos poder fazer JOINs entre elas. Isso terá que ser feito manualmente pela aplicação em si.

8 Documentos Equivalente a linhas numa base de dados relacional; Onde os dados em si são armazenados; Todos eles têm um ID único. Guga O MongoDB é "schema-free", por isso cada item documento na colecção pode ter qualquer coisa, tal como arrays, booleanos, etc, e podem ter coisas diferentes uns dos outros.

9 BSON JSON em binário; Formato de armazenamento de dados no MongoDB; Guarda todos outros tipos de dados (string, int, etc). Guga

10 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. Nuno Agora vou falar da parte prática da coisa. Por defeito, MongoDB tem um limite de namespaces por base de dados, e cada namespace (ficheiro .ns) tem um limite de 2GB. A maioria das empresas usa para funcionalidades específicas, em que precisam de grande performance, mas não precisam de relacionar com nada nem fazer JOINs, ou seja, não necessitam de usar um sistema de base de dados relacional.

11 TRABALHO - EXEMPLO Nuno
Nós tentámos inserir a base de dados toda do IMDB. Em 5 minutos inseriu todos os filmes, mas, enquanto estava a inserir os actores, a certa altura os erros de memória e espaço começaram a aparecer como podemos ver neste screenshot.

12 Interface aplicações externas
Queries MongoDB bastante verbosas; Chave-valor; Aplicação deve verificar consistência/integridade. Nuno Alguém que já esteja familiarizado com JSON não irá ter grandes dificuldades em fazer uma aplicação para MongoDB. Deve ser a aplicação a verificar consistencia/integridade, pois no MongoDB não há relações.

13 Vs mysql Tabela de suporte: Nuno
Fizemos um programa para conseguirmos explicar melhor as diferenças nas consultas entre estas duas bases de dados. Esse programa gerou várias tabelas em que em cima de cada uma delas mostra como seria feito para uma Base de Dados MySQL e para uma MongoDB. As queries do Mongo fazem-se directamente nas colecções, depois de seleccionadas. Por isso é que neste caso a query é vazia, pois já estava a colecção seleccionada.

14 Vs mysql Nuno Há várias chaves pre-definidas para se usarem nas queries. (explicar o que a query faz)

15 Vs mysql Nuno Uma query mais directa.

16 Vs mysql Nuno No MongoDB, as colunas a seleccionar escolhem-se depois. O resto fica a NULL.

17 Vs mysql { } Nuno Todas as queries anteriores (JSON) metiam-se dentro do find(). No MongoDB, as linhas são todas retornadas, depois o sort() e o limit() sao feitos por for a.

18 Vs mysql Nuno

19 Vs mysql (tempos) Inserção: Selecção: MongoDB MySQL
MongoDB MySQL segundos segundos MongoDB MySQL segundos segundos Nuno Com 2 pequenos programas em PHP, inserimos itens e fizemos selecções nas 2 bases de dados para depois fazermos o benchmark entre o MongoDB e o MySQL.

20 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’); Nuno São criadas automaticamente se não existirem.

21 Alguns EXEMPLOS PRÁTICOS
Criar documento: $doc = array(“nome” => “Nuno”, “ ” => 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>); Nuno PHP não suporta linguagem JSON na sua sintaxe, por isso usamos arrays de PHP, que são equivalentes. Updates – apenas 1 linha por defeito; a função update() tem a flag “multi” para mudar isso $inc – incrementar $set – definir valor no campo $unset – remove campo Upsert

22 índices Indice único: Remover um índice: Criar/garantir índice:
$collection->ensureIndex(array(“campo" => 1)); Indice único: $collection->ensureIndex(array(“campo" => 1), array("unique" => 1)); Remover um índice: $collection->deleteIndex(“campo”); Nuno Cria índice caso não exista.

23 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. Nuno Apesar de o MongoDB ser muito mais rápido, não quer dizer que seja a melhor escolha para todas as aplicações. É recomendável usar MongoDB quando se quer muito boa performance em bases de dados que não necessitem de muita consistência e não precisam de relacionar tabelas. Caso contrário, recomendamos MySQL. Tal como outros sites o fazem, MongoDB funciona bem em funcionalidades que necessitem de realtime e históricos.


Carregar ppt "Mongo db Base de dados NoSQL - Nuno Peralta - João Proença GUGA"

Apresentações semelhantes


Anúncios Google