Você pode modificar dinamicamente o schema de um índice de pesquisa para adicionar, atualizar ou excluir colunas, ou alterar sua chave de roteamento e o método de pré-classificação. Essa abordagem facilita a adaptação a novos requisitos de negócio e a otimização de desempenho. O processo envolve criar um índice canário com um schema modificado, sincronizar dados, executar testes A/B com ponderação de tráfego, trocar os schemas dos índices source e canário e, em seguida, excluir o índice canário.
Como funciona
As tabelas de dados do Tablestore não possuem schema, mas um índice de pesquisa tem um schema rígido. Ao criar um índice de pesquisa, é obrigatório definir quais colunas serão indexadas para consulta. A modificação desse schema costuma ser necessária para suportar mudanças no negócio ou para ajustar o desempenho. Os cenários mais comuns incluem:
Adicionar colunas de índice: À medida que o negócio evolui, pode ser necessário consultar colunas adicionais.
Atualize colunas de índice: É possível alterar propriedades como o tipo de coluna, colunas virtuais, configurações de array, analisadores ou formatos de data.
Exclua colunas de índice: Permite remover colunas que não são mais necessárias para as consultas.
Modifique a chave de roteamento: Uma chave de roteamento bem definida reduz a amplificação de leitura e melhora o desempenho da consulta.
Modifique a pré-classificação: Se a ordem de classificação dos dados em uma consulta corresponder à configuração de pré-classificação do índice, a velocidade da consulta aumenta.
Fluxo de trabalho
Devido ao seu comportamento dinâmico, não use este índice temporário para consultas. Se este recurso não atender às suas necessidades, envie um ticket para entrar em contato conosco.
A figura a seguir ilustra o fluxo de trabalho para a modificação dinâmica de um schema. Todo o processo é transparente para a sua aplicação, o que permite alterar o schema sem precisar modificar o código da aplicação.
A tabela a seguir descreve as principais etapas para modificar o schema de um índice de pesquisa.
|
Etapa |
Ações |
Descrição |
|
1 |
Crie um índice canário |
Crie um índice canário para o índice source e defina seu novo schema adicionando, modificando ou excluindo colunas conforme necessário. |
|
2 |
Verifique o progresso de sincronização do índice |
Antes de prosseguir, aguarde até que todos os dados existentes e incrementais sejam sincronizados e o progresso do índice canário corresponda ao do índice source. |
|
3 |
Defina pesos para o teste A/B |
O teste A/B permite distribuir o tráfego de consulta entre os índices source e canário para validar o novo schema. Redirecione gradualmente o tráfego para o índice canário até que ele processe 100% do tráfego de consulta. |
|
4 |
Trocar os schemas dos índices |
Após direcionar todo o tráfego de consulta para o índice canário, troque os schemas do índice source e do índice canário. Após a troca, o nome do índice source aponta para o novo schema, enquanto o nome do índice canário aponta para o antigo. Todo o tráfego de consulta é então direcionado para o nome do índice source, que agora usa o novo schema. |
|
5 |
Exclua o índice canário |
Depois de trocar os schemas e verificar se o índice funciona conforme o esperado, aguarde um período de estabilização (por exemplo, um dia) antes de excluir o índice canário. |
Procedimento
-
Acesse a aba Indexes.
Faça login no console do Tablestore.
Na barra de navegação superior, selecione uma região e um grupo de recursos.
Na página Overview, clique no nome da instância ou clique em Manage Instance na coluna Actions.
Na aba Instance Details, na área Tables, clique no nome da tabela de dados ou clique em Indexes na coluna Actions.
-
Crie um índice canário com base no índice source.
Na aba Indexes, localize o índice de pesquisa e clique em Change Schema na coluna Actions.
-
Na caixa de diálogo Reindex, adicione, modifique ou exclua campos do índice conforme necessário.
A caixa de diálogo Reindex contém os seguintes itens de configuração:
Informações básicas do índice: Index Type (por exemplo, índice de pesquisa), Instance Name, Table Name (por exemplo,
exampletable), Index Name (por exemplo,exampletable_index) e Canary Index Name (por exemplo,exampletable_index_reindex).Tabela de configuração de campos: Cada linha permite definir as propriedades de Field Name, Field Type, Index Parameters, Array, Highlight e Virtual Column. Clique no botão + para adicionar um campo ou clique no ícone de exclusão para remover um campo.
Na parte inferior, há a opção Advanced Settings. Após concluir a configuração, clique em OK.
-
Para modificar a chave de roteamento ou o método de pré-classificação, ative a opção Advanced Settings e configure os parâmetros descritos na tabela a seguir.
Parâmetro
Descrição
Chave de roteamento:
Especifica campos de roteamento personalizados. Selecione uma ou mais colunas de chave primária como campos de roteamento.
Quando os dados são gravados no índice, o sistema usa o valor da chave de roteamento para determinar a distribuição dos dados. Registros com o mesmo valor de chave de roteamento são indexados na mesma partição. Para mais informações, consulte Use routing fields in a search index.
Pré-classificação
O método de classificação padrão para dados no índice de pesquisa. A pré-classificação determina a ordem padrão em que os resultados da consulta são retornados. Para mais informações, consulte Index presorting.
-
Para classificar por chave primária, selecione Default.
-
Para classificar por valores de campo ou uma combinação de colunas de chave primária, selecione Custom e defina as configurações.
-
Selecione um tipo de classificação, como Primary Key Pre-sorting ou Field Pre-sorting, e clique em Add.
-
Selecione o nome do campo e a ordem de classificação.
As ordens de classificação suportadas são ascendente e descendente.
ImportanteSelecione um nome de campo apenas se escolher Field Pre-sorting.
Ao usar a classificação personalizada, configure a pré-classificação de chave primária e a pré-classificação de campo conforme necessário.
-
-
Clique em OK.
Na caixa de diálogo Index Comparison, revise a comparação da chave de roteamento, pré-classificação e schema entre os índices source e canário. Após confirmar que as informações estão corretas, clique em Yes.
-
Verifique as informações de sincronização do índice.
-
Clique no ícone
ao lado do índice source ou clique no nome do índice source.O índice canário para o índice source é exibido.
-
Clique em Use Gray Index na coluna Actions do índice canário.
ImportanteO índice canário passa por uma fase de sincronização completa de dados e uma fase de sincronização incremental de dados.
Antes que a sincronização de dados seja concluída, ao passar o ponteiro sobre o botão Use Gray Index na coluna Actions, uma dica de ferramenta indicando Yes, but the operation may cause security risks. é exibida e a troca é desativada.
Quando o índice canário estiver sincronizado com o índice source, ao passar o ponteiro sobre o botão Use Gray Index na coluna Actions, uma dica de ferramenta indicando Yes. The operation is secure. é exibida. Em seguida, prossiga com as próximas etapas.
-
Na caixa de diálogo Use Gray Index, visualize as informações de sincronização do índice.
A parte superior da caixa de diálogo exibe o Data Status (Synchronizing) e o Switchover Status (Safe to switch). As informações do índice são mostradas em duas colunas para o índice source e o índice canário. Cada coluna contém os seguintes campos:
Sync Status
Rows
Created At
Last Sync Time
Sync Latency
Data Lifecycle
Na parte inferior, na área Actions, use os controles deslizantes para ajustar os pesos de tráfego para o source index e o canary index, e salve a configuração clicando em Set Weight, ou clique em Switch Index para concluir a troca de índice.
-
-
Após a conclusão da sincronização, execute testes A/B definindo os pesos de tráfego.
Utilize o teste A/B para validar o novo schema distribuindo o tráfego de consulta entre os índices source e canário. Direcione todo o tráfego para o índice canário antes de prosseguir para a próxima etapa.
Na seção Operations da caixa de diálogo Use Gray Index, arraste o controle deslizante para ajustar os pesos dos índices source e canário e clique em Set Weight.
Na caixa de diálogo Set Weight, revise os dados de peso e a comparação de schema.
Após confirmar que as informações estão corretas, clique em Set Weight.
Na caixa de diálogo de confirmação exibida, clique em Yes.
-
Depois que todo o tráfego de consulta for direcionado para o índice canário, troque os schemas dos índices source e canário.
Após a troca, o nome do índice source aponta para o novo schema, e o nome do índice canário aponta para o antigo. Todo o tráfego de consulta é então direcionado para o nome do índice source, que agora usa o novo schema.
Na caixa de diálogo Use Gray Index, confirme se o status dos dados é In canary release, se o status de troca é Yes. The operation is secure., se o peso do índice source é 0 e se o peso do índice canário é 100. Em seguida, clique em Switch Index.
Na seção Operations da caixa de diálogo Use Gray Index, clique em Switch Index.
Na caixa de diálogo Switch Index, revise a comparação da chave de roteamento, pré-classificação e schema entre os índices source e canário. Após confirmar que as informações estão corretas, clique em Confirm Switch.
-
Depois de trocar os schemas e verificar se o índice funciona conforme o esperado, aguarde um período de estabilização (por exemplo, um dia) antes de excluir o índice canário.
Confirme se a caixa de diálogo Use Gray Index mostra o status dos dados como Released, o status de troca como Yes. The operation is secure., e se a área Actions mostra o tráfego do source index em 100 e o tráfego do canary index em 0.
Na caixa de diálogo Use Gray Index, clique em Delete Canary Release.
Na caixa de diálogo Are you sure you have completed the canary release and want to delete the old index?, confirme se as informações sobre o índice canário a ser excluído estão corretas. Em seguida, na caixa de texto, insira
I have confirmed that the new index data has been synchronized and has been in canary release for a period of time.Clique em Yes.
Salvaguardas
Para garantir a segurança operacional, o Tablestore fornece um mecanismo de reversão e alertas de troca para minimizar os riscos durante a modificação do índice.
-
Mecanismo de reversão
As principais etapas no processo de modificação dinâmica de schema suportam reversões.
Após criar um índice canário, se você descobrir que o schema está incorreto, exclua-o e crie um novo.
Durante o teste A/B, redirecione gradualmente o tráfego para o índice canário ajustando os pesos de tráfego. Se encontrar problemas, redirecione o tráfego de volta para o índice source a qualquer momento redefinindo os pesos.
Após trocar os schemas, se encontrar problemas, execute a opção Cancel Switchover a qualquer momento para reverter para o schema do índice source. As operações Switch Index e Cancel Switchover são operações inversas.
-
Alertas de troca
Direcionar o tráfego para o índice canário antes que ele esteja totalmente sincronizado com o índice source pode fazer com que as consultas retornem dados desatualizados. O Tablestore determina se é "seguro trocar" com base no status de sincronização e na última hora de sincronização de ambos os índices.
O Tablestore determina que uma troca é Yes. The operation is secure. nas seguintes condições:
O índice source está na fase de sincronização completa, e o índice canário está na fase completa ou incremental, o que significa que o índice canário alcançou o índice source.
Ambos os índices source e canário estão na fase de sincronização incremental, e a última hora de sincronização do índice canário está no máximo 60 segundos atrasada em relação à última hora de sincronização do índice source.
Faturamento
Não há cobrança para a criação de índices canário ou para a gravação de dados neles. A cobrança é feita pelo armazenamento consumido por ambos os índices e por quaisquer CUs de leitura reservadas provisionadas para eles. Para mais informações, consulte Billable items of search indexes.
Documentos relacionados
Para consultar novos campos ou tipos de dados sem alterar a estrutura da tabela, modifique o schema do índice de pesquisa ou use o recurso de colunas virtuais ao criar um novo índice de pesquisa. Para mais informações, consulte Virtual columns.
O Tablestore suporta vários tipos de consulta para diferentes cenários, incluindo MatchAll query, Match query, Match Phrase query, Term query, Terms query, Wildcard query, Prefix query, Suffix query, tokenization-based wildcard query, Range query, Bool query, Nested query, Geo-distance query, Geo-bounding box query, Geo-polygon query, Exists query, Collapse (distinct) e Virtual columns para consultar seus dados.
Para consultar rapidamente dados de diferentes tipos em um índice de pesquisa usando instruções SQL, use o recurso de consulta SQL. Para mais informações, consulte SQL query, Create mapping tables for search indexes, Query data, Full-text search, Array type, Nested type e Virtual columns.
Use o recurso de agregação de índice de pesquisa para realizar análises de dados, como encontrar mínimos, máximos, somas e médias, contar linhas, realizar contagens distintas, calcular percentis, agrupar por valor de campo, intervalo, localização geográfica ou condições de filtro, criar histogramas ou realizar consultas aninhadas. Para mais informações, consulte Aggregation.