Domanda

Sto cercando di capire come meglio implementare questo per il mio sistema ... e ottenere la testa fuori dallo spazio RDBMS per ora ...

Una parte del mio attuale DB ha tre tabelle: Show, ShowEntry, ed entrata. Fondamentalmente ShowEntry è una tabella molti-a-molti unione tra Show e ingresso. Nei miei RDBMS pensando che è abbastanza logico in quanto eventuali modifiche Mostra dettagli può essere fatto in un unico luogo, e lo stesso con Entry.

Qual è il modo migliore per riflettere questo in un documento di archiviazione basata su? Sono sicuro che non esiste un modo di fare questo, ma non posso fare a meno di pensare se l'archiviazione dei documenti-based è appropriato per questo caso a tutti.

Cordiali saluti, Attualmente sto pensando di attuazione RavenDB. Mentre discussioni sul disegno generale NoSQL sarà buono un altro RavenDB focalizzata uno sarà fantastico!

Grazie, D.

È stato utile?

Soluzione

Quando modellare una relazione molti-a-molti in un database di documenti, è solito memorizzare una collezione di chiavi esterne in solo uno dei documenti. Il documento che si sceglie dipende in gran parte la direzione che si intende attraversare il rapporto. Attraversandola un modo è banale, attraversando il contrario richiede un indice.

Prendiamo l'esempio cestino di acquisto. E 'più importante sapere esattamente quali elementi sono in un particolare cestino di cui cestini contengono un elemento particolare. Dal momento che stiamo di solito segue la relazione in direzione basket-a-punto, ha più senso per ID elemento negozio in un cesto di quanto non faccia agli ID cestino memorizzare in una voce.

È ancora possibile attraversare il rapporto nella direzione opposta (per esempio trovare cesti contenenti un elemento particolare) utilizzando un indice, ma l'indice verrà aggiornato in background in modo che non sarà sempre accurate al 100%. (È possibile attendere per l'indice di diventare preciso con WaitForNonStaleResults, ma che il ritardo mostrerà nella vostra interfaccia utente.)

Se avete bisogno di immediata precisione del 100% in entrambe le direzioni, è possibile memorizzare le chiavi esterne in entrambi i documenti, ma l'applicazione dovrà aggiornare due documenti ogni volta che viene creata o distrutta una relazione.

Altri suggerimenti

Questo è andato un lungo strada verso la risoluzione mia domanda!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top