Tabelas Ativas Globais no NDCS

O Oracle NoSQL Database Cloud Service suporta uma arquitetura de tabela ativa global na qual você pode criar tabelas, replicá-las em várias regiões e manter dados sincronizados entre as réplicas regionais.

As empresas de hoje precisam fornecer serviços melhores e mais rápidos aos seus clientes. A latência de rede é um parâmetro crucial para avaliar o desempenho de qualquer aplicativo. Latência de rede é o tempo mínimo que um pacote de dados leva para percorrer a rede. Os usuários esperam concluir suas atividades on-line de forma suave e rápida de qualquer lugar. Para atender a essas expectativas, as empresas precisam hospedar aplicativos e dados em regiões distribuídas mais próximas de seus usuários.

O Oracle NoSQL Database Cloud Service fornece uma solução para esses requisitos por meio de tabelas Globais Ativas. Esse recurso permite que os dados do aplicativo gravados em uma região sejam replicados de forma transparente em várias regiões.

Benefícios das Tabelas Ativas Globais:

Como selecionar uma configuração ativa global no NDCS?

O recurso de tabelas Ativas Globais permite que os dados do aplicativo gravados em uma região sejam replicados de forma transparente em várias regiões.

Um evento raro de uma falha de região única não deve afetar a experiência dos usuários. Por exemplo, se uma única região se tornar off-line, isolada ou degradada, seu aplicativo deverá ser redirecionado para outra região e continuar a executar leituras e gravações como antes. Em suma, seu banco de dados precisa fornecer recuperação de desastre mesmo quando uma região falha. Você pode usar uma tabela Global Active no Oracle NoSQL Database Cloud Service (NDCS) para fornecer recuperação de desastres por meio de configuração ativo-ativo ou para replicar dados ativamente em várias regiões para obter baixa latência usando acesso a dados locais.

Considere as necessidades de um usuário viajante que faz compras em um site popular. Eles podem acessar o mesmo site de compras de diferentes partes do mundo no mesmo dia. Você precisa garantir que o usuário experimente uma latência mínima e uma interação perfeita, não importa onde eles estejam.

O recurso da tabela Global Active no NDCS fornece uma solução para ambos os cenários discutidos acima. Vamos explorar cada um dos dois cenários e entender como uma tabela Global Active será a melhor solução para fornecer alta disponibilidade, baixa latência e recuperação de desastres.

No primeiro cenário, suponha que sua empresa use o NDCS em Phoenix (EUA -Oeste), Frankfurt (Alemanha) e Tóquio (Japão) e você tenha uma tabela chamada ShoppingCart, que armazena as informações de compras de clientes que estão comprando em diferentes regiões do mundo. Neste exemplo, sua empresa está atendendo seus clientes por meio de data centers geograficamente mais próximos deles. Essa configuração envolve vários locais geográficos em que o Oracle NoSQL Database Cloud Service está disponível. Uma arquitetura com duas ou mais regiões distribuídas geograficamente e o serviço NoSQL Database Cloud disponível em cada uma dessas regiões é conhecida como umaarquitetura de tabela global ativa. A tabela ShoppingCart é uma tabela Ativa Global e é replicada em várias regiões.

Em uma configuração ativo-ativo, você tem o NDCS disponível em várias regiões e os dados em todas as regiões são sincronizados. Quando uma região falha, as tabelas Ativas Globais nas outras regiões de réplica continuarão funcionando normalmente e não serão afetadas pela região com falha. Quando a região com falha voltar, sua réplica de tabela regional será sincronizada com as outras regiões. A tabela Global Active fornece recuperação de desastre na medida em que, quando uma região está inativa, seu aplicativo está conectado a outra réplica.

