카우치베이스 아키텍처

벡터 스토리지 및 검색을 위한 XATTR을 사용한 성능 향상

도입과 함께 벡터 검색이제 사용자는 다음을 저장할 수 있습니다. 대형 벡터 배열-문서 내에서 임의의 숫자로 구성된 경우가 많습니다. 이 데이터는 대부분의 표준 쿼리에는 필요하지 않으므로 이제 사용자들은 확장 속성 (XATTR)을 사용하여 문서 메타데이터의 일부인 벡터 및 기타 부피가 큰 콘텐츠를 저장합니다. 이렇게 하면 무거운 데이터를 기본 쿼리 경로에서 제외하여 성능이 향상됩니다. 이 게시물에서는 XATTR이 무엇인지 설명하고, 그 이점을 강조하며, 검색에서 어떻게 사용할 수 있는지 보여드립니다.

어디에 있습니까? XATTR?

XATTR은 사용자가 문서 콘텐츠를 변경하지 않고 수정하거나 변경할 수 있는 문서의 메타데이터입니다. 이를 통해 문서를 두 부분으로 분리할 수 있습니다. 문서가 필요한 서비스는 필요할 때만 XATTR 콘텐츠를 가져오는 키값 저장소(KV)에서 문서를 가져옵니다.

사용자가 문서 구조가 다음과 같은 호텔 데이터를 색인하려고 하는 경우를 예로 들어 보겠습니다:

이 문서 구조에는 호텔에 필요한 모든 필드와 비슷한 설명을 가진 호텔을 찾는 데 사용되는 벡터화된 설명이 포함되어 있습니다. 110차원 벡터인 설명 벡터(25번째 줄)는 약 1400바이트를 차지하며, 나머지 문서의 크기는 약 1400바이트입니다.

일반적인 사용 사례에서 사용자가 커버링 인덱스 없이 SQL++를 사용하여 벡터가 아닌 쿼리를 실행하면 전체 문서가 가져옵니다. 즉, 문서 크기의 절반에 가까운 벡터가 필요하지 않음에도 불구하고 나머지 문서와 함께 검색되어 결국 리소스를 낭비하게 됩니다.

사용자가 XATTR을 사용하지 않고 문서 콘텐츠 내의 데이터는 모두 가지고 있지만 XATTR에는 데이터가 없는 상황을 상상해 봅시다. 문서를 가져오려는 쿼리 및 검색과 같은 모든 서비스는 원하는 것을 얻기 위해 모든 문서 콘텐츠를 처리해야 합니다.

이 문서를 구조화하는 더 좋은 방법은 벡터를 XATTR의 일부로 저장하는 것입니다. 이렇게 하면 벡터가 아닌 데이터를 찾는 서비스는 XATTR이 아닌 문서 콘텐츠만 살펴볼 수 있으므로 전송되는 데이터의 양이 절반으로 줄어듭니다.

사용자는 지리 정보, 연락처 정보 등과 같이 거의 사용되지 않는 다른 필드도 XATTR에 추가하여 이를 극한까지 끌어올릴 수 있습니다. 이렇게 하면 불필요하게 전송되는 데이터의 양을 더욱 줄일 수 있습니다.

카우치베이스 색인 생성 방법 XATTR

Couchbase Server 7.6.2 이상부터는 검색 서비스 는 인덱스 생성 과정에서 인덱스 매핑에 필요한 경우에만 XATTR에 존재하는 데이터를 수집할 수 있는 기능을 사용자에게 제공합니다. XATTRs 데이터가 관련성이 없고 인덱스 정의에 XATTRs 매핑이 존재하지 않는 경우, 사용자는 데이터 서비스에서 더 가벼운 페이로드를 가져오기 때문에 더 빠른 데이터 수집과 인덱싱 속도를 기대할 수 있습니다.

사용자가 XATTR 콘텐츠를 색인하는 인덱스를 생성했다고 가정해 보겠습니다. 인덱스 정의는 다음과 같을 것이며, 10-27번째 줄에 XATTR이 색인되어 있습니다:

위와 같은 인덱스 정의를 사용하여 인덱스를 생성한 후, 검색은 데이터 서비스에서 모든 문서 콘텐츠와 XATTR 콘텐츠를 가져옵니다.

이 경우 콘텐츠를 가져온 후 검색 서비스는 이 두 가지를 하나의 문서로 결합합니다. XATTR 내에 있는 데이터는 다음과 같은 특수 필드 매핑을 통해 문서 콘텐츠에 매핑됩니다. _$xattrs 색인화 프로세스 중입니다.

XATTR 콘텐츠에 있는 필드를 쿼리하려면 이 콘텐츠가 다음과 같은 특수 필드 아래에 배치된다는 점에 유의해야 합니다. _$xattrs 를 사용해야 하며 쿼리에 이를 반영해야 합니다. 또한 XATTRs 필드 이름의 크기에는 12자라는 본질적인 제한이 있습니다.

다음은 다음을 사용하여 샘플 문서에 대한 쿼리를 작성할 때의 모습입니다. XATTR:

XATTR은 벡터 저장에만 국한되지 않습니다. 자주 사용되지 않는 필드, 검색 서비스에만 해당하는 필드 또는 대용량 필드가 있는 경우 XATTR에 추가하는 것이 좋습니다. 이렇게 하면 이러한 필드가 필요하지 않은 서비스는 KV에서 더 적은 데이터를 가져올 필요가 있습니다. 

다음 단계

    • 자세히 알아보기 벡터 검색 개념 블로그에서 튜토리얼과 개념 등 다양한 정보를 확인할 수 있습니다.
    • 사용 방법에 대해 자세히 알아보기 XATTR SDK를 통해 문서에서 확인할 수 있습니다.
    • 카우치베이스 카펠라 무료 체험판 에는 벡터 검색을 비롯한 다양한 기능이 포함되어 있습니다. 지금 바로 사용해 보세요.
이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Likith B, 소프트웨어 엔지니어

댓글 하나

  1. 놀라운 블로그... 기존 데이터베이스 콘텐츠를 벡터화하면 기존 애플리케이션의 검색 성능에 부정적인 영향을 미치는지 궁금합니다.

  2. 멋진 도표 설명!
    감사합니다, Likith B.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.