Recientemente estoy explorando bases de datos NoSQL. Necesito un consejo sobre cómo almacenar datos de la manera más óptima y eficiente para un problema determinado. Me estoy dirigiendo a MongoDB, ahora. Sin embargo, debería ser lo mismo con CouchDB.Necesito un consejo acerca de NoSQL/MongoDb y la estructura de datos/modelos
Digamos que tenemos estos 3 modelos:
Story:
id
title
User:
id
name
Vote:
id
story_id
user_id
Quiero ser capaz de pedir a la base de datos de estas preguntas:
- que ha votado por esta noticia?
- ¿Para qué ha votado este usuario?
Estoy haciendo uniones simples mientras trabajo con una base de datos relacional. La pregunta es, ¿cómo debo almacenar los datos de esos objetos para ser más eficiente?
Por ejemplo, si almaceno los objetos Vote como una subcolección de Historias, no será fácil obtener la información - "Por lo que un usuario ha votado".
Bueno, de hecho, quiero almacenar más información en un modelo de Voto. Por ejemplo: created_at, ip, user_agent. ¿Debo almacenar los datos en la lista de historias de la colección de usuarios? –
Puede almacenar los votos como una matriz de sub documentos, cada uno como '{story_id: ..., created_at: ..., ip: ...}', etc. Luego la consulta se convierte en 'find ({'stories .story_id ': ...}) '. Puedes indexar sobre eso, también. – mdirolf
Bueno, tengo una base de datos bastante grande con unos pocos registros M y probaré el escenario anterior. –