Ricerca…


Osservazioni

In MongoDB 3.0, MMAP (predefinito) e WiredTiger sono i motori di archiviazione stabili. Di solito, se la tua app è pesante per la lettura, utilizza MMAP. Se è pesante in scrittura, usa WiredTiger.

La soluzione potrebbe anche disporre di un insieme di set di repliche miste in cui è possibile configurare un nodo con MMAP e un altro con WiredTiger. Puoi usarne uno per inserire enormi dati e l'altro per leggere con strumenti analitici.

Dopo MongoDB 3.2, WiredTiger diventa il motore predefinito.

MMAP

MMAP è un motore di archiviazione innestabile che è stato chiamato dopo il comando mmap() Linux. Associa i file alla memoria virtuale e ottimizza le chiamate di lettura. Se hai un file di grandi dimensioni ma devi leggerne solo una piccola parte, mmap() è molto più veloce di una chiamata read() che porta l'intero file alla memoria.

Uno svantaggio è che non è possibile avere due chiamate in scrittura elaborate in parallelo per la stessa raccolta. Quindi, MMAP ha il blocco a livello di raccolta (e non il blocco a livello di documento come offerte WiredTiger). Questo blocco di raccolta è necessario perché un indice MMAP può fare riferimento a più documenti e se tali documenti potrebbero essere aggiornati contemporaneamente, l'indice sarebbe incoerente.

WiredTiger

WiredTiger supporta gli alberi LSM per memorizzare gli indici . Gli alberi LSM sono più veloci per le operazioni di scrittura quando è necessario scrivere enormi carichi di lavoro di inserti casuali.

In WiredTiger non ci sono aggiornamenti sul posto . Se è necessario aggiornare un elemento di un documento, verrà inserito un nuovo documento mentre il vecchio documento verrà eliminato.

WiredTiger offre anche una concorrenza a livello di documento . Presuppone che due operazioni di scrittura non influenzeranno lo stesso documento, ma se lo fa, un'operazione verrà riavvolto ed eseguita successivamente. È un grande incremento di prestazioni se i riavvolgimenti sono rari.

WiredTiger supporta gli algoritmi Snappy e zLib per la compressione di dati e indici nel file system. Snappy è l'impostazione predefinita. È meno intensivo della CPU ma ha un tasso di compressione inferiore rispetto a zLib.

Come usare WiredTiger Engine

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>

Nota:

  1. Dopo mongodb 3.2, il motore predefinito è WiredTiger.
  2. newWiredTigerDBPath non deve contenere dati di un altro motore di archiviazione. Per eseguire la migrazione dei dati, è necessario scaricarli e reimportarli nel nuovo motore di archiviazione.
    mongodump --out <exportDataDestination>
    mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
    mongorestore <exportDataDestination>

In memoria

Tutti i dati sono memorizzati in memoria (RAM) per una lettura / accesso più veloce.

Mongo-rocks

Un motore di valori-chiave creato per integrarsi con RocksDB di Facebook.

Fusion-io

Un motore di archiviazione creato da SanDisk che consente di aggirare il livello del file system del sistema operativo e scrivere direttamente sul dispositivo di archiviazione.

TokuMX

Un motore di archiviazione creato da Percona che utilizza gli indici degli alberi frattali.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow