Mude seu jeito de pensar com MongoDB
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
911
On Slideshare
911
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
8
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. MUDE SEU JEITODE PENSARCOMMONGODBAutor: Douglas Lira – douglas.lira.web@gmail.com
  • 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. 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. 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