MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Włączanie kompresji danych w MongoDB 3.0

MongoDB 3.0 z silnikiem przechowywania WiredTiger umożliwia przejrzystą kompresję danych przechowywanych w bazie danych. Jest to dość ekscytująca i użyteczna funkcja, której można użyć do zmniejszenia wykorzystania miejsca na dysku przez szybko rosnące dane. Domyślnie przewodowy tygrys używa silnika kompresji blokowej „Snappy” dla wszystkich kolekcji. Możesz domyślnie wyłączyć kompresję, korzystając z następujących opcji w pliku konfiguracyjnym serwera MongoDB.

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

Algorytm kompresji można określić na poziomie kolekcji podczas tworzenia klastra. Oto przykład tworzenia kolekcji z kompresją „zlib”:

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

Silnik pamięci masowej MongoDB WiredTiger zapewnia dwie opcje kompresji — snappy i zlib. Zasadniczo istnieje kompromis między stopniem kompresji a obciążeniem procesora do dekompresji. „Zlib” osiąga znacznie większą kompresję i jest odpowiednio mniej wydajny. „Snappy” ma na celu „ukierunkowanie na bardzo duże prędkości i rozsądną kompresję”.

Przeprowadziliśmy kilka prostych nienaukowych testów, aby zmierzyć wydajność kompresji. Użyliśmy jednego z zestawów danych przechowujących ciągi, które naszym zdaniem dobrze się skompresują. Oto podstawowa struktura każdego dokumentu:


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

Wstawiliśmy około 5000 takich dokumentów (około 5 GB danych), a wyniki były dość imponujące. Zlib osiąga znaczną kompresję. Snappy osiąga również niezłą kompresję przy niewielkim lub zerowym obciążeniu systemu:

Zlib Zgryźliwy nieskompresowany
Rozmiar danych (MB) 5000,5 5000,5 5000,5
Rozmiar pamięci (MB) 19,62 254,37 5019

Jak zwykle musisz przeprowadzić kilka testów, aby poznać wzrost wydajności zestawu danych. Oto kilka bardziej szczegółowych badań porównawczych wydajności kompresji i kompromisów:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zastąpić istniejące dokumenty podczas importowania pliku do MongoDB

  2. Jak zapewnić unikalny element w tablicy opartej na określonych polach - mongoDB?

  3. MongoDB Node znajdź, jak radzić sobie z brakiem wyników?

  4. Mongoid czy MongoMapper?

  5. Sprawdź, czy upsert MongoDB wykonał insert lub aktualizację