LLM WikiAccess-protected knowledge portal
← 스터디 홈
106편 · 약 11분

SingleStore 9.0: BM25 전문 검색 강화, 쓰기 가능 뷰, Projections으로 HTAP 플랫폼이 넓어진 방법

요약

SingleStore는 단일 엔진으로 OLTP 트랜잭션, OLAP 분석, 벡터 검색, 전문 검색을 함께 처리하는 HTAP 데이터베이스다. 9.0 릴리스는 네 가지 영역에서 기존 기능의 완성도를 높였다.

BM25 전문 검색 강화: 파티션 간 글로벌 BM25 스코어링, 커스텀 분석기(언어별 토크나이저·필터), 불리언·근접 검색, 멀티 컬럼 쿼리가 추가됐다. 파티션이 나뉜 분산 테이블에서도 전체 테이블 기준으로 정확한 BM25 점수를 계산할 수 있게 됐다.

쓰기 가능 뷰(Writable Views): 뷰에 UPDATE, INSERT, DELETE를 직접 실행할 수 있다. Oracle, MySQL에서 마이그레이션하는 애플리케이션의 코드 변경을 최소화하는 것이 목적이다.

벡터 인덱스 개선: 크로스-세그먼트 인덱스 병합, 인덱스 캐시, 폴백 스캔 메커니즘이 추가됐다.

Projections: 보조 정렬 키와 샤드 키를 지정해 범위 필터·GROUP BY 쿼리를 2–3배 이상 빠르게 실행한다.


SingleStore의 HTAP 포지셔닝

SingleStore는 "하나의 데이터베이스, 하나의 SQL 인터페이스"로 OLTP와 OLAP 워크로드를 함께 처리하는 것이 기본 설계 방향이다. 컬럼스토어와 로우스토어를 함께 유지하고, 고처리량 수집과 저지연 분석이 같은 엔진 안에서 돌아간다.

9.0이 추가하는 기능들은 이 방향을 세 축으로 확장한다.

  1. 검색 완성도: 벡터·전문 검색이 한 엔진에서 정확하게 동작하게 만드는 것.
  2. 마이그레이션 호환성: Oracle, MySQL 위에서 짜여진 기존 애플리케이션이 코드를 거의 바꾸지 않고 SingleStore로 이전할 수 있게 하는 것.
  3. 쿼리 성능: 주 정렬 키 외의 접근 패턴에서도 빠른 범위 탐색이 가능하게 하는 것.

주요 기능

전문 검색 v2: BM25 글로벌 스코어링과 커스텀 분석기

BM25는 검색 엔진에서 표준적으로 쓰이는 랭킹 함수다. 문서-컬렉션 전체 통계(문서 빈도, 평균 문서 길이)를 기반으로 각 문서의 관련도 점수를 계산한다.

SingleStore의 기존 전문 검색은 파티션(샤드)별로 BM25를 계산했다. 분산 테이블에서는 파티션마다 컬렉션 통계가 달라지기 때문에, 파티션 간 점수 비교가 정확하지 않을 수 있었다.

9.0에서 추가된 BM25 GLOBAL 함수는 테이블 전체를 하나의 컬렉션으로 보고 통계를 계산한다. 모든 파티션을 아울러 collection-wide term frequency와 document frequency를 산출하므로, 검색 결과 랭킹이 파티션 구성과 무관하게 일관된다.

커스텀 분석기는 다음 요소를 조합해 정의할 수 있다.

요소역할
토크나이저텍스트를 토큰으로 분리하는 방식 지정
토큰 필터소문자 변환, 형태소 분석(stemming) 등
문자 필터HTML 태그 제거, 특수문자 처리 등
사용자 정의 불용어 목록도메인 특화 불용어

언어별 분석기도 추가됐다. 9.0에서는 한국어 처리를 위한 nori 분석기 커스터마이징이 지원된다.

불리언 검색, 부스트 쿼리, 근접(proximity) 검색, 멀티 컬럼 전문 검색도 이번 버전에 포함됐다. 전문 검색 조건이 포함된 WHERE 절에서 풀-텍스트 푸시다운(full-text pushdown) 최적화도 동작한다.

