Sincronização de dados entre tabelas e índices vetoriais
O DynamoDB mantém automaticamente um índice vetorial sincronizado com a tabela de base. Entender como a sincronização funciona ajuda você a prever quando os resultados da pesquisa estão completos e por que um item pode não aparecer nos resultados.
Preenchimento de um índice em uma tabela existente
Quando você adiciona um índice vetorial a uma tabela que já contém itens, o DynamoDB preenche o índice com os dados existentes. O índice primeiro passa para IndexStatus CREATING enquanto o DynamoDB provisiona a infraestrutura do índice. Ele permanece CREATING enquanto o DynamoDB preenche o índice com os dados existentes da tabela base e informa Backfilling como true durante essa fase. As novas gravações na tabela base são replicadas para o índice enquanto o preenchimento retroativo ocorre, mas SearchVectors retorna um ValidationException até que o preenchimento retroativo seja concluído. Quando o índice estiver pronto, IndexStatus passará a ser ACTIVE e o campo Backfilling não será mais informado. Use DescribeTable e aguarde até que IndexStatus seja ACTIVE e Backfilling não seja true antes de fazer a pesquisa.
A construção do índice determina a duração do preenchimento retroativo, e não o número de itens na tabela base. Mesmo uma tabela com poucos itens pode levar um tempo considerável para concluir o preenchimento retroativo. Consulte DescribeTable periodicamente, em vez de presumir que uma tabela pequena ficará pronta rapidamente.
Consulte Adição de um índice vetorial a uma tabela existente.
Sincronização de gravações em andamento
Depois que o índice estiver ativo, o DynamoDB vai replicar cada gravação na tabela de base no índice vetorial. Os comportamentos a seguir afetam se e como uma gravação chega ao índice:
-
Um item será replicado para o índice somente se contiver um atributo vetorial válido. Se o índice definir uma chave de partição, o item também deverá conter esse atributo de chave de partição; caso contrário, a gravação será bem-sucedida na tabela de base, mas o item não será replicado no índice.
-
Os valores vetoriais são armazenados na tabela de base conforme gravados, mas são armazenados com precisão de ponto flutuante de 32 bits (f32) no índice. Valores com maior precisão perdem essa precisão quando replicados no índice.
-
Quando você exclui o atributo vetorial de um item ou exclui o item, a entrada correspondente é removida do índice.
Para obter o conjunto completo de regras de validação de gravação, consulte Gravação de itens com dados vetoriais.
Sincronização entre regiões
Quando uma tabela que tem um índice vetorial é uma tabela global, o DynamoDB replica as gravações em qualquer região de réplica para as outras regiões e as indexa lá. O DynamoDB replica os dados para o índice vetorial de forma assíncrona. Um vetor que você grava em uma região pode não aparecer imediatamente nos resultados de SearchVectors em outra região, mesmo que a tabela use forte consistência em várias regiões (MRSC). Consulte Uso de índices vetoriais com tabelas globais.