

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Gerenciamento da compactação de documentos a nível de coleção
<a name="doc-compression"></a>

A compactação de documentos em nível de coleção do Amazon DocumentDB 5.0 permite que você reduza os custos de armazenamento e I/O ao compactar os documentos em suas coleções. É possível ativar a compactação de documentos a um nível de coleção e visualizar as métricas de compactação conforme necessário, medindo os ganhos de armazenamento por meio de métricas de compactação, como tamanho de armazenamento de documentos compactados e status de compactação. O Amazon DocumentDB 5.0 usa o algoritmo de LZ4 compactação para compactar documentos.

O Amazon DocumentDB oferece suporte à compactação de documentos a partir da versão 5.0. A seguir estão as funções de compactação de documentos em nível de coleção:
+ **Comportamento padrão** — A configuração de compactação padrão para novas coleções em um cluster 5.0 é determinada pelo parâmetro cluster`default_collection_compression`. Esse parâmetro é definido como “desativado” por padrão. 
+ **Compactação de coleções existentes**: a configuração de compactação de coleções existentes pode ser alterada usando o comando `collMod`.
+ **Alteração do limite de compactação**: o limite de compactação padrão é de 2 KB. Esse valor pode ser especificado para novas coleções usando o comando `createCollection` e alterado para coleções existentes usando o comando `collMod`.

**nota**  
A compactação de documentos do Amazon DocumentDB não tem suporte nas versões 3.6 e 4.0 do Amazon DocumentDB.

**Topics**
+ [Gerenciamento da compactação de documentos](#manage-compression)
+ [Monitoramento da compactação de documentos](#monitoring-compression)

## Gerenciamento da compactação de documentos
<a name="manage-compression"></a>

### Ativar a compactação de documentos em uma coleção
<a name="enabling-collection-compression"></a>

Ative a compactação de documentos ao criar uma coleção no Amazon DocumentDB 5.0 usando o `db.createCollection()` método:

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

### Ativar a compactação de documentos em um cluster
<a name="enabling-cluster-compression"></a>

A compactação de documentos pode ser ativada por padrão para todas as novas coleções em um nível de cluster definindo o parâmetro de cluster `default_collection_compression` como “ativado”. Quando esse parâmetro é definido como “ativado”, as coleções recém-criadas no cluster terão a compactação ativada por padrão com um limite de compactação de 2 KB.

### Compactar coleções existentes
<a name="compress-existing-collections"></a>

Você também pode modificar as configurações de compactação de uma coleção existente usando a operação `collMod` e especificando a configuração `storageEngine` a seguir. Observe que a alteração feita usando esse comando se aplicará somente a inserted/updated documentos novos e a compactação em documentos inseridos anteriormente não será alterada.

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

### Definir os limites de compactação
<a name="set-compression-threshold"></a>

Por padrão, o limite de compactação para coleções compactadas é de 2032 bytes. Esse valor limite pode ser definido no comando `createCollection` ao criar uma nova coleção com a compactação ativada: 

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

Você também pode modificar o limite de compactação de uma coleção compactada existente usando a operação `collMod` e especificando a seguinte configuração `storageEngine`:

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

Observe que o limite de compactação só pode ser definido com um valor entre 128 e 8000 bytes. Além disso, a opção `enable` precisa ser definida como “verdadeira” ao especificar o limite de compactação.

## Monitoramento da compactação de documentos
<a name="monitoring-compression"></a>

É possível verificar se uma coleção está compactada e calcular sua taxa de compactação da seguinte maneira.

Visualize as estatísticas de compressão executando o comando `db.printCollectionStats()` ou `db.collection.stats()` no shell do mongo. A saída mostra o tamanho original e o tamanho compactado, que é possível comparar para analisar os ganhos de armazenamento da compactação de documentos. Neste exemplo, são mostradas as estatísticas de uma coleção chamada “sample\$1collection”: Um fator de escala de 1024\$11024 é usado abaixo para gerar os valores `size` e `storageSize` em MB.

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

Veja a seguir um exemplo de saída do comando acima:

```
{
    "ns" : "test.sample_collection",
    "count" : 1000000,
    "size" : 3906.3,
    "avgObjSize" : 4096,
    "storageSize" : 1953.1, 
    compression:{"enabled" : true,"threshold" : 2032},
    ...
}
```
+ **tamanho** - O tamanho original da coleção de documentos.
+ **avgObjSize**- O tamanho médio do documento antes da compressão foi arredondado para a primeira casa decimal. A unidade de medida é bytes.
+ **StorageSize** - O tamanho de armazenamento da coleção após a compactação. A unidade de medida é bytes.
+ **habilitada** - Indica se a compactação está habilitada ou desabilitada.

Para calcular a taxa de compressão real, divida o tamanho da coleção pelo tamanho do armazenamento (tamanho/StorageSize). Para o exemplo acima, o cálculo é 3906,3/1953.1, o que se traduz em uma taxa de compressão de 2:1.