JSON 검색 색인

텍스트 색인 생성 외에도 Spanner 검색 색인은 JSON 및 JSONB 문서를 색인화하고 쿼리하는 효율적인 방법을 제공합니다. 독립형 JSON 및 JSONB 쿼리에 검색 색인을 사용하거나 다른 전체 텍스트 검색 쿼리를 보강하는 데 사용합니다.

자세한 내용은 JSON 데이터 색인 생성JSONB 데이터 색인 생성을 참고하세요.

JSON 및 JSONB 토큰화

TOKENIZE_JSON 함수를 사용하여 GoogleSQL에서 JSON 색인을 만들거나 TOKENIZE_JSONB 함수를 사용하여 PostgreSQL에서 JSONB 색인을 만들 수 있습니다. 자세한 내용은 TOKENIZE_JSONTOKENIZE_JSONB를 참고하세요.

JSON 및 JSONB 쿼리

검색 색인을 사용하여 JSON 포함키 존재 조건이 포함된 쿼리의 속도를 높일 수 있습니다. JSON 포함은 한 JSON 문서가 다른 JSON 문서 내에 포함되어 있는지 확인합니다. 키 존재 여부는 키가 데이터베이스 스키마에 있는지 여부를 결정합니다.

  • GoogleSQL:

    • JSON_CONTAINS 함수를 사용하여 스키마에서 JSON 포함을 표현합니다.
    • 필드 액세스, 배열 하위 표시자 연산자, IS NOT NULL를 사용하여 키 존재 조건을 구성합니다. 필드 액세스 및 배열 하위 스크립트 연산자는 JSON 문서 경로를 설명합니다. IS NOT NULL는 이 경로 (예: doc.sub.path[@index].key IS NOT NULL)의 존재를 확인합니다.
  • PostgreSQL:

    • @><@ 연산자를 사용하여 JSONB 포함을 표현합니다. 자세한 내용은 JSONB 연산자를 참고하세요.
    • ?, ?|, ?& 연산자를 사용하여 키 존재 조건을 구성합니다. 자세한 내용은 JSONB 연산자를 참고하세요.

쿼리에서 검색 색인에 어떤 유형이든 JSON 조건을 여러 개 포함할 수 있습니다. AND, OR, NOT를 사용하여 논리적 조합에 JSON 조건을 포함할 수도 있습니다.

검색 색인 사용 확인

쿼리에서 검색 색인을 사용하는지 확인하려면 쿼리 실행 계획에서 검색 색인 스캔 노드를 찾습니다.

제한사항

  • JSON 및 JSONB 검색 색인을 비롯한 검색 색인은 읽기 전용 트랜잭션에서만 사용됩니다. Spanner는 읽기-쓰기 트랜잭션에서 관련 보조 색인을 사용할 수 있습니다. 읽기-쓰기 트랜잭션에서 검색 색인을 강제로 사용하려고 하면 다음 오류가 발생합니다. ERROR: spanner: code = "InvalidArgument", desc = "The search index AlbumsIndex cannot be used in transactional queries by default."
  • 특정 대규모 또는 매우 복잡한 JSON 문서를 검색 색인에 저장하려고 하면 too many search token bytes 오류가 반환될 수 있습니다. 이 JSON 문서의 출력 토큰 크기는 10MB 미만이어야 합니다. 전체 문서를 검색할 필요가 없는 경우 생성된 열을 사용하여 문서의 더 작은 하위 집합을 추출하고 대신 해당 열을 검색하는 것이 좋습니다.

다음 단계