주요 컨텐츠로 이동
제품

Databricks에서 전체 텍스트 검색 인덱스로 검색 쿼리 속도 향상하기

전체 텍스트 검색 인덱스는 테이블 레이아웃을 변경하지 않고도 오픈 포맷 테이블에서 쿼리 속도를 100배 이상 향상할 수 있습니다

작성자: Yu Xu, Yingyi Bu , Ivan Vezilić

  • Databricks가 전체 텍스트 검색 인덱스를 베타 버전으로 출시합니다. SQL 문으로 인덱스를 생성하면 쿼리 힌트나 애플리케이션 변경 없이도 부분 문자열 및 키워드 쿼리 속도가 향상됩니다.
  • 프로덕션 환경에서 전체 텍스트 검색을 실행하는 팀들은 페타바이트 규모의 테이블에 대한 부분 문자열 검색 쿼리에서 100배 이상의 속도 향상을 경험하고 있으며, 이를 통해 Databricks에서 새로운 사용 사례를 개발할 수 있게 되었습니다.
  • 현재 Unity Catalog가 관리하는 테이블을 대상으로 Databricks Runtime 18.2에서 사용할 수 있으며, 18.3에서는 Predictive Optimization을 통한 자동 인덱스 유지 관리가 지원될 예정입니다.

테이블이 수백 기가바이트, 테라바이트 또는 그 이상으로 커짐에 따라 모든 데이터 팀은 동일한 문제에 직면합니다. 수십 테라바이트 또는 페타바이트에 달하는 애플리케이션 로그에서 에러 메시지를 검색하거나, 보안 데이터에서 의심스러운 IP 주소를 찾거나, 규정 준수 데이터 세트에서 특정 콘텐츠를 찾는 등 텍스트 검색 쿼리가 고통스러울 정도로 느려집니다. 이러한 쿼리는 결국 필요 이상으로 훨씬 많은 데이터를 스캔하게 되어, 대규모 환경에서 빠르고 표적화된 조회를 어렵게 만듭니다. 오늘 이러한 문제를 해결할 수 있는 솔루션을 발표하게 되어 기쁩니다. 이제 Databricks Runtime 18.2에서 전체 텍스트 검색 인덱스를 베타 버전으로 사용할 수 있습니다.

팀들은 종종 임시방편을 강요받습니다. 중복 테이블을 유지 관리하거나, Elasticsearch 또는 Splunk와 같은 외부 검색 시스템을 구축하거나, 다른 패턴을 희생하면서 하나의 쿼리 패턴에만 최적화하도록 테이블 레이아웃을 과도하게 설계하는 방식입니다.

image2.png

전체 텍스트 검색 인덱스란 무엇인가요?

전체 텍스트 검색 인덱스는 텍스트 열 전체에서 부분 문자열(substring) 및 키워드 쿼리 속도를 향상합니다. 인덱스를 생성하면 쿼리 엔진이 이를 자동으로 사용하므로, 이전에는 전체 테이블을 스캔해야 했던 검색이 이제는 테이블의 아주 일부분만 읽게 됩니다. (작동 방식은 아래에서 자세히 설명합니다.)

전체 텍스트 검색 인덱스는 고카디널리티(high-cardinality) 조회 및 여러 텍스트 열을 동시에 검색하는 데 이상적입니다. 대표적인 예는 다음과 같습니다.

  • 로그 분석 및 SIEM (Security Information and Event Management): 수 테라바이트에 달하는 보안 및 애플리케이션 로그에서 에러 메시지, IP 주소 또는 의심스러운 패턴 검색.
  • 신뢰 및 안전(Trust and Safety) 조사: 대규모 콘텐츠 중재 데이터 세트에서 특정 콘텐츠 찾기.
  • 규정 준수 감사: 규제 보고 데이터에서 특정 용어가 포함된 레코드 찾기.

SQL 문 하나만으로 시작할 수 있습니다.

그러면 쿼리 속도가 자동으로 향상됩니다.

쿼리 엔진이 검색 인덱스를 찾아내어 대부분의 파일을 건너뛰는 데 사용하므로, 쿼리 속도가 몇 배에서 수십 배까지 빨라집니다.

내부 작동 방식

