RediSearch 2.0의 정식 출시(GA)를 발표하게 되어 기쁩니다. 이번 릴리스를 통해 강력한 쿼리, 인덱싱, 전문(full-text) 검색 엔진을 모든 Redis 사용자에게 제공할 수 있게 되었습니다. 2020년 9월부터 공개 프리뷰로 운영되어 온 RediSearch 2.0은 이미 현대적인 애플리케이션 개발부터 전문 검색, 실시간 분석에 이르기까지 다양한 용도로 활용하며 이를 신뢰하는 고객층을 꾸준히 넓혀 왔습니다. RediSearch 2.0은 완전히 새로운 아키텍처를 도입해 RediSearch 1.6 대비 두 배 이상 빨라졌으며, Redis의 Active-Active 지역 분산 기능과 Redis on Flash도 지원합니다.
RediSearch가 중요한 이유
현대의 조직들은 방대한 양의 정형 및 비정형 데이터를 수집하고 있습니다. 그러나 이러한 데이터는 대부분 느린 디스크 기반 데이터베이스에 잠겨 있어, 현대적인 애플리케이션이 요구하는 실시간 경험을 제공하기 어렵습니다. RediSearch는 사용자가 Redis 데이터셋을 손쉽게 인덱싱하고, 이를 완전히 분산된 방식으로 Redis의 속도 그대로 실시간에 쿼리하고 집계할 수 있게 함으로써 이러한 성능 병목을 해소합니다.
위 다이어그램에서 보듯이, RediSearch는 키의 값(value) 부분에 대해 전문(full-text), 지리적 위치, 숫자, 태그 등 여러 인덱싱 전략을 제공함으로써 Redis에 한층 정교한 데이터 모델링을 도입합니다. 인덱스가 없으면 Redis는 모든 쿼리마다 SCAN 연산을 수행해야 하며, 이는 매우 느리고 비효율적입니다. 또한 이런 인덱스를 직접 생성하고 관리하는 작업은 복잡하고 오류가 발생하기 쉽습니다. RediSearch는 이러한 인덱스를 자동으로 유지 관리하며, 클러스터형 데이터베이스 내 여러 데이터 구조에 걸쳐 쿼리할 수 있도록 지원합니다.
기술 스택에 RediSearch를 추가하면 데이터 인프라가 단순해지고, 풍부한 검색 경험으로 애플리케이션을 확장할 수 있으며, Redis 안에서 분석 기능의 잠재력을 최대한 끌어낼 수 있습니다. 개발자는 더 이상 현대적인 애플리케이션을 만들기 위해 여러 기술, 쿼리 언어, 데이터 모델, 그리고 추가로 붙이는 검색 엔진 사이를 오가며 작업할 필요가 없습니다.
RediSearch 활용 방법
C로 작성된 RediSearch는 Trie와 같은 인메모리 데이터 구조와 최신 분산 인덱싱·쿼리 알고리즘을 활용하여 성능을 최우선으로 설계되었습니다. 덕분에 기존 검색 엔진보다 5~10배 빠른 속도를 자랑합니다(RediSearch의 속도에 대한 자세한 내용은 'Search Benchmarking: RediSearch vs. Elasticsearch' 문서를 참고하세요). 낮은 지연 시간으로 인덱싱과 데이터 쿼리를 처리하기 때문에 자주 갱신되는 데이터셋에도 적합하며, 새로운 RediSearch 2.0은 이전 버전보다 무려 2.4배 더 빠릅니다.
RediSearch를 사용하면 Redis의 여러 데이터 타입으로 된 데이터셋에 신속하게 인덱스를 생성할 수 있습니다(현재는 Hash를 지원하며, 곧 JSON 지원, 이후에는 Streams 지원도 계획하고 있습니다). RediSearch는 증분(incremental) 인덱싱 방식을 채택해 가볍게 인덱스를 생성하고 삭제할 수 있습니다. 또한 풍부한 쿼리 언어를 통해 데이터를 번개처럼 빠르게 조회하고, 복잡한 집계를 수행하며, 속성, 숫자 범위, 지리적 거리를 기준으로 필터링할 수 있습니다.
RediSearch는 중국어, 스페인어, 러시아어, 프랑스어, 독일어 등 다양한 언어에 대한 전문 인덱싱과 어간(stemming) 기반 쿼리 확장을 지원합니다. 나아가 '퍼지(fuzzy)' 검색 기술을 활용한 자동 완성 추천 기능을 구현하여 사용자의 검색 경험을 한층 풍부하게 만들 수 있습니다.
이번 최신 릴리스는 RediSearch를 그 어느 때보다 쉽게 확장할 수 있게 합니다. RediSearch 2.0을 사용하면 수백 대의 서버에서 수십억 개의 문서를 빠르게 쿼리하고 인덱싱할 수 있습니다. Redis on Flash를 지원하기 때문에 그 어느 때보다 비용 효율적인 방식으로 이를 실현할 수 있습니다. 또한 Redis Enterprise의 Active-Active 기술을 활용해 RediSearch를 글로벌 분산 방식으로 배포하면, 여러 지역에 분산된 복제본에서 99.999%(파이브 나인) 가용성을 제공하면서 읽기 작업(쿼리, 집계)과 쓰기 작업(인덱싱)을 로컬 RediSearch 배포 환경과 동일한 속도로 실행할 수 있으며, 충돌 해결(conflict resolution)에 대한 걱정 없이 운영할 수 있습니다.
실제 현장에서의 RediSearch
다양한 데이터 타입과 데이터 구조에 걸쳐 인덱싱, 쿼리, 전문 검색을 지원하는 것은 사용자가 데이터의 잠재력을 최대한 활용하는 데 필수적입니다. RediSearch는 확장성 제한 없이 완전히 분산된 방식으로 밀리초 미만의 지연 시간에 이러한 쿼리를 실행할 수 있어, 진정한 게임 체인저라 할 수 있습니다.
고객들은 RediSearch를 활용해 기존 레거시 애플리케이션을 가속화할 뿐만 아니라 차세대 실시간 애플리케이션까지 만들고 있습니다. 예를 들어 GoMechanic은 RediSearch를 사용해 1,000만 개의 부품 데이터베이스를 검색합니다(RediSearch 2.0 보도자료 참고). 많은 전자상거래 앱 역시 RediSearch를 활용해 수백만 개의 카탈로그 상품에 대한 대화형 검색을 제공하고, 퍼지 검색으로 사용자에게 자동 완성 추천을 제공하고 있습니다.
RediSearch의 임시(ephemeral) 검색 기능을 활용하면 인덱스 생성이 매우 가벼워 하나의 데이터베이스에서 수천 개의 인덱스를 만들 수 있습니다. 덕분에 개발자는 고객의 구매 이력 등을 기반으로 인덱스를 신속하게 생성하고 만료시킬 수 있습니다. 한 보험회사는 RediSearch를 활용해 웹사이트와 앱에서 지리공간 쿼리를 실행할 수 있게 하여, 사용자가 주변에서 적합한 의료 서비스 제공자를 찾도록 지원하고 있습니다. 이러한 모든 사례는 이미 프로덕션 환경에서 대규모로 운영되고 있습니다.
RediSearch 2.0 시작하기
RediSearch 2.0을 활용해 애플리케이션 현대화 여정을 가속화하는 방법을 알아보세요. 바로 시작하고 싶다면 RediSearch Quick Start 페이지를 방문하시기 바랍니다.