

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á.

# Níveis de consistência de leitura e gravação do Apache Cassandra suportados e custos associados
<a name="consistency"></a>

Os tópicos desta seção descrevem quais níveis de consistência do Apache Cassandra são compatíveis com operações de leitura e gravação no Amazon Keyspaces (para Apache Cassandra). 

**Topics**
+ [Níveis de consistência de gravação](#WriteConsistency)
+ [Níveis de consistência de leitura](#ReadConsistency)
+ [Níveis de consistência não compatíveis](#UnsupportedConsistency)

## Níveis de consistência de gravação
<a name="WriteConsistency"></a>

 O Amazon Keyspaces replica todas as operações de gravação três vezes em várias zonas de disponibilidade para maior durabilidade e alta disponibilidade. As gravações são armazenadas de forma duradoura antes de serem confirmadas usando o nível de consistência `LOCAL_QUORUM`. Para cada gravação de 1 KB, você recebe a cobrança de 1 unidade de capacidade de gravação (WCU) para tabelas usando o modo de capacidade provisionada ou 1 unidade de solicitação de gravação (WRU) para tabelas usando o modo sob demanda.

Você pode usar `cqlsh` para definir a consistência de todas as consultas na sessão atual para `LOCAL_QUORUM` usando o código a seguir.

```
CONSISTENCY LOCAL_QUORUM;
```

Para configurar o nível de consistência programaticamente, você pode definir a consistência com os drivers de cliente Cassandra apropriados. Por exemplo, os drivers Java da versão 4.x permitem que você defina o nível de consistência no arquivo `app config`, conforme mostrado abaixo.

```
basic.request.consistency = LOCAL_QUORUM
```

Se você estiver usando um driver Java Cassandra versão 3.x, poderá especificar o nível de consistência da sessão adicionando `.withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM)` conforme mostrado no exemplo de código a seguir.

```
Session session = Cluster.builder()  
                      .addContactPoint(endPoint)  
                      .withPort(portNumber)  
                      .withAuthProvider(new SigV4AuthProvider("us-east-1"))  
                      .withSSL()
                      .withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM)
                      .build()  
                      .connect();
```

Para configurar o nível de consistência para operações de gravação específicas, você pode definir a consistência ao chamar `QueryBuilder.insertInto` com um argumento `setConsistencyLevel` ao usar o driver Java.

## Níveis de consistência de leitura
<a name="ReadConsistency"></a>

O Amazon Keyspaces oferece suporte a três níveis de consistência de leitura: `ONE`, `LOCAL_ONE` e `LOCAL_QUORUM`. Durante uma leitura `LOCAL_QUORUM`, o Amazon Keyspaces retorna uma resposta que reflete as atualizações mais recentes de todas as operações anteriores de gravação bem-sucedidas. Usar o nível `ONE` ou `LOCAL_ONE` de consistência pode melhorar o desempenho e a disponibilidade de suas solicitações de leitura, mas a resposta pode não refletir os resultados de uma gravação recém-concluída.

Para cada uso `ONE` ou `LOCAL_ONE` consistência de 4 KB de leitura, você é cobrado 0,5 unidades de capacidade de leitura (RCUs) para tabelas usando o modo de capacidade provisionada ou 0,5 unidades de solicitação de leitura (RRUs) para tabelas usando o modo sob demanda. Para cada leitura de 4 KB usando consistência `LOCAL_QUORUM`, você recebe a cobrança de 1 unidade de capacidade de leitura (RCU) para tabelas usando o modo de capacidade provisionada ou 1 unidade de solicitação de leitura (RRU) para tabelas usando o modo sob demanda. 


**Cobrança com base na consistência de leitura e no modo de throughput da capacidade de leitura por tabela para cada 4 KB de leituras**  

| Níveis de consistência | Provisionada | Sob demanda | 
| --- | --- | --- | 
| ONE | 0,5 RCUs | 0,5 RRUs | 
| LOCAL\$1ONE | 0,5 RCUs | 0,5 RRUs | 
| LOCAL\$1QUORUM | 1 RCU | 1 RRU | 

Para especificar uma consistência diferente para operações de leitura, chame `QueryBuilder.select` com um argumento `setConsistencyLevel` quando estiver usando o driver Java.

## Níveis de consistência não compatíveis
<a name="UnsupportedConsistency"></a>

Os seguintes níveis de consistência não são compatíveis com o Amazon Keyspaces e resultarão em exceções.


**Níveis de consistência sem suporte**  

| Apache Cassandra | Amazon Keyspaces | 
| --- | --- | 
| EACH\$1QUORUM | Não suportado | 
| QUORUM | Sem compatibilidade | 
| ALL  | Sem compatibilidade | 
| TWO | Sem compatibilidade | 
| THREE | Sem compatibilidade | 
| ANY | Sem compatibilidade | 
| SERIAL | Sem compatibilidade | 
| LOCAL\$1SERIAL | Sem compatibilidade | 