Usando o CQL para criar e gerenciar tabelas multirregionais - 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á.

Usando o CQL para criar e gerenciar tabelas multirregionais

Você pode usar a Cassandra Query Language (CQL) para criar e gerenciar tabelas e espaços chave multirregionais no Amazon Keyspaces.

Esta seção fornece exemplos de como criar e gerenciar tabelas multirregionais com CQL. Todas as tabelas que você cria em um espaço de chave multirregional herdam automaticamente as configurações de várias regiões do espaço de chave. Para obter mais informações sobre CQL, consulte a referência de linguagem CQL do Amazon Keyspaces.

Para obter mais informações sobre configurações e atributos suportados, consulte Notas de uso da replicação multirregional do Amazon Keyspaces.

Como criar um espaço de chaves multirregional (CQL)

Para criar um espaço de chave multirregional, use NetworkTopologyStrategy para especificar o espaço de chave em Regiões da AWS que o espaço de chave será replicado. Você deve incluir sua Região atual e pelo menos uma Região adicional. A seguinte instrução CQL é um exemplo disso.

CREATE KEYSPACE mykeyspace WITH REPLICATION = {'class':'NetworkTopologyStrategy', 'us-east-1':'3', 'ap-southeast-1':'3','eu-west-1':'3' };

Todas as tabelas no espaço de chaves usam a mesma estratégia de replicação do espaço de chaves. Não é possível alterar a estratégia de replicação no nível da tabela.

NetworkTopologyStrategy— O fator de replicação para cada região é três, porque o Amazon Keyspaces replica dados em três zonas de disponibilidade dentro da Região da AWS mesma, por padrão.

nota

Ao criar um espaço de chaves multirregional, o Amazon Keyspaces cria uma função vinculada ao serviço com o nome AWSServiceRoleForAmazonKeyspacesReplication em sua conta. Essa função permite que o Amazon Keyspaces replique gravações em todas as réplicas de uma tabela multirregional em seu nome. Para saber mais, consulte Uso de perfis para replicação multirregional do Amazon Keyspaces.

Você pode usar uma instrução CQL para consultar a tables tabela no system_multiregion_info keyspace para listar programaticamente as regiões e o status da tabela multirregional que você especificar. O código a seguir é um exemplo disso.

SELECT * from system_multiregion_info.tables WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';

A saída da declaração tem a seguinte aparência:

keyspace_name | table_name | region | status ----------------+----------------+----------------+-------- mykeyspace | mytable | us-east-1 | ACTIVE mykeyspace | mytable | ap-southeast-1 | ACTIVE mykeyspace | mytable | eu-west-1 | ACTIVE

Criação de uma tabela multirregional com configurações padrão (CQL)

Para criar uma tabela multirregional com configurações padrão, você pode usar o exemplo a seguir.

CREATE TABLE mykeyspace.mytable(pk int, ck int, PRIMARY KEY (pk, ck)) WITH CUSTOM_PROPERTIES = { 'capacity_mode':{ 'throughput_mode':'PAY_PER_REQUEST' }, 'point_in_time_recovery':{ 'status':'enabled' }, 'encryption_specification':{ 'encryption_type':'AWS_OWNED_KMS_KEY' }, 'client_side_timestamps':{ 'status':'enabled' } };

Criação de uma tabela multirregional com modo de capacidade provisionada e escalabilidade automática (CQL)

Para criar uma tabela multirregional no modo provisionado com escalabilidade automática, você deve primeiro especificar o modo de capacidade CUSTOM_PROPERTIES definindo para a tabela. Depois de especificar o modo de capacidade provisionada, você pode definir as configurações de escalonamento automático para a tabela usando. AUTOSCALING_SETTINGS

Para obter informações detalhadas sobre as configurações de escalonamento automático, a política de rastreamento de metas, o valor alvo e as configurações opcionais, consulteCrie uma nova tabela com escalabilidade automática usando CQL.

Ao criar uma tabela multirregional, você também pode especificar diferentes configurações de capacidade de leitura e escalabilidade automática de leitura para cada réplica da tabela. As configurações que você especificar substituem as configurações gerais da tabela pelo especificado Região da AWS. A capacidade de gravação, no entanto, permanece sincronizada entre todas as réplicas para garantir que haja capacidade suficiente para replicar gravações em todas as regiões.

Para definir a capacidade de leitura de uma réplica de tabela em uma região específica, você pode configurar os seguintes parâmetros como parte da replica_updates tabela:

  • A região

  • As unidades de capacidade de leitura provisionadas (opcional)

  • Configurações de escalonamento automático para capacidade de leitura (opcional)