No segundo cenário, suponha que o usuário em Phoenix, faça compras on-line e adicione um celular ao carrinho de compras. A região NDCS da costa oeste atende a essa sessão e o usuário experimenta latência mínima de solicitação de leitura e gravação no armazenamento de dados local da região. Este usuário então entra em um avião para a Alemanha, pousa 13 horas depois, chega ao hotel, se conecta à rede Wi-Fi, vai para a loja on-line da empresa móvel e descobre que há outro modelo do telefone que parece mais atraente. Assim, o usuário decide atualizar o carrinho de compras com este novo modelo do telefone e continua a navegar na loja de comércio eletrônico móvel. O armazenamento de dados regional em Frankfurt, que é o armazenamento de dados mais proximal, atende a esta sessão e fornece ao usuário a mesma experiência de leitura e gravação de baixa latência que a dos EUA. Em seguida, o usuário viaja para o Japão e decide visitar uma loja móvel local para obter mais informações sobre os modelos móveis mais recentes. O usuário então atualiza o carrinho de compras com o modelo mais recente do telefone que está presente na loja móvel. Como o NoSQL Database Cloud Service está disponível em três regiões, uma em Phoenix, a segunda na Alemanha e a terceira no Japão, há mais de uma réplica de tabela regional, sempre que o usuário atualiza o carrinho de compras ou navega na loja de e-commerce móvel, os resultados de pesquisa personalizados e outros dados são extraídos de uma região local mais próxima do usuário. Esse tipo de processamento local oferece as latências mais baixas, o melhor desempenho e elimina o acesso à rede de longa distância.

Conceitos Básicos

Terminologia usada nas tabelas Ativas Globais:

Regras básicas para criar e gerenciar tabelas Ativas Globais:

Os critérios a seguir devem ser atendidos para criar e gerenciar uma tabela Global Ativa.

Observação: No NDCS, a replicação de tabela regional é executada de forma assíncrona em segundo plano.

Você pode criar tabelas filho em uma Tabela Ativa Global. Uma tabela filho de uma tabela Ativa Global pode ser uma tabela única ou uma Tabela Ativa Global. Para tornar a tabela filho uma tabela Ativa Global, você precisa congelar o esquema da tabela filho e adicionar uma réplica regional. É possível selecionar uma das réplicas regionais da tabela pai.

Workflow da Tabela Ativa Global

O que é replicado em uma tabela Ativa Global?

Ao adicionar uma réplica de tabela regional de uma tabela NoSQL existente, você converte a tabela única em uma tabela Global Ativa. O seguinte será replicado em uma tabela.

Observação: As tags do OCI permitem que você adicione metadados aos recursos. Uma ou mais tags podem ser associadas a uma tabela Global Ativa. As tags do OCI não são replicadas, e uma Tabela Ativa Global pode ter diferentes tags em diferentes regiões.

Adicionando uma réplica de tabela regional

Quando você replica uma tabela, ela é criada em outra região, chamada de região do receptor. Se a tabela na região do remetente for um singleton, ela será convertida em uma tabela Global Ativa. Se a tabela na região do remetente já for uma tabela Global Ativa, outra réplica regional será adicionada à tabela. A réplica regional é inicializada com os dados da tabela da região do remetente. Por exemplo, se a tabela na região do remetente tiver 1000 linhas, todos os dados serão copiados para a réplica regional recém-criada.

Observação: Quando você adiciona uma réplica de tabela regional, a tabela na região do receptor é colocada no mesmo compartimento com o mesmo nome de tabela da região do remetente. Durante a vida útil da tabela Global Active, você pode mover essa tabela para outro compartimento a qualquer momento.

Capacidade (Unidades de Leitura, Unidades de Gravação e Armazenamento) para réplicas de tabela regionais

Quando você adiciona uma réplica regional de uma tabela, os campos capacidade de leitura, capacidade de gravação e capacidade de armazenamento assumem automaticamente como padrão os valores correspondentes da tabela na região do remetente. No entanto, você pode editar e alterar os valores da capacidade de leitura e gravação da tabela na região do receptor. Não é possível alterar a capacidade de armazenamento da tabela. A tabela na região do receptor tem a mesma capacidade de armazenamento que a tabela na região do remetente. O modo de capacidade de uma tabela Global Ativa pode ser sob demanda ou provisionado. Você também pode alterar o modo de capacidade de qualquer réplica regional de uma tabela Ativa Global após sua criação. A alteração no modo de capacidade é local para essa réplica regional e não afeta nenhuma outra réplica regional da tabela Ativo Global.

TTL de registros em réplicas de tabela regionais

