텍스트 색인 생성 외에도 Spanner 검색 색인은 JSON 및 JSONB 문서를 색인화하고 쿼리하는 효율적인 방법을 제공합니다. 독립형 JSON 및 JSONB 쿼리에 검색 색인을 사용하거나 다른 전체 텍스트 검색 쿼리를 보강하는 데 사용합니다.
자세한 내용은 JSON 데이터 색인 생성 및 JSONB 데이터 색인 생성을 참고하세요.
JSON 및 JSONB 토큰화
TOKENIZE_JSON
함수를 사용하여 GoogleSQL에서 JSON 색인을 만들거나 TOKENIZE_JSONB
함수를 사용하여 PostgreSQL에서 JSONB 색인을 만들 수 있습니다. 자세한 내용은 TOKENIZE_JSON
및 TOKENIZE_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:
쿼리에서 검색 색인에 어떤 유형이든 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 미만이어야 합니다. 전체 문서를 검색할 필요가 없는 경우 생성된 열을 사용하여 문서의 더 작은 하위 집합을 추출하고 대신 해당 열을 검색하는 것이 좋습니다.
다음 단계
- 토큰화 및 토크나이저에 대해 알아봅니다.
- 검색 색인 알아보기
- JSON 데이터 색인 생성에 대해 알아보세요.
- JSONB 데이터 색인 생성에 대해 알아보세요.