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 gugacdb
      Gostaria de uma ajuda com uma questão relacionada ao nodejs.
       
      Estou tentando salvar informações que recebo de um arquivo local json ao banco de dados.
       
      esse arquivo me traz varias objetos, e o que preciso fazer é salvar objeto por objeto exemplo:
       
      let pessoa = [ {nome : 'Fulano1' , sobrenome : 'Beltrano1', idade : 80} {nome : 'Fulano2' , sobrenome : 'Beltrano2', idade : 90} {nome : 'Fulano3' , sobrenome : 'Beltrano3', idade : 100} ]  
      Estou realizando um laço para salvar cada volta, pois preciso inferir uma data em cada objeto.

      Estou tentando salvar utilizado o:
       
      do{}while(i > contador) Código que estou tentando usar:
       
      setUm = async (req, res, next) => { fs.readFile('./public/assets/images/data_dragon/pt_br/data/set1-pt_br.json' , 'utf8' , function(err , data ){ if(err){ return console.log('erro ao ler o arquivo'); } let jsonData = JSON.parse(data); let counter = jsonData.length; let i = -1; do{ i = i + 1; let dataSave = { associatedCards : jsonData[i].assets, associatedCardRefs : jsonData[i].associatedCardRefs, assets : jsonData[i].assets, region : jsonData[i].region, egionRef : jsonData[i].regionRef, attack : jsonData[i].attack, cost : jsonData[i].cost, health : jsonData[i].health, description : jsonData[i].description, descriptionRaw : jsonData[i].descriptionRaw, levelupDescription : jsonData[i].levelupDescription, levelupDescriptionRaw : jsonData[i].levelupDescriptionRaw, flavorText : jsonData[i].flavorText, artistName : jsonData[i].artistName, name : jsonData[i].name, cardCode : jsonData[i].cardCode, keywords : jsonData[i].keywords, keywordRefs : jsonData[i].keywordRefs , spellSpeed : jsonData[i].spellSpeed, spellSpeedRef : jsonData[i].spellSpeedRef, rarity : jsonData[i].rarity, rarityRef : jsonData[i].rarityRef, subtype : jsonData[i].subtype, subtypes : jsonData[i].subtypes, supertype : jsonData[i].supertype, type : jsonData[i].type, collectible : jsonData[i].collectible, set : jsonData[i].set, } const infosave = new Infocard(dataSave); try{ infosave.save(); }catch (e) { console.error('ROLOU ALGO DE ERRADO: '+ e.message); } }while(i < counter); res.json(dataSave); }); }  Abaixo meu model:
       
      const Infocard = new mongoose.Schema( { associatedCards : [String], associatedCardRefs : [String], assets : [String], region : String, regionRef : String, attack : Number, cost : Number, health : Number, description : String, descriptionRaw : String, levelupDescription : String, levelupDescriptionRaw : String, flavorText : String, artistName : String, name : String, cardCode : String, keywords : [String], keywordRefs : [String], spellSpeed : String, spellSpeedRef : String, rarity : String, rarityRef : String, subtype : String, subtypes : [String], supertype : String, type : String, collectible : Boolean, set : String, },{ timestamps : {createdAt : 'created_at'} } );
       
      Porem não estou obtendo sucesso. Quando chamo
      res.json(jsonData) o json carrega normalmente no navegador com todas as informações, porém quando vou tentar salvar no banco de dados os itens chegam vazios

      Ideias são apreciadas.

      Obrigado!
    • By SampaioK12
      Eai Galera iniciando na área..
       
      Alguém sabe me explicar porque a Maioria das aplicações do Node Js são feitas com o Mongo(NoSQL)?..
       
      Todas as pesquisas que fiz referencia o NodeJS com o Mongo...
    • By AlessandroAOM
      Pessoal estou implementando uma classe em JS usando o Nodejs e estou recebendo  a mensagem "TypeError: categoriasDAO.inserirCategoria is not a function"
       
      o arquivo da classe segue
      //Categoria DAO function categoriasDAO(connection){     this._connection = connection(); } categoriasDAO.prototype.inserirCategoria = function(categoria){     this._connection.open(function(err, mongoclient){         mongoclient.collection("categorias", function(err, collection){             collection.insert(categoria);             mongoclient.close();         });     }); } module.exports = function(){     return categoriasDAO; } eu estou chamando ela no arquivo server.js apenas para testar  o procedimento.
      'use strict' require('dotenv').config() const express = require('express'); const path = require('path'); const app = express(); var cookieParser = require('cookie-parser');  const session = require('express-session') const bodyParser = require('body-parser'); const sessionStore = require('./config/promiseConnection'); const connection = require('./config/dbConnection'); var categoriasDAO = require('./models/categoriasDAO'); categoriasDAO = new categoriasDAO(connection); console.log(categoriasDAO) ; categoriasDAO.inserirCategoria({categ: "Nova",                                 descricao : "Nova categoria" }                            ); quando ele vai executar a ultima linha acima ele gera a mensagem de erro.
      C:\Users\Alessandro.Oliveira\Documents\VsStudio\Nodejs\novopassportestudar\server.js:14 categoriasDAO.inserirCategoria({categ: "Nova",               ^ TypeError: categoriasDAO.inserirCategoria is not a function  
      O que estou fazendo de errado ou o que falta fazer?
       
      Obrigado!
       
    • By User386_Denilson
      e aí pessoal, blz?
       
      Vou colocar aqui minha duvida...
      Tenho um projeto em net Core 2.2, usadon mongodb. Tenho uma collection antiga (Pessoas) que o pessoal foi alimentado com muita coisa, e agora estou organizando em pessoa fisica e pessoa juridica.
      Eu faço a busca usando o filtro por id:
      public async Task<PessoaDadosCad> GetPessoaFisica(string id) { var pessoa = await passaiMongoCollection.FindAsync(pessoa => pessoa.Id == id); var data = JsonConvert.SerializeObject(await pessoa.FirstOrDefaultAsync()); PessoaDadosCad simplifiedPerson = JsonConvert.DeserializeObject<PessoaDadosCad>(data.ToString()); return simplifiedPerson; }  
      (pessoa => pessoa.Id == id) ao executar esse comando de busca, a classe vinculada é Pessoa.
      Eu queria ver com vcs se tem como não vincular uma classe no momento da busca??
      Obrigado
    • By brunopeople
      Eu estou fazendo um projeto de CRUD consumindo uma API Restfull com banco de dados mongoDB para uma teste de vaga de emprego, eu fiz a aplicação e ela roda sem erros nenhum, porém ao adicionar o registro do post ele não está adicionando o registro no banco de dados? Eu não consegui realmente encontrar o erro do por que isto está acontencendo ou por que? eu gostaria muito de alguém me ajudasse. 
       
      https://github.com/brunopeople/Teste-RedFox-Full-Stack
×

Important Information

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