Tempo de Vida Útil (TTL) é expresso como o tempo (número de horas ou dias) que os dados podem viver na tabela. O Oracle NoSQL Database Cloud Service permite aos desenvolvedores definir um tempo de expiração nas linhas de tabela, após o qual as linhas expiram automaticamente e não estão mais disponíveis. Após a duração especificada, as linhas expiram automaticamente e não estão mais disponíveis. O TTL na réplica da tabela regional é o mesmo valor do TTL da tabela na região do remetente. Quando uma linha é replicada para outras regiões, seu tempo de expiração é replicado como um timestamp absoluto. Portanto, essa linha expirará ao mesmo tempo, independentemente de quando foi replicada.

Depois que uma réplica de tabela regional é criada, ela é inicializada com os dados da tabela da região do remetente. Durante essa inicialização dos dados da tabela, se o valor TTL for atingido, essas linhas expirarão e uma operação de leitura não verá esses registros.

Escopo das operações DDL após a criação de réplicas de tabela regional:

As operações DDL a seguir têm escopo global, o que significa que uma alteração em uma réplica de tabela regional é automaticamente propagada para todas as réplicas de tabela regionais.

As operações DDL a seguir têm um escopo local, o que significa uma alteração apenas na réplica de tabela regional em que ela é iniciada.

Considerações sobre Modelagem de Dados para Tabelas Ativas Globais

Por que você deve congelar o esquema de uma tabela?

Em uma configuração de tabela Global Ativa, você tem tabelas no NDCS implantadas em várias regiões, e todas as regiões estão atendendo simultaneamente a solicitações de leitura e gravação. O aplicativo que se conecta ao NDCS deve ser projetado para estabelecer conexão com a região de replicação mais próxima. A chave primária, a chave de partição e os dados da tabela devem ser idênticos nas regiões de replicação, pois esses três são uma parte intrínseca de como o aplicativo usa a tabela e como as consultas são executadas. Em uma tabela Global Ativa, como os registros de tabela podem ser gravados simultaneamente na tabela em várias regiões, torna-se necessário obter um consenso sobre o esquema da tabela. Você pode fazer isso impedindo que o esquema seja alterado, forçando todas as regiões a um consenso imediato sobre o esquema de uma tabela. Por simplicidade, desempenho e previsibilidade, o Oracle NoSQL Cloud Service requer o congelamento de um esquema para qualquer tabela que esteja participando da replicação regional. Assim, antes de converter uma tabela única em uma tabela Ativa Global, o esquema da tabela deve ser congelado e nenhuma alteração de esquema adicional é permitida. Caso precise alterar o esquema de uma tabela Global Ativa após criar réplicas regionais, primeiro elimine todas as réplicas regionais, altere o esquema da tabela e, em seguida, adicione novamente as réplicas regionais. O Oracle NoSQL Cloud Service preencherá novamente todas as réplicas regionais com os dados mais atuais da região do remetente. Por esse motivo, recomenda-se ter pelo menos uma coluna JSON na tabela, pois ela fornece mais flexibilidade no esquema e impede a necessidade de uma alteração de esquema.

Definindo a Identidade em uma Tabela Ativa Global

Políticas e permissões do usuário

As políticas de IAM de uma tabela são específicas para a região do remetente.

Quando um usuário adiciona uma réplica de uma tabela singleton ou Global Active, nenhuma política ou permissão de usuário é adicionada à região do receptor. O usuário na região de origem que deseja criar e gerenciar réplicas também deve ter os privilégios necessários na região do receptor. Caso contrário, você receberá um erro quando o usuário adicionar uma réplica da tabela regional.

Depois que as réplicas da tabela regional forem criadas, a replicação de qualquer modificação de dados de uma região do remetente para a região do destinatário não exigirá permissão do usuário. Isso significa que a alteração de dados em uma tabela de réplicas será replicada em todas as outras réplicas de tabela, independentemente da permissão do usuário. As permissões necessárias para criar e gerenciar as réplicas da tabela regional estão listadas abaixo.

Adicionar réplica:

Os usuários que desejam gerenciar réplicas de uma tabela devem ter a permissão NOSQL_TABLE_ALTER na região do remetente e em todas as regiões do recebedor existentes. Os usuários que desejam criar uma nova réplica precisam ter a permissão NOSQL_TABLE_CREATE na região do receptor (em que uma réplica deve ser criada). Quando você cria uma réplica de tabela regional, a permissão de leitura e gravação existente da tabela na região do remetente não é criada na região do recebedor. Os usuários que desejam criar uma nova réplica na região do receptor são responsáveis por criar as permissões de leitura e gravação da tabela para cada réplica da tabela regional que eles criam.

