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

Aktivering af datakomprimering i MongoDB 3.0

MongoDB 3.0 med WiredTiger-lagringsmotoren giver dig mulighed for transparent at komprimere dataene, der er gemt i din database. Dette er en ret spændende og nyttig funktion, der kan bruges til at reducere diskpladsforbruget af dine hurtigt voksende data. Som standard bruger kablet tiger blokkompressionsmotoren 'Snappy' til alle samlingerne. Du kan slå komprimering fra som standard ved at bruge følgende muligheder i MongoDB-serverens konfigurationsfil.

storage:
  engine: wiredTiger
  wiredTiger:
    collectionConfig:
      blockCompressor: none

Kompressionsalgoritmen kan specificeres på samlingsniveau under oprettelse af klynge. Her er et eksempel på oprettelse af en samling med 'zlib'-komprimering:

db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );

MongoDB WiredTiger-lagringsmotor giver to muligheder for komprimering - snappy og zlib. Der er i det væsentlige en afvejning mellem omfanget af komprimering og mængden af ​​CPU-belastning, der skal dekomprimeres. 'Zlib' opnår meget mere komprimering og er tilsvarende mindre performant. 'Snappy' sigter efter 'sigter efter meget høje hastigheder og rimelig kompression'.

Vi kørte nogle simple uvidenskabelige tests for at måle kompressionsydelsen. Vi brugte et af datasættene til at lagre strenge, som vi mente ville komprimere godt. Her er den grundlæggende struktur for hvert dokument:


{
'_id': <ObjectID>,
'name': <Five character string>,
'value': <Random 1MB string>
}

Vi indsatte omkring 5000 af disse dokumenter (ca. 5 GB data), og resultaterne var ret imponerende. Zlib opnår en betydelig mængde komprimering. Snappy opnår også en rimelig mængde komprimering med lille eller ingen belastning på systemet:

Zlib Snappy ukomprimeret
Datastørrelse (MB) 5000,5 5000,5 5000,5
Lagerstørrelse (MB) 19.62 254,37 5019

Som altid skal du køre nogle test for at forstå effektivitetsgevinsterne for dit datasæt. Her er nogle mere detaljerede benchmarkundersøgelser om kompressionsydelse og afvejninger:

http://www.mongodb.com/blog/post/new-compression-options-mongodb-30
http://www.acmebenchmarking.com/2015/02/mongodb-v30-compression-benchmarks.html
https://comerford.cc/2015/02/04/mongodb-3-0-testing-compression/



  1. MongoDB Aggregation:Hvordan får man det samlede antal poster?

  2. Rails Redis indstilling af maxmemory og maxmemory-policy

  3. Bruger Redis et brugernavn til godkendelse?

  4. Forskellen mellem count() og find().count() i MongoDB