BigQuery의 검색 소개
BigQuery 검색 색인을 사용하면 GoogleSQL을 사용하여 테이블 스키마를 미리 알 필요 없이 구조화되지 않은 텍스트 및 반구조화된 JSON 데이터에 숨겨진 고유한 데이터 요소를 효율적으로 찾을 수 있습니다.
BigQuery는 검색 색인을 사용하여 플랫폼 하나에서 강력한 열 저장과 텍스트 검색을 제공하므로 이를 통해 개별 데이터 행을 찾아야 할 때 효율적으로 행을 조회할 수 있습니다. 일반적인 사용 사례는 로그 분석입니다. 예를 들어 개인정보 보호법(GDPR) 보고를 위해 사용자와 연결된 데이터 행을 식별하거나 텍스트 페이로드에서 특정 오류 코드를 찾으려 할 수 있습니다.
BigQuery는 색인을 저장하고 관리하므로 BigQuery에서 데이터를 사용할 수 있게 되면 SEARCH
함수 또는 다른 연산자 및 함수(예: 같음(=
), IN
또는 LIKE
연산자와 특정 문자열 및 JSON 함수)를 사용하여 즉시 검색할 수 있습니다. 검색을 최적화하려면 권장사항을 읽어보세요.
사용 사례
BigQuery 검색 색인을 사용하면 다음 태스크를 수행할 수 있습니다.
- BigQuery 테이블에 저장된 시스템, 네트워크 또는 애플리케이션 로그를 검색합니다.
- 규제 프로세스를 준수하기 위해 삭제할 데이터 요소를 식별합니다.
- 개발자 문제 해결을 지원합니다.
- 보안 감사를 수행합니다.
- 매우 까다로운 검색 필터가 필요한 대시보드를 만듭니다.
- 일치검색을 위해 사전 처리된 데이터를 검색합니다.
자세한 내용은 검색 색인 만들기 및 색인으로 검색을 참조하세요.
가격 책정
조직에서 색인 생성된 테이블의 총 크기가 해당 리전의 한도 미만인 경우 검색 색인을 빌드하고 새로고침하는 데 필요한 처리에 요금이 청구되지 않습니다. 이 한도를 넘어서 색인 생성을 지원하려면 색인 관리 작업을 처리하기 위한 자체 예약을 제공해야 합니다.
검색 색인이 활성 상태면 스토리지 비용이 발생합니다.
색인 스토리지 크기는 INFORMATION_SCHEMA.SEARCH_INDEXES
뷰에서 찾을 수 있습니다.
역할 및 권한
검색 색인을 만들려면 색인을 만들 테이블에 대한 bigquery.tables.createIndex
IAM 권한이 필요합니다. 검색 색인을 삭제하려면 bigquery.tables.deleteIndex
권한이 필요합니다. 다음과 같은 사전 정의된 각 IAM 역할에는 검색 색인을 사용하는 데 필요한 권한이 포함되어 있습니다.
- BigQuery 데이터 소유자(
roles/bigquery.dataOwner
) - BigQuery 데이터 편집자(
roles/bigquery.dataEditor
) - BigQuery 관리자(
roles/bigquery.admin
)
제한사항
- 뷰 또는 구체화된 뷰에서 직접 검색 색인을 만들 수 없지만 색인이 생성된 테이블 뷰에서
SEARCH
함수를 호출하면 기본 검색 색인을 활용할 수 있습니다. - 검색 색인을 만든 후 테이블의 이름을 변경하면 색인이 무효화됩니다.
SEARCH
함수는 점 조회를 위해 설계되었습니다. 퍼지 검색, 오타 수정, 와일드 카드, 기타 유형의 문서 검색은 제공되지 않습니다.- 검색 색인의 범위가 100%가 아니더라도
INFORMATION_SCHEMA.SEARCH_INDEXES
뷰에 보고된 모든 색인 스토리지에 대한 요금이 부과됩니다. SEARCH
함수가 포함된 쿼리는 BigQuery BI Engine에 의해 가속화되지 않습니다.검색 색인은 색인이 생성된 테이블이 DML 문으로 수정될 경우에는 사용되지 않지만 검색 색인으로 최적화할 수 있는 조건자가 DML 문에서 서브 쿼리의 일부일 경우에는 사용할 수 있습니다.
- 다음 쿼리에서는 검색 색인이 사용되지 않습니다.
DELETE FROM my_dataset.indexed_table WHERE SEARCH(user_id, '123');
- 다음 쿼리에서는 검색 색인을 사용할 수 있습니다.
DELETE FROM my_dataset.other_table WHERE user_id IN ( SELECT user_id FROM my_dataset.indexed_table WHERE SEARCH(user_id, '123') );
쿼리가 구체화된 뷰를 참조하는 경우에는 검색 색인이 사용되지 않습니다.
검색 색인은 멀티 문 트랜잭션 쿼리에 사용되지 않습니다.
다음 단계
- 검색 색인 만들기에 대해 자세히 알아보기
- 검색 색인을 사용하여 테이블에서 검색에 대해 자세히 알아보기