Redis에 대한 전체 텍스트 검색 기능이 있는 실시간 보조 인덱스인 RediSearch는 가장 성숙하고 기능이 풍부한 Redis 모듈 중 하나입니다. 또한 매일 더욱 인기를 얻고 있습니다. 지난 몇 개월 동안 RediSearch Docker pull이 500% 증가했습니다! 이러한 급증하는 인기로 인해 고객은 실시간 재고 관리에서 임시 검색에 이르기까지 다양하고 흥미로운 사용 사례를 제시하게 되었습니다.
이러한 추진력을 확장하기 위해 이제 개발자 경험을 개선하도록 설계된 RediSearch 2.0의 공개 미리 보기를 소개합니다. 가장 확장 가능한 Redisearch 버전이어야 합니다. . RediSearch 2.0은 Redis의 Active-Active 지역 배포 기술을 지원하고 다운타임 없이 확장 가능하며 Redis on Flash 지원(현재 비공개 미리 보기)을 포함합니다. 성능에 부정적인 영향을 미치지 않으면서 이러한 목표를 달성하기 위해 RediSearch 2.0을 위한 완전히 새로운 아키텍처를 만들었으며 효과가 있었습니다. RediSearch 2.0은 2.4배 더 빠릅니다. RediSearch 1.6보다.
RediSearch 2.0의 새로운 아키텍처 내부
Redis 데이터베이스에 풍부한 쿼리 및 집계 엔진이 있으면 캐싱을 훨씬 능가하는 다양한 새로운 사용 사례가 가능합니다. RediSearch를 사용하면 복잡한 쿼리를 사용하여 데이터에 액세스해야 하는 상황에서 Redis를 기본 데이터베이스로 사용할 수 있습니다. 더 나아가 Redis의 세계적 수준의 속도, 안정성 및 확장성을 유지하고 데이터를 업데이트하고 색인을 생성하기 위해 코드에 복잡성을 추가할 필요가 없습니다.
RediSearch 2.0의 경우 인덱스가 데이터와 동기화된 상태로 유지되는 방식을 재설계했습니다. FT.ADD 명령을 사용하여 인덱스를 통해 데이터를 쓰는 대신 RediSearch는 이제 해시에 기록된 데이터를 따라가며 동기적으로 인덱싱합니다. 이 재구성은 API의 몇 가지 변경 사항과 함께 제공되며, RediSearch 2.0이 첫 번째 이정표에 도달했을 때 이전 게시물에서 논의했습니다.
이 새로운 아키텍처는 두 가지 주요 이점을 제공합니다. 첫째, 이제 기존 데이터 위에 보조 인덱스를 만드는 것이 그 어느 때보다 쉬워졌습니다. 기존 Redis 데이터베이스에 RediSearch를 추가하고 색인을 생성하고 쿼리를 시작하기만 하면 됩니다. , 데이터를 마이그레이션하거나 인덱스에 데이터를 추가하기 위해 새 명령을 사용할 필요 없이 이렇게 하면 새로운 RediSearch 사용자의 학습 곡선이 크게 줄어들고 다시 시작하지 않고도 기존 Redis 데이터베이스에 인덱스를 생성할 수 있습니다.
데이터를 인덱싱하는 새로운 방법을 구현하는 것 외에도 키스페이스에서 인덱스를 가져왔습니다. 이를 통해 충돌 없는 복제 데이터 유형(CRDT)을 기반으로 하는 Redis Enterprise의 Active-Active 기술이 활성화됩니다. 충돌 없이 두 개의 반전된 인덱스를 병합하는 것은 어렵지만 Redis는 이미 검증된 해시의 CRDT 구현을 가지고 있습니다. 따라서 이 새로운 아키텍처의 두 번째 큰 이점은 RediSearch 2.0을 훨씬 더 확장 가능하게 만드는 것입니다 . 이제 RediSearch가 해시를 따르고 인덱스가 키스페이스 밖으로 이동했기 때문에 이제 Active-Active 지역 분산 데이터베이스에서 RediSearch를 실행할 수 있습니다.
문서는 강력한 최종 일관성 방식으로 복제 세트의 모든 데이터베이스에 복제됩니다. 각 복제본에서 RediSearch는 단순히 해시의 모든 업데이트를 따르므로 모든 인덱스도 강력한 최종 일관성을 갖습니다.
오픈 소스 Redis를 위한 OSS 클러스터 지원
확장성 기능 증가를 Redis Enterprise 사용자로만 제한하고 싶지 않았기 때문에 오픈 소스 Redis 클러스터 API를 사용하여 여러 샤드에 걸쳐 단일 인덱스를 확장할 수 있는 지원을 추가했습니다. 이전에는 단일 RediSearch 인덱스와 해당 문서가 단일 샤드에 있어야 했습니다. 즉, OSS Redis의 데이터 세트 크기와 처리량은 단일 Redis 프로세스가 처리할 수 있는 범위에 한정되었습니다. Redis Enterprise는 클러스터된 데이터베이스에 문서를 배포하고 쿼리 시 결과를 집계하는 기능을 제공했습니다. 이 팬아웃 및 집계는 Redis Source Available License에 따라 공개적으로 제공되는 "coordinator"라는 구성 요소에 의해 처리되므로 Redis Enterprise는 물론 오픈 소스 Redis 클러스터에서도 작동합니다. 그 결과 가장 확장 가능한 RediSearch 버전이 탄생했습니다.
숫자를 보여주세요!
RediSearch 2.0의 수집 성능을 평가하기 위해 공개적으로 사용 가능한 NYC Taxi 데이터 세트로 전체 텍스트 검색 벤치마크(FTSB) 제품군을 확장했습니다. 이 데이터 세트는 풍부한 데이터 유형 세트(텍스트, 태그, 지리 및 숫자)와 많은 수의 문서로 인해 업계 전반에 걸쳐 사용됩니다.
이 벤치마크는 뉴욕시의 노란 택시 승차에 대한 여행 기록 데이터를 사용하여 쓰기 성능에 중점을 둡니다. 특히 이 벤치마크의 경우 문서당 평균 크기가 500바이트인 1,200만 개 이상의 문서를 로드하는 2015년 1월 데이터 세트를 사용했습니다. 전체 벤치마크 사양은 GitHub의 FTSB를 참조하세요.
모든 벤치마크 변형은 벤치마크 테스트 인프라를 통해 프로비저닝된 Amazon Web Services 인스턴스에서 실행되었습니다. 테스트는 RediSearch Enterprise 버전 1.6 및 2.0과 함께 15개의 샤드가 있는 3노드 클러스터에서 실행되었습니다. 벤치마킹 클라이언트와 RediSearch가 활성화된 데이터베이스를 구성하는 3개의 노드는 모두 별도의 c5.9xlarge 인스턴스에서 실행되었습니다.
RediSearch 2.0에는 Redis의 해시 변경 사항을 추적하고 자동으로 인덱싱하는 기능이 제공되므로 FT.ADD 및 HSET 명령에 대한 변형을 추가했습니다. 더 쉽게 업그레이드할 수 있도록 현재 사용되지 않는 FT.ADD 명령을 RediSearch 2.0의 HSET 명령에 다시 매핑했습니다. 아래 두 차트는 밀리초 미만의 대기 시간을 유지하면서 RediSearch 1.6 및 RediSearch 2.0의 전체 수집 속도와 대기 시간을 보여줍니다.
RediSearch는 항상 빨랐지만 이 아키텍처 변경으로 전체 p50 수집 대기 시간 0.4ms에서 초당 96K 문서 인덱싱에서 132K 문서/초로 이동하여 쓰기 스케일링이 크게 향상되었습니다.
처리량 향상의 이점을 얻을 수 있을 뿐만 아니라 각 수집 속도도 빨라집니다. 아키텍처 변경으로 인한 전반적인 수집 개선 외에도 이제 OSS Redis Cluster API 기능에 의존하여 검색 데이터베이스 수집을 선형으로 확장할 수 있습니다.
처리량과 지연 시간 개선을 결합하여 RediSearch 2.0은 최대 2.4배의 속도 향상을 제공합니다. RediSearch 1.6과 비교합니다.
RediSearch 2.0의 다음 단계
요약하자면, RediSearch 2.0은 지금까지 출시된 모든 Redis 사용자를 위한 가장 빠르고 확장 가능한 버전입니다. 또한 RediSearch 2.0의 새로운 아키텍처는 Redis 내에서 기존 데이터에 대한 인덱스를 원활하게 생성하는 개발자 경험을 개선하고 Redis 데이터를 다른 RediSearch 지원 데이터베이스로 마이그레이션할 필요를 제거합니다. 이 새로운 아키텍처를 통해 RediSearch는 스트림 또는 문자열과 같은 다른 데이터 구조를 따르고 자동 인덱싱할 수 있습니다. 향후 릴리스에서는 RedisJSON의 중첩 데이터 구조와 같은 추가 데이터 구조로 작업할 수 있습니다.
개발자 경험을 더욱 향상시키기 위해 더 많은 기능을 계속 추가할 계획입니다. 다음으로 쿼리 실행 중 성능 병목 현상이 발생하는 위치를 더 잘 이해할 수 있도록 검색 쿼리를 프로파일링할 수 있는 새로운 명령을 찾으십시오.
시작할 준비가 되셨습니까? ... RediSearch 2.0 시작하기에서 Tug Gall의 블로그를 확인하십시오! 그런 다음 GitHub에서 이 자습서의 단계를 따르거나 Redis Enterprise Cloud Essentials에서 무료 데이터베이스를 생성합니다. (RediSearch 2.0의 공개 미리 보기는 뭄바이와 오리건의 두 Redis Enterprise Cloud Essentials 지역에서 사용할 수 있습니다.)