Jump to content
Marcosvn

Sistema de seguidores e curtidas com MongoDB

Recommended Posts

estou desenvolvendo um site para escritores que irá possui um sistema de seguidores, curtidas e comentários. Minha intenção é fazer esse site utilizando o Mongodb + nodejs + vuejs.

 

Minha dúvida é com relação ao sistema de seguidores e curtidas. Seria viável desenvolver esse projeto utilizando o mongoDB ? Alguém pode me dar uma noção de qual seria a melhor maneira de organizar o esquema do banco de dados para tal finalidade ?

Share this post


Link to post
Share on other sites

Marcosvn

Retirado de pesquisa google: MongoDB é um software de banco de dados orientado a documentos livre, de código aberto e multiplataforma, escrito na linguagem C++. Classificado como um programa de banco de dados NoSQL, o MongoDB usa documentos semelhantes a JSON com esquemas...

 

Leia o links abaixo para saber qual Banco de Dados usar.

MySQL vs SQL Server vs MongoDB vs PostgreSql

 

Eu apenas recomendo ter em mente a forma de como você ira construir sua aplicação sobre o Banco de Dados e você precisa levar em conta qual Banco de Dados possui mais informações na internet para soluções de dúvidas e problemas pois isso facilita e muito sua construção quando você encontrar uma barreira, qual tem melhor Custo Beneficio e qual ira responder melhor a sua aplicação.

 

Eu uso o MySQL com PHP  com ASP e com Java e no meu trabalho uso DB2 com COBOL e Java.

 

Se a minha resposta for útil não esqueça de agradecer e votar positivo.

Espero ter ajudado de alguma forma.

 

Att
Felipe Guedes Coutinho

 

 

Share this post


Link to post
Share on other sites

Agradeço a intenção mas realmente não me ajudou. Eu preciso de uma opinião no sentindo de me explicar se é viável produzir um site para publicação de textos que envolve sistema de curtidas e seguidores através do mongoDB.

 

Pelo que eu sei, o pessoal não costuma aconselhar a utilização do mongoDB quando existem muitos JOINS e relacionamentos entre tabelas. Mas não sei qual o limite desse muitos. Por isso eu preciso de alguem que trabalhe com mongodb para me dar essa luz.

 

abraço

Share this post


Link to post
Share on other sites

Não vejo problema algum, no mongo você trabalha com referencias ou documentos embutidos.

Se precisar juntar varias collections use o operador de agregação $lookup "disponível a partir da v3.2"

 

Share this post


Link to post
Share on other sites
14 horas atrás, Williams Duarte disse:

Não vejo problema algum, no mongo você trabalha com referencias ou documentos embutidos.

Se precisar juntar varias collections use o operador de agregação $lookup "disponível a partir da v3.2"

 

 

Obrigado William, era bem essa ideia q eu precisava. Mas vamos supor que um usuario siga uns 10 mil escritores, na hora de listar os usuarios q este membro segue o desempenho seria melhor que o mysql ?

 

Eu estou pensando em seguir essa estrutura:

1. Coleção users:
- userid
- username
- userpass

2. Coleção Seguindo:
- userid
- [array Userid]


3. Coleção Seguido:
- userid
- [array Userid]

 

O que acha desse esquema ? Me parece funcional, mas na prática ele funcionaria bem ?

 

abraço

Share this post


Link to post
Share on other sites

Desculpe a demora, mongodb por ser um banco NoSql, sempre sera mais rápido que os relacionais. 

Devido o mongodb, nao ser tão rigido, você faz qualquer coisa!

 

Agora, ele trás qualquer coisa rapidamente, desde que esteja com os indicies criados corretamente.

 

Em 02/08/2019 at 15:02, Marcosvn disse:

Eu estou pensando em seguir essa estrutura:


1. Coleção users:
- userid
- username
- userpass

2. Coleção Seguindo:
- userid
- [array Userid]


3. Coleção Seguido:
- userid
- [array Userid]

 


Acredito ser a melhor opção, é esta forma acima!

 


Outra maneira, mas seria incorporando no documento de usuario. Desta forma teria uma unica colection.

{
    "_id":"60gd8nb530043e3c569af288", 
    "name":"William Duarte", 
    "follower"["30fd6bb530043e3c569af283","30fd6bb530043e3c669af283","30fd6bb530043e3c569af283"],
    "following":["40fd6bb530043e3c569af286","49fd6bb530043e3c566af45o"]
}

 

Share this post


Link to post
Share on other sites
Em 15/08/2019 at 14:12, Williams Duarte disse:

 


{
    "_id":"60gd8nb530043e3c569af288", 
    "name":"William Duarte", 
    "follower"["30fd6bb530043e3c569af283","30fd6bb530043e3c669af283","30fd6bb530043e3c569af283"],
    "following":["40fd6bb530043e3c569af286","49fd6bb530043e3c566af45o"]
}

 

 

Essa maneira que vce mencionou me parece bem mais adequado. Vou fazer nesse esquema. Muito obrigado pela força.

 

Abraço

 

Share this post


Link to post
Share on other sites

Só me tira mais uma dúvida. Supondo que meus documentos no mongodb irão armazenar informação de seguidores, comentários e likes, em um dado momento eu não poderia atingir o limite de 16mb por tamanho de documento? Numa hipotese onde possa existir milhoes de seguidores, curtidas e comentários, qual seria a melhor abordagem para não correr esse risco ?

Share this post


Link to post
Share on other sites

