Níveis de consistência de leitura e gravação do Apache Cassandra suportados e custos associados - Amazon Keyspaces (para Apache Cassandra)

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

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

Níveis de consistência de gravação

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-2")) .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

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 leitura de 4 KB usando consistência ONE ou LOCAL_ONE, você recebe uma cobrança de 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_ONE 0,5 RCUs 0,5 RRUs
LOCAL_QUORUM 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

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_QUORUM Não suportado
QUORUM Sem compatibilidade
ALL Sem compatibilidade
TWO Sem compatibilidade
THREE Sem compatibilidade
ANY Sem compatibilidade
SERIAL Sem compatibilidade
LOCAL_SERIAL Sem compatibilidade