sql >> Databasteknik >  >> NoSQL >> MongoDB

Minska MongoDB-databasfilstorleken

UPPDATERING: med compact kommandot och WiredTiger det ser ut som att det extra diskutrymmet faktiskt kommer att frigöras till operativsystemet.

UPPDATERING: från v1.9+ finns det en compact kommando.

Detta kommando kommer att utföra en komprimering "in-line". Det kommer fortfarande att behöva lite extra utrymme, men inte lika mycket.

MongoDB komprimerar filerna genom att:

  • kopiera filerna till en ny plats
  • gå igenom dokumenten och ordna om / lösa om dem
  • ersätter originalfilerna med nya filer

Du kan göra denna "komprimering" genom att köra mongod --repair eller genom att ansluta direkt och köra db.repairDatabase() .

I båda fallen behöver du utrymme någonstans för att kopiera filerna. Nu vet jag inte varför du inte har tillräckligt med utrymme för att utföra en komprimering, men du har några alternativ om du har en annan dator med mer utrymme.

  1. Exportera databasen till en annan dator med Mongo installerad (med mongoexport ) och sedan kan du importera samma databas (med mongoimport ). Detta kommer att resultera i en ny databas som är mer komprimerad. Nu kan du stoppa den ursprungliga mongod ersätt med de nya databasfilerna och du är klar.
  2. Stoppa den nuvarande mongoden och kopiera databasfilerna till en större dator och kör reparationen på den datorn. Du kan sedan flytta tillbaka de nya databasfilerna till den ursprungliga datorn.

Det finns för närvarande inte ett bra sätt att "komprimera på plats" med Mongo. Och Mongo kan definitivt suga upp mycket utrymme.

Den bästa strategin just nu för komprimering är att köra en Master-Slave-installation. Du kan sedan komprimera Slaven, låta den komma ikapp och byta om dem. Jag vet fortfarande lite hårig. Kanske kommer Mongo-teamet med bättre komprimering på plats, men jag tror inte att det står högt på deras lista. Drivutrymme antas för närvarande vara billigt (och det är det vanligtvis).



  1. Snabbaste sättet att lagra en numpy array i redis

  2. Key-Value Database med Java-klient

  3. Unicode i python

  4. Skapa ett unikt autoinkrementfält med mongoose