Acredito que sim, mas comentarios e likes estaria relacionado a outras colecções e não a uma collection Person por exemplo.

Sobre comentários de uma lida aqui

 

Mas seu exemplo seria bem melhor, ai usa
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/

Teria consitencia dos dados, e a nova versão do mongo:latest da suporte a varias operações existentes em banco relacionais, como por exemplo Transações, que antes era inexistente, nas <= 3.*, e joins é moleza!

https://docs.mongodb.com/manual/core/transactions/
 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Tadeu Neto
      Boa tarde, estou tentando criar uma pesquisa no mongo em que ao digitar uma palavra ele pesquise tanto por palavras acentuadas quanto sem ex: água, agua, café, cafe, cafee, joão, joao e assim vai. 
       
      Já vi algumas coisas mais não consegui ter o resultado necessário, pode ser por minha falta de experiência.
       
      Obrigado pela ajuda.
    • By osmar15
      Olá pessoal !
       
      Gostaria de saber se algum de vocês possui algum conhecimento a respeito de migração entre bancos de dados...
       
      Meu objetivo seria definir por exemplo, como uma tabela com relacionamento N para N, 1 para N e etc ... se estruturaria em um ou mais documentos do MongoDB?
       
      São para fins educacionais, que envolvem meu TCC, não possuo nenhuma base relacional especifica para ser tratado em cima, seria de uma forma mais abrangente mesmo, o único requisito é que seja feita essa migração para o MongoDB.
    • By kukamax
      Boa noite, como pegar este form,  transforma num json pra inserir no mongodb, com php json_decode
      <form id="form1" name="form1" method="post" action="json.php"> <p><label>Nome:</label><input type="Text" name="campo[nome]" id="campo[]"></p> <fieldset class="modalidade"> <p><input type="checkbox" name="campo[]" id="campo[modalidade]" value="Futebol" id="campo[]" >Futebol</p> <p><input type="checkbox" name="campo[]" id="campo[modalidade]" value="Futsal" id="campo[]">Futsal</p> </fieldset> <input type="submit" value="Submeter" /> </form> e sa saida do json_decode:
      $compo = {"nome":"Fulano","modalidade":["Futsal","Volei"]};
      desde já obrigado
    • By diego.baiao
      Olá boa tarde!
       
      Queria tirar uma duvida de como posso melhorar o desempenho no cenário citado abaixo: 1 - Aplicação desenvolvido com PHP (Zend Framework 1) * sei que esta obsoleto mais... o código é extenso demais para mudança agora! 2 - Banco de dados Postgres 9.6.0 (um banco unico onde tudo está nele, relatorios, envios, etc... todo serviço nele)
       
      O sistema: 1.1 - Plataforma de envios de mensagens via web e via api, com diversos tratamentos pesados incluindo "strings". (citei string que sabemos que compração de string é pesada) e tem clientes que enviam 50.000 em requisições exemplo de 5000 cada requisição... tem envios que chegam a 140.000 e nossa aplicação pega e trata tudo que tiver disponível em cada tarefa no CRON que passa de minuto em minuto.
       
      2.2 - Banco de dados "Postgres" com diversas tabelas interligadas (80 tabelas) mais ou menos, usamos indexadores em algumas tabelas com campos de "inteiros" e "datas". (melhorou bem) mais mesmo assim está ruim o banco arreia constantemente com picos de 100% no hardware. A questão não é aumetnar o hardware por que o mesmo é bem pontente e com sobras para atender nossas necessidades.
       
      Nosso banco de dados tem em media 5.5 GB de dados e em média chega a aumentar por dia 100MB com picos de vez em quando de 300MB .
      Quando temos envios muito grandes isso consume muito banco, nosso sistema funciona de modo que temos tarefas rodando em segundo plano que são chamadas em periodos programados sendo que as mais importantes rodam de minuto a minuto, isto é, a cada 1 minuto.
       
      O hardware é potente 8 nucleos de processamento e 16GB de ram da Azure.
       
      Passamos por muitas vezes com altos disparos dessas mensagens e a gama de tratamento nas mensagens e endereços fazem o banco chegar a picos de 100% fazendo as vezes o nosso sistema ficar fora do ar por alguns segundos.
       
      Estávamos pensando em usar MONGO_DB / NO SQL para montar um segundo banco de dados e separar os serviços em microserviços para aliviar as rotinas da aplicação e estressar menos o banco de dados.Também balanceamento de carga mais seria em segundo momento...
       
      Alguém teria uma dica de correção na implementação para conseguir uma melhora no serviço para suavizar esses processos de pesados, tipo dividir o banco em servidores diferentes, usar mciroserviços, algum tipo de banco especifico que alguem tenha experiência e esteja rodando atualmente, alguma técnica funcional para esse caso ?
    • By Lyma25
      Olá, gostaria de pedir uma ajuda, tentei vários tutoriais mas nada resolveu.
      Tenho um projeto, e preciso fazer a conexão do PHP com o MongoDB. O S.O. é Windows 7, o WampServer (Server Software: Apache/2.4.9 (Win64) PHP/5.5.12) eu já tinha instalado, baixei o MongoDB (versão 3.4), a DLL http://pecl.php.net/package/mongodb, e baixei também o Compuser. Fiz tudo conforme vários tutoriais que assisti, e li. Porém ainda sim não está conectando. No phpinfo() não está aparecendo o Mongo, não sei qual o problema, e se alguém puder me auxiliar, agradeceria muiiito!

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.