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. ...
Próximos SlideShares
Carregando em…5
×

Mude seu jeito de pensar com MongoDB

1.091 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.091
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
20
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

×