전체 텍스트 검색 인덱스는 기본 테이블과 별도로 저장됩니다. 인덱스를 생성하면 Databricks가 텍스트 콘텐츠를 토큰화하고 내부 인덱스(토큰을 일치하는 행에 매핑하는 간결한 조회 구조)를 구축합니다. 쿼리 실행 시 엔진은 이 인덱스를 참조하여 일치하는 행이 포함될 수 있는 파일을 식별한 다음, 해당 파일만 읽습니다.

image3.png

이 아키텍처는 다음과 같은 몇 가지 주요 이점을 제공합니다.

  • 쓰기 성능에 미치는 영향 제로: 인덱스는 비동기식으로 유지 관리됩니다. 인덱싱으로 인해 기본 테이블에 쓰는 속도가 느려지지 않습니다.
  • 자동 쿼리 최적화: Databricks 쿼리 엔진은 사용 가능한 인덱스를 평가하고 별도의 쿼리 힌트 없이도 최적의 액세스 경로를 선택합니다.
  • 정확성 보장: 인덱스가 최신 상태가 아니더라도(기본 테이블보다 뒤처져 있더라도) 쿼리의 정확성은 유지됩니다. Databricks는 필요에 따라 테이블의 인덱싱된 부분과 인덱싱되지 않은 부분을 모두 스캔하므로 결과는 항상 완전하고 정확합니다.
  • Delta 및 Iceberg 지원: 전체 텍스트 검색 인덱스는 서버리스 및 클래식 컴퓨팅 모두에서 Unity Catalog가 관리하는 Delta 및 Iceberg 테이블을 지원합니다.

전체 텍스트 검색 인덱스는 Liquid Clustering과 어떤 관련이 있나요?

Liquid clustering과 전체 텍스트 검색 인덱스는 서로 다른 문제를 해결합니다. Liquid clustering은 데이터를 물리적으로 구성하여 클러스터링 키를 필터링하는 쿼리가 대량의 데이터를 효율적으로 건너뛸 수 있도록 합니다. 클러스터링은 열 값에 대한 등가(equality) 및 범위 필터링에는 도움이 되지만, 필드 내에서 부분 문자열이나 키워드를 찾는 데는 도움이 되지 않습니다.

전체 텍스트 검색 인덱스는 반면, 열 값의 텍스트 내에서 검색하므로 빠른 부분 문자열 및 키워드 조회가 가능합니다. 즉, 클러스터링만으로는 필드 콘텐츠 내에서 일치하는 항목을 찾을 수 없기 때문에, 이미 클러스터링을 적용한 열이라도 전체 텍스트 검색 인덱스를 사용하면 쿼리 속도를 높일 수 있습니다.

요약하자면, Liquid clustering은 열 값별 필터링을 최적화하고, 전체 텍스트 검색 인덱스는 열 값 내 검색을 최적화합니다. 이 두 기능은 서로를 보완하며 동일한 테이블에서 함께 작동합니다.

고객 성능 결과

한 신뢰 및 안전(Trust and Safety) 팀은 페타바이트 규모의 테이블에 대한 조사를 위해 전체 텍스트 검색 인덱스를 도입했습니다.

이전에는 전체 테이블을 스캔해야 했던 부분 문자열 검색이 이제 100배 이상 빠르게 실행되어, 처음으로 대화형 조사가 실용화되었습니다.

저희는 향후 릴리스에서 훨씬 더 빠른 속도를 제공하기 위해 더 효율적인 인덱스 레이아웃과 기타 최적화 작업을 적극적으로 진행하고 있습니다.

시작하기

전체 텍스트 검색 인덱스는 Databricks Runtime 18.2에서 베타 버전으로 제공됩니다. 시작하려면 전체 텍스트 검색 인덱스 문서를 참조하세요.

향후 계획

전체 텍스트 검색 인덱스의 다음 마일스톤은 18.3이며, 다음과 같은 기능이 제공될 예정입니다.

  • 자동 권한 상속 기능이 포함된 완전한 Unity Catalog 통합.
  • Predictive Optimization을 통한 자동 유지 관리: 더 이상 수동으로 REFRESH INDEX를 실행할 필요가 없습니다. 인덱스가 자동으로 최신 상태로 유지됩니다.

베타 기간 동안 여러분의 피드백을 기다리겠습니다. 지금 바로 워크로드에 전체 텍스트 검색 인덱스를 적용해 보시고 퍼블릭 프리뷰(Public Preview) 릴리스를 완성하는 데 동참해 주세요.

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

최신 게시물을 이메일로 받아보세요

블로그를 구독하고 최신 게시물을 이메일로 받아보세요.