MongoDB
Motori di archiviazione inseribili
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:
- Dopo mongodb 3.2, il motore predefinito è WiredTiger.
-
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.