Eliminar réplica:

Os usuários que desejam gerenciar réplicas de uma tabela devem ter a permissão NOSQL_TABLE_ALTER na região do remetente e em todas as regiões do recebedor existentes. Os usuários que quiserem eliminar uma réplica precisam ter a permissão NOSQL_TABLE_DROP na região do receptor (em que uma réplica deve ser eliminada).

Criar Índice:

Os usuários que desejam criar índices em réplicas de tabela regionais precisam ter a permissão NOSQL_INDEX_CREATE.

Eliminar Índice:

Os usuários que desejam eliminar índices em réplicas de tabelas regionais precisam ter a permissão NOSQL_INDEX_DROP.

Atualizar limites de tabela/TTL/:

Os usuários que desejam gerenciar réplicas de uma tabela devem ter a permissão NOSQL_TABLE_ALTER em todas as réplicas de tabela regional.

Leituras, Gravações e transações ACID

Depois de criar uma tabela Global Active, você pode executar operações de leitura ou gravação na tabela usando as APIs de acesso a dados ou instruções DML existentes.

Para obter a melhor latência, seu aplicativo geralmente será lido em uma réplica regional local. Os dados na réplica regional local também incluirão as atualizações de dados replicadas de outras réplicas de tabela regional. Sempre que você executar uma operação de gravação (INSERT, UPDATE ou DELETE) em uma tabela Global Active, as alterações serão replicadas em várias regiões de forma assíncrona. Ou seja, quando você escreve uma linha na região do remetente, a operação de gravação é executada completamente na região do remetente sem aguardar a atualização das regiões de réplica. Se várias regiões atualizarem uma linha com a mesma chave primária, uma regra será aplicada para decidir qual atualização da região será considerada final. Em todos esses casos, essa regra de resolução de conflito integrada fará com que a atualização com o timestamp mais recente ganhe e faça commit no banco de dados. Essa regra também se aplica ao atualizar o valor TTL de várias regiões simultaneamente.

As transações ACID são locais para uma região. Quando uma transação é confirmada, ela é garantida apenas como atômica, consistente, isolada e durável, na região onde a gravação ocorreu. A semântica do modelo de consistência de uma réplica de tabela regional é a mesma de uma tabela não replicada. A consistência das réplicas da tabela regional não é absoluta. A consistência absoluta é local para uma única região na qual você executa a operação de leitura. As leituras dos dados que estão sendo replicados da região do remetente para as regiões do destinatário sempre são consistentes.

As gravações de uma região do remetente são replicadas em todas as regiões do destinatário em um intervalo de tempo. Esse intervalo de tempo para replicar as alterações em várias regiões inclui o tempo necessário para receber os dados da réplica da tabela regional na região do remetente e o tempo necessário para concluir as operações de gravação na região do receptor. Eventualmente, a região do receptor obtém a atualização da região do remetente e a região do destinatário nunca perde uma atualização de transação que aconteceu na região do remetente. Todas as réplicas da tabela regional receberão a gravação e se tornarão duráveis.

Visão Geral do Atraso da Réplica

Sempre que você executar uma operação de gravação (INSERT, UPDATE ou DELETE) em uma tabela Global Active, as alterações serão replicadas em várias regiões de forma assíncrona.

Ou seja, quando você escreve uma linha na região do remetente, a operação de gravação é executada completamente na região do remetente sem aguardar a atualização das regiões de réplica. A latência da rede cria um intervalo de tempo na replicação das alterações nas regiões receptoras. A latência para replicar as alterações em várias regiões inclui o tempo necessário para receber gravações da réplica e aplicá-las na região do receptor. Se não houver gravações de aplicativo para a tabela na região do remetente, o serviço usará os mecanismos de ping para calcular uma aproximação do lag, e a estatística de lag ainda estará disponível na região do receptor.

Para obter mais detalhes sobre a métrica Lag de Réplica, consulte Detalhes sobre Lag de Réplica.

Visão geral da criação de uma tabela Global Ativa

O processo de criação de uma tabela Ativa Global começa com a criação de uma tabela única e, em seguida, a conversão em uma tabela Ativa Global

As etapas para criar uma tabela Global Ativa são listadas abaixo.