Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Glauber Borba

Replicar atualização

Recommended Posts

Boa tarde Pessoal,

 

Estou em dúvida quanto a replicação de uma atualização em nosql. Por exemplo...

 

Estou utilizando o modelo chave-valor para armazenar dados similares a um pedido de amizade...

 

 

tenho uma row que armazena todos os dados do usuário... nome, e-mail, senha onde o campo e-mail = key. "Sabemos que e-mail é único". Uma outra coluna seria pedidos de amizade. onde eu armazeno o nome e e-mail do solicitante. (Dois campos em uma única coluna)

 

Até ai tudo bem, está identificado na minha tabela quem me pediu amizade, como o nome também consta, não precisarei fazer join igual ao modelo relacional. Ai vem o problema...

 

Caso o usuário que pediu amizade altere o nome, como alterar na minha coluna de pedidos de amizade?

 

Existe uma forma ou estou modelando errado meu banco?

 

Desde já agradeço,

 

Glauber Borba

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi prog, Nos tutorias que ando lendo não encontrei nada referente a Identificador Global, vou ver como aplicar.

 

Um exemplo seria essa imagem

 

http://2.bp.blogspot.com/-s0V_qCXq2i8/UJnoD-FsnKI/AAAAAAAAADY/4w_SOvIp2XI/s1600/twitter.jpg

 

Caso o usuário Nice altere seu nome, terei que alterar tbm na tabela following, followers e em todas as outras que tenha o Nome Nice, terei que varrer todo o meu banco para saber onde a Nice está ativa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmmmmm... não vejo desta forma, no mundo noSQL há vários tipos de soluções, uma mais adequada para o tipo de solução que será implementada.

 

Se pensar que sua solução é Orientada a Documentos (se não me engano o Twitter usa Cassandra, mas não tenho como confirmar este dado), um noSQL que pode atender bem, por exemplo, é o MongoDB, mas para cada tipo de solução você precisa fazer uma estrutura de dados ("modelagem") diferente.

 

Neste tipo de modelo você imagina que, cada link ou renderização de página é um documento e, para cada um desses resultados você vai precisar de todos os dados para compor o documento (página) inteiro, logo, você não vai precisar ficar indo buscar nada em outros registros do noSQL, tudo já esta num mesmo registro.

 

Ah, mas se @Fulano segue @Cicrano?

Tudo bem, se você esta no documento de @Fulano vai aparecer que ele tem uma relação com @Cicrano, e vice-versa (caso isto seja verdade), mas nenhuma outra informação de @Cicrano aparece no documento (página) de @Fulano. Para ver o documento (página) de @Cicrano você necessariamente precisa clicar nele, ou seja, abrir um novo documento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi. Pra esse tipo de problema vou utilizar dois bancos em servidores separados... o Neo4j para os relacionamentos que guardará apenas o ID do usuário, e um banco baseado em documentos com as demais informações incluindo o mesmo ID do banco Neo4j. Agora as postagens dos usuários tipo a do face... tem uma dica de como modelar ela em NoSQL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não chego a achar que seja necessário utilizar 2 soluções distintas para este problema, a não ser que tenha uma visão muito além que pode vir a tornar essas relações tão complexas. Apenas uma solução noSQL deve ser suficiente, o Neo4j esta mais para Linkedin do que para Twitter/Facebook.

 

Se sua solução já nasceu pensando em usar um Banco de Dados Gráfico, tudo bem, siga em frente, mas aí não vejo a necessidade de haver um outro banco de dados orientado a documentos.

 

Se quiser falar um pouco mais sobre seu problema, fique a vontade.

 

A ideia básica do Facebook não é tão diferente do Twitter.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Prog, a minha aplicação vai trabalhar com gráficos, vou utilizar outro banco baseado em documento por conta da escalabilidade.

 

No caso de armazenar as solicitações no documento ficaria mais o menos assim...

 

//Modelo de banco baseado em documento

 

* Documento João

 

[id]-> 111

[nome]-> João Paulo

[idade]-> 20 anos

[solicitação de amizades]-> 222

-> 333

 

* Documento Ana

 

 

[id]-> 222

[nome]-> Ana Carla

[idade]-> 20 anos

 

 

Com isso eu armazeno em um arrazy os dados da coluna solicitações de amizade que no caso é o ID e busco o nome do contato no documento que corresponde a esse ID e retorno pra o usuário. Do meu ponto de vista funciona!!

 

Mas ainda to pensando como vou armazenar as postagens com comentários.

 

Obrigado, está esclarecendo cada vez mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.