Sök…


Anmärkningar

I MongoDB 3.0 är MMAP (standard) och WiredTiger de stabila lagringsmotorerna. Om din app är lästung brukar du MMAP. Om det är skrivtungt, använd WiredTiger.

Din lösning kan också ha en blandad replikuppsättning medlemmar där du kan ha en nod konfigurerad med MMAP och en annan med WiredTiger. Du kan använda en för att infoga massiva data och den andra för att läsa med analysverktyg.

Efter MongoDB 3.2 blir WiredTiger standardmotorn.

MMAP

MMAP är en pluggbar lagringsmotor som har fått sitt namn efter Linux-kommandot mmap() . Den kartlägger filer till det virtuella minnet och optimerar lässamtal. Om du har en stor fil men behöver läsa bara en liten del av den, är mmap() mycket snabbare än ett read() -samtal som skulle föra hela filen till minnet.

En nackdel är att du inte kan ha två skrivsamtal som behandlas parallellt för samma samling. Så MMAP har låsning på kollektionsnivå (och inte låsning på dokumentnivå som WiredTiger erbjuder). Denna samlingslåsning är nödvändig eftersom ett MMAP-index kan referera till flera dokument och om dessa dokument kan uppdateras samtidigt, skulle indexet vara inkonsekvent.

WiredTiger

WiredTiger stöder LSM-träd för att lagra index . LSM-träd är snabbare för skrivoperationer när du behöver skriva enorma arbetsbelastningar av slumpmässiga insatser.

I WiredTiger finns det inga uppdateringar på plats . Om du behöver uppdatera ett element i ett dokument infogas ett nytt dokument medan det gamla dokumentet tas bort.

WiredTiger erbjuder också dokumentnivå samtidighet . Den antar att två skrivoperationer inte kommer att påverka samma dokument, men om det gör det kommer en operation att spolas tillbaka och genomföras senare. Det är ett bra prestationsförstärkande om bakspolning är sällsynt.

WiredTiger stöder Snappy- och zLib-algoritmer för komprimering av data och index i filsystemet. Snappy är standard. Den är mindre CPU-intensiv men har en lägre komprimeringsgrad än zLib.

Hur man använder WiredTiger Engine

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>

Notera:

  1. Efter mongodb 3.2 är standardmotorn WiredTiger.
  2. newWiredTigerDBPath bör inte innehålla data från en annan lagringsmotor. För att migrera dina data måste du dumpa dem och importera dem igen i den nya lagringsmotorn.
    mongodump --out <exportDataDestination>
    mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
    mongorestore <exportDataDestination>

I minne

All data lagras i minnet (RAM) för snabbare läsning / åtkomst.

mongo-rocks

En nyckelvärdesmotor skapad för att integreras med Facebooks RocksDB.

Fusion-io

En lagringsmotor skapad av SanDisk som gör det möjligt att kringgå OS-filsystemlagret och skriva direkt till lagringsenheten.

TokuMX

En lagringsmotor skapad av Percona som använder fraktala trädindex.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow