Seguidores - mongodb database design
Portanto, estou usando o mongodb e não tenho certeza se tenho o melhor / correto design de coleção de banco de dados para o que estou tentando fazer.
Pode haver muitos itens, e um usuário pode criar novos grupos com esses itens. Qualquer usuário pode seguir qualquer grupo!
Não adicionei apenas os seguidores e os itens à coleção do grupo, pois pode haver 5 itens no grupo ou 10000 (o mesmo para os seguidores) e, a partir de pesquisas, acredito que você não deve usar matrizes não acopladas (onde as limite é desconhecido) devido a problemas de desempenho quando o documento precisa ser movido devido ao tamanho em expansão. (Existe um valor máximo recomendado para comprimentos de matriz antes de encontrar problemas de desempenho?)
Eu acho que, com o design a seguir, um problema de desempenho real pode ser quando eu quero obter todos os grupos que um usuário está seguindo para um item específico (com base no user_id e item_id), porque então tenho que encontrar todos os grupos o usuário está seguindo e a partir disso encontre todos os grupos de itens com o group_id $ in e o ID do item. (mas não vejo outra maneira de fazer isso)
Follower
.find({ user_id: "54c93d61596b62c316134d2e" })
.exec(function (err, following) {
if (err) {throw err;};
var groups = [];
for(var i = 0; i<following.length; i++) {
groups.push(following[i].group_id)
}
item_groups.find({
'group_id': { $in: groups },
'item_id': '54ca9a2a6508ff7c9ecd7810'
})
.exec(function (err, groups) {
if (err) {throw err;};
res.json(groups);
});
})
Existem padrões de banco de dados melhores para lidar com esse tipo de configuração?
UPDATE: Exemplo de caso de uso adicionado no comentário abaixo.
Qualquer ajuda / conselho será realmente apreciada.
Muito obrigado, Mac