Estoy tratando de averiguar el equivalente de claves e índices externos en NoSQL KVP o bases de datos de documentos. Dado que no hay tablas pivotales (para agregar claves que marcan una relación entre dos objetos), estoy realmente perplejo en cuanto a cómo podría recuperar datos de una manera que sería útil para páginas web normales.
Digamos que tengo un usuario, y este usuario deja muchos comentarios en todo el sitio. La única forma que se me ocurre para realizar un seguimiento de los comentarios de los usuarios es
- Incrustarlos en el objeto de usuario (que parece bastante inútil)
- Cree y mantenga un
user_id:comments
valor que contenga una lista de la clave de cada comentario [comentario: 34, comentario: 197, etc.] para que pueda recuperarlos según sea necesario.
Sin embargo, tomando el segundo ejemplo, pronto se encontrará con una pared de ladrillos cuando lo use para rastrear otras cosas, como una clave llamada "active_comments", que puede contener 30 millones de identificadores, por lo que cuesta una TONELADA consultar cada página solo para conocer algunos datos recientes. comentarios activos. También sería muy propenso a las condiciones de carrera, ya que muchas páginas podrían intentar actualizarlo al mismo tiempo.
¿Cómo puedo rastrear relaciones como las siguientes en una base de datos NoSQL?
- Todos los comentarios de un usuario
- Todos los comentarios activos
- Todas las publicaciones etiquetadas con [palabra clave]
- Todos los estudiantes en un club, o todos los clubes en los que está un estudiante
¿O estoy pensando en esto incorrectamente?