쓰기 가능 뷰(Writable Views)

관계형 데이터베이스 뷰에 UPDATE, INSERT, DELETE를 실행하는 기능은 Oracle에서 오래 전부터 지원됐고, MySQL도 특정 조건을 만족하는 단순 뷰에서 쓰기를 허용한다. SingleStore 9.0은 이 동작을 지원해 Oracle과 MySQL 기반 애플리케이션의 마이그레이션 경로를 단순화한다.

대표적인 활용 패턴:

  1. 행 레벨 보안: 뷰로 특정 행에만 접근을 제한하고, 애플리케이션은 뷰를 통해 읽기/쓰기 모두 수행한다.
  2. 마이그레이션 호환 레이어: 기존 Oracle 애플리케이션이 뷰 이름으로 DML을 실행하는 코드를 그대로 유지한다.
  3. 스키마 추상화: 내부 테이블 구조 변경 시 뷰 정의만 수정하면 된다.

Open question: SingleStore 쓰기 가능 뷰가 지원하는 뷰 복잡도 상한(조인 뷰, 집계 뷰 등)은 공식 문서에서 확인 필요.

벡터 인덱스 강화

SingleStore는 임베딩 벡터를 저장하고 유사도 검색을 실행하는 기능을 내장하고 있다. 9.0에서는 세 가지가 추가됐다.

크로스-세그먼트 인덱스 병합: 기존에는 세그먼트별로 분리된 벡터 인덱스를 유지했다. 9.0에서는 여러 세그먼트의 인덱스를 하나로 병합해 크로스-세그먼트 벡터 인덱스를 만든다. 병합된 인덱스는 세그먼트 경계를 넘어 후보를 탐색하므로 검색 정확도가 높아진다.

벡터 인덱스 캐시: 인덱스가 사용하는 메모리 상한을 설정할 수 있다. 대형 임베딩 컬럼이 여럿 있을 때 메모리 사용을 제어한다.

폴백 스캔 메커니즘: 벡터 인덱스 검색 후 필터를 적용했을 때 결과 수가 LIMIT보다 적으면, 엔진이 자동으로 전체 테이블 스캔으로 전환해 필요한 행 수를 채운다. 높은 선택도(selectivity) 필터와 벡터 검색을 조합할 때 결과가 비어 있는 상황을 방지한다.

INDEX 정보 스키마 뷰: 각 벡터 인덱스가 사용하는 메모리와 디스크 용량을 조회할 수 있는 뷰가 추가됐다.

Projections: 보조 정렬·샤드 키

SingleStore는 기본적으로 샤드 키와 정렬 키(sort key)를 기준으로 데이터를 저장한다. 기본 접근 패턴에는 최적이지만, 다른 컬럼 기준의 범위 탐색이나 GROUP BY 쿼리는 전체 스캔에 가까워진다.

9.0의 Projections는 동일한 데이터를 다른 정렬 키·샤드 키로 추가 저장한 보조 사본이다. 쿼리 옵티마이저는 WHERE 절과 GROUP BY를 분석해 가장 적합한 projection을 자동으로 선택한다.

  • 범위 필터와 GROUP BY 쿼리에서 2–3배 이상 성능 향상
  • 쓰기 비용: 수집 시 projection 수만큼 추가 저장
SingleStore 9.0 — HTAP 단일 엔진 OLTP 트랜잭션 INSERT / UPDATE OLAP 분석 쿼리 범위 필터 · GROUP BY AI / 벡터·전문 검색 임베딩 · BM25 SingleStore 단일 엔진 컬럼스토어 + 로우스토어 · ACID 트랜잭션 · 고처리량 수집 전문 검색 v2 BM25 GLOBAL 스코어링 커스텀 분석기 (nori 등) 근접·불리언 검색 FTS 푸시다운 최적화 쓰기 가능 뷰 UPDATE / INSERT / DELETE Oracle / MySQL 호환 마이그레이션 지원 행 레벨 보안 패턴 벡터 인덱스 강화 크로스-세그먼트 병합 인덱스 메모리 캐시 폴백 스캔 메커니즘 INDEX 정보 스키마 Projections 보조 정렬·샤드 키 2–3× 범위 필터 속도 GROUP BY 최적화 옵티마이저 자동 선택
SingleStore 9.0 — HTAP 단일 엔진과 9.0 신기능 레이어

