

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Gestión de la compresión de documentos a nivel de colección
<a name="doc-compression"></a>

La compresión de documentos a nivel de colección de Amazon DocumentDB 5.0 le permite reducir los costos de almacenamiento y E/S al comprimir los documentos de sus colecciones. Puede habilitar la compresión de documentos a nivel de colección y ver las métricas de compresión según sea necesario, midiendo las ganancias de almacenamiento mediante métricas de compresión como es el tamaño de almacenamiento de los documentos comprimidos y el estado de la compresión. Amazon DocumentDB 5.0 utiliza el algoritmo de LZ4 compresión para comprimir documentos.

Amazon DocumentDB admite la compresión de documentos a partir de la versión 5.0. Las siguientes son funciones de compresión de documentos a nivel de colección:
+ **Comportamiento predeterminado**: la configuración de compresión predeterminada para las nuevas colecciones de un clúster de la versión 5.0 viene determinada por el parámetro `default_collection_compression` del clúster. Este parámetro está establecido en “deshabilitado” de forma predeterminada. 
+ **Compresión de las colecciones existentes**: la configuración de compresión de las colecciones existentes se puede cambiar mediante el comando `collMod`.
+ **Cambio del umbral de compresión**: el umbral de compresión predeterminado es de 2 KB. Este valor se puede especificar para las colecciones nuevas mediante el comando `createCollection` y se puede cambiar para las colecciones existentes mediante el comando `collMod`.

**nota**  
La compresión de documentos de Amazon DocumentDB no es compatible en las versiones 3.6 y 4.0 de Amazon DocumentDB.

**Topics**
+ [Administración de la compresión de documentos](#manage-compression)
+ [Supervisión de la compresión de documentos](#monitoring-compression)

## Administración de la compresión de documentos
<a name="manage-compression"></a>

### Habilitación de la compresión de documentos en una colección
<a name="enabling-collection-compression"></a>

Active la compresión de documentos al crear una colección en Amazon DocumentDB 5.0 mediante `db.createCollection()` el método:

```
db.createCollection( sample_collection,{
    storageEngine : {
        documentDB: {
            compression:{enable: <true | false>}
        }
    }
})
```

### Habilitación de la compresión de documentos en un clúster
<a name="enabling-cluster-compression"></a>

La compresión de documentos se puede habilitar de forma predeterminada para todas las colecciones nuevas a nivel de clúster al establecer el parámetro `default_collection_compression` del clúster en “habilitado”. Si este parámetro se establece en “habilitado”, las colecciones recién creadas en el clúster tendrán la compresión habilitada de forma predeterminada con un umbral de compresión de 2 KB.

### Compresión de colecciones existentes
<a name="compress-existing-collections"></a>

También puede modificar la configuración de compresión de una colección existente mediante la operación `collMod` y especificando la siguiente configuración `storageEngine`. Tenga en cuenta que el cambio realizado con este comando solo se aplicará a inserted/updated los documentos nuevos y la compresión de los documentos insertados anteriormente no cambiará.

```
db.runCommand({ 
    collMod: "orders", 
    storageEngine: { 
        documentDB: {compression: {enable: <true | false>} }
    }
})
```

### Establecimiento de los umbrales de compresión
<a name="set-compression-threshold"></a>

De forma predeterminada, el umbral de compresión de las colecciones comprimidas es de 2032 bytes. Este valor de umbral se puede establecer en el comando `createCollection` al crear una nueva colección con la compresión habilitada: 

```
db.createCollection( sample_collection, {
    storageEngine : {
        documentDB: {
            compression: {
                enable: true,
                threshold: <128 - 8000>
            }
        }
    }
})
```

También puede modificar el umbral de compresión de una colección comprimida existente mediante la operación `collMod` y al especificar la siguiente configuración `storageEngine`:

```
db.runCommand({ 
    collMod: "orders", 
    storageEngine: { 
        documentDB: {
            compression: {
                enable: true,
                threshold: <128 - 8000>
            }
        }
    }
})
```

Tenga en cuenta que el umbral de compresión solo se puede establecer en un valor entre 128 y 8000 bytes. Además, la opción `enable` debe estar configurada en “true” al especificar el umbral de compresión.

## Supervisión de la compresión de documentos
<a name="monitoring-compression"></a>

Puede comprobar si una colección está comprimida y calcular la relación de compresión de la siguiente manera:

Para ver las estadísticas de compresión, ejecute el comando `db.printCollectionStats()` o `db.collection.stats()` desde el intérprete de comandos de mongo. El resultado muestra el tamaño original y el tamaño comprimido, que puede comparar para analizar las ganancias de almacenamiento derivadas de la compresión de documentos. En este ejemplo, se muestran las estadísticas de una colección denominada “sample\$1collection” a continuación. A continuación, se utiliza un factor de escala de 1024\$11024 para generar los valores `size` y `storageSize` en MB.

```
db.sample_collection.stats(1024*1024)
```

El siguiente es un ejemplo del resultado para el comando anterior:

```
{
    "ns" : "test.sample_collection",
    "count" : 1000000,
    "size" : 3906.3,
    "avgObjSize" : 4096,
    "storageSize" : 1953.1, 
    compression:{"enabled" : true,"threshold" : 2032},
    ...
}
```
+ **tamaño**: el tamaño original de la colección de documentos.
+ **avgObjSize**- El tamaño medio del documento antes de la compresión se redondea al primer decimal. La unidad de medida son bytes.
+ **StorageSize**: el tamaño de almacenamiento de la colección después de la compresión. La unidad de medida son bytes.
+ **habilitada**: indica si la compresión está habilitada o deshabilitada.

Para calcular la relación de compresión real, divida el tamaño de la colección entre el tamaño de almacenamiento (Size/StorageSize). En el ejemplo anterior, el cálculo es 3906.3/1953.1, lo que se traduce en una relación de compresión de 2:1.