MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Performance di MongoDB:quanti database, raccolte?

Approccio 1(A): Creazione di un unico database per tutto. (Con collezione singola)

Pro:

  • Meno manutenzione:backup, creazione di utenti di database, ripristino ecc.

Contro:

  • Potresti vedere blocco a livello di database per la creazione di indici su database di grandi dimensioni
  • Per eseguire operazioni su dati sensori specifici, è necessario aggiungere indici aggiuntivi per recuperare solo la raccolta specifica del sensore
  • Sei obbligato a creare non più di 64 indici su un'unica collezione. Anche se suona male strategia di indicizzazione.

Approccio 1(B): Creazione di un unico database per tutto. (Con 1 raccolta per ogni sensore)

Pro:

  • Meno manutenzione:backup, creazione di utenti di database, ripristino ecc.
  • Riduce al minimo la necessità di creare indici per identificare i dati specifici del sensore dall'intera raccolta monolitica
  • Ogni query specifica del sensore verrà indirizzata solo a una raccolta specifica. Non richiede il pull di un set di lavoro di grandi dimensioni in memoria rispetto a una singola raccolta di grandi dimensioni.
  • Costruire l'indice su una raccolta relativamente più piccola è più fattibile rispetto a quello della raccolta di grandi dimensioni in un singolo DB

Contro:

  • Potresti finire per creare troppi indici. (Somma del numero totale di indici su tutte le raccolte).
  • È necessaria più manutenzione per un numero elevato di indici.
  • WiredTiger crea internamente 1 file per una raccolta e 1 per l'indice. Se il tuo caso d'uso cresce con un numero elevato di sensori. Potresti finire per usare un limite di file aperti di 64.000.

Per quanto riguarda le prestazioni, è importante suddividere i dati in base a ciascun sensore o in base alle metriche?

  • Ciò dipende dai modelli di accesso previsti dalla tua app di analisi.

Per quanto riguarda le prestazioni, dovrei creare una raccolta solo per le informazioni sui sensori e quindi raccolte per i dati o semplicemente unire i due nella stessa raccolta?

  • Potrebbe essere necessario creare una raccolta per i metadati e i dati dei sensori. Ridurrà al minimo la duplicazione dei metadati dei sensori in tutti i dati dei sensori raccolti.

  • Ti potrebbe piacere leggere Post del blog Williams qui sulla progettazione di questo modello.

Come sempre, è meglio progettare uno schema di esempio e testare le tue query all'interno del tuo ambiente di test.