Sto cercando di capire l'equivalente di chiavi e indici esterni nei database KVP o Documento NoSQL. Dal momento che non ci sono tabelle pivotali (per aggiungere chiavi che segnano una relazione tra due oggetti) sono davvero stordito su come si sarebbe in grado di recuperare i dati in un modo che sarebbe utile per le normali pagine web.Come monitorare le relazioni record in NoSQL?
Dire che ho un utente e questo utente lascia molti commenti in tutto il sito. L'unico modo che posso pensare di tenere traccia di che i commenti degli utenti è quello di
- Embed loro in oggetto utente (che sembra abbastanza inutile)
- Creare e mantenere un valore
user_id:comments
che contiene un elenco di ogni commento di chiave [commento: 34, commento: 197, ecc ...] in modo che possa recuperarli secondo necessità.
Tuttavia, prendendo il secondo esempio vi sarà presto colpito un muro di mattoni quando lo si utilizza per il monitoraggio altre cose, come una chiave denominata "active_comments" che potrebbero contenere 30 milioni di ID in esso che lo rende costato una tonnellata a interrogare ogni pagina solo per conoscere alcuni commenti attivi recenti. Sarebbe anche molto incline a condizioni di gara poiché molte pagine potrebbero provare ad aggiornarlo allo stesso tempo.
Come si possono tracciare relazioni come le seguenti in un database NoSQL?
- Tutti i commenti di un utente
- Tutti i commenti attivi
- Post con tag [parola chiave]
- Tutti gli studenti in un club - o tutti i club uno studente è in
Oppure sto pensando a questo in modo errato?
Non c'è un modo per farlo nei database NoSQL, questa domanda è piuttosto un parente a chiedere come vorrei tracciare relazioni in programmi C. – stonemetal
Wow, quindi suppongo che l'hype su NoSQL che sostituisce RDBMS sia impossibile. – Xeoncross
Sì, NoSQL è sicuramente overhyped. Non sto dicendo che le nuove tecnologie non siano utili nelle giuste circostanze, ma è ridicolo pensare che sostituiranno l'RDBMS. Vedi http://en.wikipedia.org/wiki/Hype_cycle –