Array Mongodb vs oggetto

1

Nuovo con Mongodb, e non sono sicuro di quali implicazioni o benefici ci siano tra l'uso di un array e un oggetto.

..

  1. Come sopra quali sono le implicazioni e i benefici tra l'uso di matrici e oggetti?

  2. Ad esempio il mio caso. L'idea è di memorizzare un documento con un tempo di "cattura" e 2000 slot di contatori "pacchetto". Ho usato l'oggetto per archiviare i pacchetti vedere questo , ma a quanto pare sembra meglio usare gli array. Che tipo di considerazioni dovresti fare per determinare se un array o un oggetto sono più adatti (con l'esempio)?

posta resting 31.05.2013 - 07:04
fonte

1 risposta

1

Non esiste un modo "giusto" per usare MongoDB, solo trade-off. Facciamo un semplice esempio:

Opzione 1: avere tutto in un documento e $push pacchetti in un array

Opzione 2: crea un nuovo documento per ogni pacchetto. Ciascuno punta al proprio oggetto "padre".

I compromessi:

  1. Durante la ricerca di un pacchetto, l'opzione 1 restituirà l'intero documento e non ti dirà dove si trova il pacchetto nell'array. L'opzione 2 restituirà il pacchetto specifico.

  2. L'opzione 1 fallirà e morirà se hai troppi pacchetti (a causa del limite di 16 MB sulle dimensioni del documento)

  3. L'opzione 1 è molto più veloce se si elencano sempre tutti i pacchetti per un oggetto specifico. L'opzione 2 richiede molti dischi cerca di caricare tutti i pacchetti. Sui moderni dischi rigidi, le ricerche disco sono 100 volte più lente delle letture sequenziali su disco.

  4. L'opzione 2 richiede un po 'più di spazio su disco (perché tutti devono collegarsi al genitore, invece che implicitamente come nell'opzione 1).

  5. L'opzione 2 ha un tempo di scrittura approssimativamente costante, ma l'opzione 1 avrà un tempo di scrittura variabile. Nell'opzione 1, si espande un documento esistente quando si aggiungono pacchetti. A volte non si adatta e deve essere spostato da qualche altra parte. Questo può rallentare il sistema. Ma se aggiungi costantemente pacchetti a un documento alla volta, probabilmente verrà spostato verso la fine, dove può espandersi senza essere spostato, quindi è leggermente migliore.

La regola generale è la seguente: presumere sempre che memorizzerai tutto in un documento finché non trovi un motivo per romperlo. Ma attenzione ai trade-off in ogni modo.

    
risposta data 22.09.2013 - 01:48
fonte

Leggi altre domande sui tag