View a markdown version of this page

테이블과 벡터 인덱스 간 데이터 동기화 - Amazon DynamoDB

테이블과 벡터 인덱스 간 데이터 동기화

DynamoDB는 자동으로 벡터 인덱스를 기본 테이블과 동기화된 상태로 유지합니다. 동기화 작동 방식을 이해하면 검색 결과가 완료되는 시점과 항목이 결과에 표시되지 않을 수 있는 이유를 예측하는 데 도움이 됩니다.

기존 테이블에서 인덱스 백필

이미 항목이 포함된 테이블에 벡터 인덱스를 추가하면 DynamoDB는 인덱스를 기존 데이터로 백필합니다. DynamoDB가 인덱스 인프라를 설정하는 동안 인덱스가 먼저 IndexStatus CREATING으로 전환됩니다. 그런 다음 DynamoDB가 인덱스를 기존 기본 테이블 데이터로 채우는 동안 Backfillingtrue로 설정된 상태로 IndexStatus ACTIVE로 이동합니다. 기본 테이블에 대한 새 쓰기는 이 단계에서 인덱스에 복제되지만 백필이 완료될 때까지는 SearchVectors가 오류를 반환합니다. DescribeTable을 사용하고 검색하기 전에 IndexStatusACTIVE이고 Backfillingfalse가 될 때까지 기다립니다. 기존 테이블에 벡터 인덱스 추가을(를) 참조하세요.

지속적 쓰기 동기화

인덱스가 활성화되면 DynamoDB는 기본 테이블에 대한 쓰기를 각각 벡터 인덱스로 복제합니다. 다음 동작은 쓰기가 인덱스에 도달하는지 여부 및 그 방법에 영향을 줍니다.

  • 항목은 유효한 벡터 속성이 포함된 경우에만 인덱스에 복제됩니다. 인덱스가 파티션 키를 정의하는 경우 항목에는 해당 파티션 키 속성도 포함되어야 합니다. 그렇지 않으면 기본 테이블에서 쓰기가 성공하지만 항목은 인덱스에 복제되지 않습니다.

  • 벡터 값은 작성되는 대로 기본 테이블에 저장되지만 인덱스에는 32비트 부동 소수점(f32) 정밀도로 저장됩니다. 더 높은 정밀도의 값은 인덱스에 복제될 때 해당 정밀도를 상실합니다.

  • 항목에서 벡터 속성을 삭제하거나 항목을 삭제하면 그에 대응하는 항목이 인덱스에서 제거됩니다.

전체 쓰기 검증 규칙은 벡터 데이터로 항목 작성 섹션을 참조하세요.

리전 간 동기화

벡터 인덱스가 있는 테이블이 글로벌 테이블인 경우 DynamoDB는 복제본 리전의 모든 쓰기를 다른 리전에 복제하고 해당 리전에서 인덱싱합니다. DynamoDB는 벡터 인덱스에 비동기적으로 데이터를 복제합니다. 한 리전에서 쓰는 벡터는 다른 리전의 SearchVectors 결과에 즉시 나타나지 않을 수 있습니다. 테이블이 다중 리전 강력한 일관성(MRSC)을 사용하더라도 마찬가지입니다. 글로벌 테이블에서 벡터 인덱스 사용을(를) 참조하세요.