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 passa primeiro para IndexStatus CREATING enquanto o DynamoDB configura a infraestrutura do índice. Em seguida, ele passa para IndexStatus ACTIVE com Backfilling definido como true enquanto o DynamoDB preenche o índice a partir dos dados da tabela de base existente. Novas gravações na tabela de base são replicadas no índice durante essa fase, mas SearchVectors retorna um erro até que o preenchimento seja concluído. Use DescribeTable e aguarde até que IndexStatus seja ACTIVE e Backfilling seja false antes de pesquisar. 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.