230 likes | 462 Views
Base de dados NoSQL. Mongo db. - Nuno Peralta - João Proença. Sistema de Base de Dados; Não usa SQL, orientada a documentos ; Usa o formato Binary JSON; Schema-Less; Escrito em C; S uporta índices ; Auto-Sharding;
E N D
Base de dados NoSQL Mongo db - Nuno Peralta - João Proença
Sistema de Base de Dados; Nãousa 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. O que é?
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). Qual a necessidade de nosql?
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. objectivo
Bases de Dados Colecções Documentos BSON Modelo de dados
Ficheiro (.ns) com todos os namespaces (nome das colecções); Faz a junção física das colecções. Bases de Dados
Equivalente a tabelas numa base de dados relacional; Faz a junção lógica dos documentos. ColeCções
Equivalente a linhas numa base de dados relacional; Onde os dados em si são armazenados; Todos eles têm um ID único. Documentos
JSON em binário; Formato de armazenamento de dados no MongoDB; Guarda todos outros tipos de dados (string, int, etc). BSON
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. BASE de DADOS DE grandes dimensões
Queries MongoDB bastante verbosas; Chave-valor; Aplicação deve verificar consistência/integridade. Interface aplicações externas
Tabela de suporte: Vs mysql
Vs mysql { }
Inserção: Selecção: Vs mysql (tempos)
Fazer a ligação: $connection = new Mongo(); • Seleccionar uma base de dados: $database = $connection->selectDB(‘nomedabase’); • Seleccionar uma colecção: $collection = $database->selectCollection(‘nomedacoleccao’); Alguns EXEMPLOS PRÁTICOS
Criar documento: $doc = array(“nome” => “Nuno”, “email” => “nuno@mdb.com”); • 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>); Alguns EXEMPLOS PRÁTICOS
Criar/garantir índice: $collection->ensureIndex(array(“campo" => 1)); • Indice único: $collection->ensureIndex(array(“campo" => 1), array("unique" => 1)); • Remover um índice: $collection->deleteIndex(“campo”); índices
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. Conclusão