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 미만이어야 합니다. 전체 문서를 검색할 필요가 없으면 대신 문서의 더 작은 하위 집합을 추출하고(예: 생성된 열 사용) 열을 검색하는 것이 좋습니다.

다음 단계