O exemplo a seguir mostra uma CREATE TABLE declaração para uma tabela multirregional no modo provisionado. As configurações gerais de escalonamento automático da capacidade de gravação e leitura são as mesmas. No entanto, as configurações de escalonamento automático de leitura especificam períodos adicionais de resfriamento de 60 segundos antes de aumentar ou diminuir a capacidade de leitura da tabela. Além disso, as configurações de escalonamento automático da capacidade de leitura para a Região Leste dos EUA (Norte da Virgínia) são maiores do que as de outras réplicas. Além disso, o valor alvo é definido como 70% em vez de 50%.

CREATE TABLE mykeyspace.mytable(pk int, ck int, PRIMARY KEY (pk, ck)) WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 5, 'write_capacity_units': 5 } } AND AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50 } } }, 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50, 'scale_in_cooldown': 60, 'scale_out_cooldown': 60 } } }, 'replica_updates': { 'us-east-1': { 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 20, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 70 } } } } } };

Atualização da capacidade provisionada e das configurações de escalabilidade automática de uma tabela multirregional (CQL)

Você pode usar ALTER TABLE para atualizar o modo de capacidade e as configurações de escalonamento automático de uma tabela existente. Se você estiver atualizando uma tabela que está atualmente no modo de capacidade sob demanda, capacity_mode é necessário. Se sua tabela já estiver no modo de capacidade provisionada, esse campo poderá ser omitido.

Para obter informações detalhadas sobre as configurações de escalonamento automático, a política de rastreamento de metas, o valor alvo e as configurações opcionais, consulteCrie uma nova tabela com escalabilidade automática usando CQL.

Na mesma declaração, você também pode atualizar as configurações de capacidade de leitura e escalonamento automático de réplicas de tabela em regiões específicas atualizando a propriedade da replica_updates tabela. A instrução a seguir é um exemplo disso.

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 1, 'write_capacity_units': 1 } } AND AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50 } } }, 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50, 'scale_in_cooldown': 60, 'scale_out_cooldown': 60 } } }, 'replica_updates': { 'us-east-1': { 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 20, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 70 } } } } } };

Visualizando a capacidade provisionada e as configurações de escalabilidade automática de uma tabela multirregional (CQL)

Para visualizar a configuração de escalonamento automático de uma tabela multirregional, use o comando a seguir.

SELECT * FROM system_multiregion_info.autoscaling WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';

A saída desse comando é semelhante à seguinte:

keyspace_name | table_name | region | provisioned_read_capacity_autoscaling_update | provisioned_write_capacity_autoscaling_update ----------------+------------+----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- mykeyspace | mytable | ap-southeast-1 | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 60, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 60}}} | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 0, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 0}}} mykeyspace | mytable | us-east-1 | {'minimum_units': 5, 'maximum_units': 20, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 60, 'disable_scale_in': false, 'target_value': 70, 'scale_in_cooldown': 60}}} | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 0, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 0}}} mykeyspace | mytable | eu-west-1 | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 60, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 60}}} | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 0, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 0}}}

Desativando o escalonamento automático para uma tabela multirregional (CQL)

Você pode usar ALTER TABLE para desativar o escalonamento automático de uma tabela existente. Observe que você não pode desativar o escalonamento automático para uma réplica de tabela individual.

No exemplo a seguir, o escalonamento automático está desativado para a capacidade de leitura da tabela.

ALTER TABLE mykeyspace.mytable WITH AUTOSCALING_SETTINGS = { 'provisioned_read_capacity_autoscaling_update': { 'autoscaling_disabled': true } };
nota

Para excluir a função vinculada ao serviço usada pelo Application Auto Scaling, você deve desativar o escalonamento automático em todas as tabelas da conta em todas as Regiões da AWS.

Configurando manualmente a capacidade provisionada de uma tabela multirregional (CQL)

Se você precisar desativar o escalonamento automático de uma tabela multirregional, poderá usá-lo para ALTER TABLE provisionar manualmente a capacidade de leitura da tabela para uma tabela de réplica.

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 1, 'write_capacity_units': 1 }, 'replica_updates': { 'us-east-1': { 'read_capacity_units': 2 } } };
nota

Recomendamos usar o escalonamento automático para tabelas multirregionais que usam capacidade provisionada. Para ter mais informações, consulte Trabalhando com tabelas multirregionais no Amazon Keyspaces.