8.x 대비 주요 변화 요약

기능 영역8.x9.0
BM25 스코어링파티션별 로컬 계산테이블 전체 GLOBAL 계산
전문 검색 분석기기본 제공 분석기커스텀 분석기 (토크나이저·필터·불용어)
뷰 쓰기읽기 전용 뷰UPDATE/INSERT/DELETE 지원
벡터 인덱스 범위세그먼트 내크로스-세그먼트 병합 인덱스
보조 정렬지원 안 함Projections으로 다중 접근 패턴 지원

운영 관점의 고려사항

도입 체크포인트

BM25 GLOBAL은 파티션 간 통계 집계가 추가되므로, 쿼리당 비용이 올라갈 수 있다. 정확도가 중요한 검색 기능에는 GLOBAL 스코어링을 쓰고, 파티션별 랭킹이 충분한 경우에는 로컬 BM25를 유지하는 것이 적절하다.

Projections는 쓰기 비용을 증가시킨다. 수집 처리량이 높은 테이블에서는 projection 수를 제한하고, 실제 쿼리 패턴을 분석한 뒤 적용할 컬럼을 결정해야 한다.

벡터 인덱스 캐시는 인덱스 메모리 상한을 명시적으로 설정하는 옵션이다. 대형 임베딩 컬럼이 여럿인 환경에서는 캐시 설정값을 충분히 잡지 않으면 인덱스 효과가 줄어들 수 있다.

업그레이드 경로

9.0은 프로덕션 워크로드에 권장되며, 이후 9.1로 업그레이드할 수 있다. 8.9에서 도입된 쓰기 가능 뷰 기능이 9.0에서 이어진다. 8.7 이전 버전은 9.0으로 직접 업그레이드 경로를 확인해야 한다.

Open question: Projections 적용 시 기존 쿼리 플랜에 미치는 영향과 옵티마이저가 projection을 선택하지 않는 엣지 케이스는 공식 문서 및 릴리스 노트 확인 필요.


정리

SingleStore 9.0은 단일 엔진 HTAP 플랫폼의 완성도를 높이는 네 가지 기능을 묶어 출시했다. BM25 GLOBAL 스코어링은 분산 테이블에서 정확한 전문 검색 랭킹을 가능하게 하고, 쓰기 가능 뷰는 Oracle·MySQL 마이그레이션 경로를 단순화한다. 크로스-세그먼트 벡터 인덱스 병합은 검색 정확도를 높이고, Projections는 기본 정렬 키 외의 접근 패턴에서 2–3배 빠른 쿼리를 제공한다. 하나의 데이터베이스로 OLTP, OLAP, 벡터 검색, 전문 검색을 모두 처리하려는 아키텍처에서 각 기능의 트레이드오프를 명확히 파악하고 도입하는 것이 중요하다.


References

  • SingleStore 9.0 Release Notes. https://docs.singlestore.com/db/v9.1/release-notes/singlestore-memsql/9-0-release-notes/
  • BM25 · SingleStore Self-Managed Documentation. https://docs.singlestore.com/db/v9.1/reference/sql-reference/full-text-search-functions/bm-25/
  • Working with Full-Text Search · SingleStore Self-Managed Documentation. https://docs.singlestore.com/db/v9.0/developer-resources/functional-extensions/working-with-full-text-search/
  • SingleStoreDB 9.0 Release Announcement. https://support.singlestore.com/hc/en-us/articles/38166901238292-SingleStoreDB-9-0-Release-Announcement
  • SingleStore-V: An Integrated Vector Database System in SingleStore, VLDB 2024. https://dl.acm.org/doi/10.14778/3685800.3685805