Estou tentando descobrir o equivalente a chaves estrangeiras e índices em bancos de dados NoSQL KVP ou Document. Uma vez que não há tabelas centrais (para adicionar chaves que marcam uma relação entre dois objetos), estou realmente perplexo sobre como você seria capaz de recuperar dados de uma forma que seria útil para páginas da web normais.
Digamos que eu tenha um usuário e esse usuário deixe muitos comentários em todo o site. A única maneira que consigo pensar para acompanhar os comentários dos usuários é
- Incorpore-os no objeto do usuário (o que parece bastante inútil)
- Crie e mantenha um
user_id:comments
valor que contém uma lista da chave de cada comentário [comentário: 34, comentário: 197, etc ...] para que eu possa buscá-los conforme necessário.
No entanto, tomando o segundo exemplo, você logo atingirá uma parede de tijolos ao usá-lo para rastrear outras coisas como uma chave chamada "active_comments", que pode conter 30 milhões de ids, fazendo com que custar uma tonelada para consultar cada página apenas para saber alguns comentários ativos. Também seria muito sujeito a condições de corrida, pois muitas páginas poderiam tentar atualizá-lo ao mesmo tempo.
Como posso rastrear relações como as seguintes em um banco de dados NoSQL?
- Todos os comentários de um usuário
- Todos os comentários ativos
- Todas as postagens marcadas com [palavra-chave]
- Todos os alunos em um clube - ou todos os clubes em que um aluno está
Ou estou pensando sobre isso incorretamente?