Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
MUDE SEU JEITODE PENSARCOMMONGODBAutor: Douglas Lira – douglas.lira.web@gmail.com
Antes de falar um pouco da minha experiência com o MongoDB, gostaria deagradecer a oportunidade disponibilizada pelo Suiss...
Em PHP seria algo assim:<?php …$collection = new MongoCollection($db, amigo);$query = array(idUsuario => new MongoId(123))...
Grande abraço a todos e fica a dica, qualquer coisa manda a dúvida que agentediscute e tentar encontrar a melhor solução. ...
Upcoming SlideShare
Loading in …5
×

Mude seu jeito de pensar com MongoDB

1,091 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Mude seu jeito de pensar com MongoDB

  1. 1. MUDE SEU JEITODE PENSARCOMMONGODBAutor: Douglas Lira – douglas.lira.web@gmail.com
  2. 2. Antes de falar um pouco da minha experiência com o MongoDB, gostaria deagradecer a oportunidade disponibilizada pelo Suissa para compartilhar essa informaçãono NoSQLBr. Muito obrigado!!Há meses estou submerso em um projeto que utiliza o MongoDB, foi escolhidodepois de uma longa discussão com a equipe, sua eficiência e agilidade deprocessamento, quando bem configurado a coisa fica monstra. Porem me deparei comum problema que deve afetar todos ao trabalhar com um banco de dados NoSQL aFORMA DE SE PENSAR E PROJETAR o banco. Como sempre trabalhei com banco dedados relacionais, projetei o MongoDB de forma idêntica a um banco de dados relacionale ai começou a minha dor de cabeça. Estava tendo que tirar leite de pedra para alimentarum monstrinho com muita fome, ou seja, tinha que ter um esforço fora do comum paraalimentar um aplicativo que exigia informações relacionadas e simples ao usuário final.Por exemplo:[Usuários] -> Onde são cadastrados todos os usuários.[Amigos] -> Onde são cadastradas os relacionamentos dos amigos de cadausuário.Sendo assim em um banco relacional teríamos isso:[Usuário] 1 -> N [Amigo]Foi ai que deu inicio ao caos (rssss). Na hora de resgatar algumas informaçõestinha um trabalho imenso e neste caso estava tendo que executar dois processos.1 – Listar os ID’s que estavam na tabela de Amigos2 – Verificar os ID’s encontrados no passo 1 e verificar suas informações
  3. 3. Em PHP seria algo assim:<?php …$collection = new MongoCollection($db, amigo);$query = array(idUsuario => new MongoId(123));$list = $collection->find($query);foreach ($list as $value) {$temp[] = new MongoId($value->idAmigo);}…$collection = new MongoCollection($db, usuario);$queryAmigo = array(_id => array($in => $temp));$listAmigo = $collection->find($queryAmigo);…// Executaria dois processos… para algo relativamente simples, agora// imagine um relacionamento envolvendo mais tabelas…?>Solução do problema:<?php$conexao = new Mongo(); // Iniciando uma conexão com o MongoDB$db = $conexao->testandoomongo; // Criando uma base de dados// Usuários inseridos.$db->usuarios->insert(array("_id"=>1,"name"=>"User01"));$db->usuarios->insert(array("_id"=>2,"name"=>"User02"));$db->usuarios->insert(array("_id"=>3,"name"=>"User03"));// Criando referencia de um usuario.$infoUser = $db->usuarios->findOne(array(_id => 2));$refUser = $db->usuarios->createDBRef($infoUser);// Adiciona a referencia$db->usuarios->update(array(_id=>1),array($push=>array(amigos=> $refUser)));// Consulta o usuario 1$consulta = $db->usuarios->findOne(array("_id"=>1));foreach ($consulta["amigos"] as $con) {// pega a referencia do usuario$ref = $db->usuarios->getDBRef($con);print_r($ref);}?>Então comecei a perceber que estava na hora de mudar a forma de pensar e deutilizar o MongoDB. Quando pensar em MongoDB pense como se fosse um grandeobjeto. Abaixo listei 3 dicas que não esquecerei jamais:1 – Não utilize técnicas de banco relacional no MongoDB;2 – Pense que as tabelas do MongoDB são grandes objetos que a qualquermomento podem mudar sua forma “física”;3 – Quando for programar tente ao máximo utilizar o raciocínio lógico, explorandoao máximo seu objeto evitando o excesso de processamento do MongoDB.
  4. 4. Grande abraço a todos e fica a dica, qualquer coisa manda a dúvida que agentediscute e tentar encontrar a melhor solução. Valeuuu!!Links: http://nosql.techinsider.com.br

×