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).
Tópicos
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.
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.
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 |