문서번호 : 11-2861191
주요 기능
1. Full-Text Search 개선 사항
1.1 분석기 및 토크나이저
Full-Text Search 가 사용자 지정 분석기 및 토크나이저를 지원 합니다.
이를 통해 영어 이외의 언어, 이메일 및 URL이 포함된 텍스트, 사용자 정의 공백 처리 등을 지원 하여 고품질 검색 결과를 제공합니다.
1.2 BM25 Scoring
새 함수 BM25_GLOBAL 이 추가되었습니다.
이 새로운 함수를 사용하면 테이블의 모든 행에 함께 점수가 매겨집니다.
콜렉션 및 용어 통계는 테이블에 대해 계산되어 테이블의 모든 행에 상대적인 정확한 점수를 보장합니다.
! 정확도와 비용이 증가합니다.
! 새로운 기능: FULLTEXT SERVICE STOP 명령이 추가되었습니다.
이 명령은 명령이 실행되는 Aggregator 에 연결된 모든 노드에서 실행 중인 전체 텍스트 V2 서비스를 중지합니다.
1.3 한국어 분석기 추가 (Version 8.9.3)
Full-text search V2를 위한 한국어 분석기가 추가되었습니다.
! 현재로는 Custom Analyzer는 사용 불가능하며, built-in으로만 사용 가능합니다.
# Ex)
CREATE TABLE kr (
a TEXT,
FULLTEXT USING VERSION 2 (a) INDEX_OPTIONS
'{ "analyzer": "korean"}'
);
SQL
복사
2.SQL 개선 사항
2.1 Writable Views
쓰기 가능한 뷰가 지원 됩니다.
쓰기 가능한 뷰에서 UPDATE, INSERT 및 DELETE 쿼리를 실행할 수 있습니다.
information_schema.VIEWS 를 사용하여 뷰를 업데이트할 수 있는지 검사할 수 있습니다.
# Ex)
# Writable Views 사용
SET GLOBAL enable_writable_views = 1;
# 뷰 업데이트 가능 확인
SELECT TABLE_NAME, IS_UPDATABLE FROM information_schema.VIEWS
WHERE TABLE_NAME='shipped_products';
>>>
+------------------+--------------+
| TABLE_NAME | IS_UPDATABLE |
+------------------+--------------+
| shipped_products | YES |
+------------------+--------------+
SQL
복사
! 쓰기 가능한 뷰를 사용하려면 enable_writable_views 전역 변수를 1로 설정합니다.
2.2 LATERAL JOIN
lateral join을 사용하면 SQL 쿼리의 FROM 절에 있는 하위 쿼리가 동일한 FROM 절의 다른 테이블을 참조할 수 있습니다. 일반적으로 이러한 참조는 SQL에서 허용되지 않습니다.
LATERAL 키워드를 사용하면 이러한 참조가 허용됩니다.
# Ex)
# 오류 발생 상황
SELECT *
FROM t1 LEFT JOIN (SELECT b FROM t2 WHERE b = t1.a) AS t3 ...;
# LATERAL JOIN을 사용
# 실행 가능한 쿼리
SELECT *
FROM t1 LEFT JOIN LATERAL (SELECT b FROM t2 WHERE b = t1.a) AS t3 ...;
SQL
복사
2.3 Multi-column IN-list expressions
쿼리의 WHERE 절에서 다중 열 IN-리스트 표현식이 지원됩니다
# Ex)
SELECT *
FROM my_table
WHERE (column1, column2) IN (('value1', 'value2'), ('value3', 'value4'));
SQL
복사
3. Iceberg 개선 사항
3.1 Continuous Ingest
Iceberg 테이블에서 SingleStore 테이블로 파이프라인을 설정할 수 있습니다.
또한 소스 테이블의 변경 사항을 타겟 테이블로 가져옵니다. (Insert, Upsert) 모두 이동 가능합니다.
! 현재 DELETE 는 불가능합니다.
CREATE OR REPLACE 명령을 사용한 수동 upserts가 지원됩니다.
3.2 New Catalogs
Snowflake, REST, JDBC, Hive 및 Polaris 카탈로그가 파이프라인을 사용하여 지원됩니다.
4. Vector 개선 사항
4.1 Nullable 열의 벡터 인덱스
이제 NULLable VECTOR 유형 열에서 벡터 ANN 인덱스 작성을 지원합니다.
개선 전에는 NOT NULL로 선언된 열에서만 벡터 인덱스를 만들 수 있었습니다.
이제 비동기적으로 텍스트에 대한 벡터 임베딩을 얻은 후에 나중에 값을 채울 수 있습니다.
또한, 벡터 검색 속도를 높이기 위해 NULL 인덱스(예: HNSW_FLAT)를 열에 넣을 수 있습니다.
이 인덱스는 NULL을 허용할 수 있으며 벡터를 가져올 때까지 NULL 값을 포함합니다.
4.2 벡터 인덱스 메모리 트래킹
alloc_vector_index : 벡터 인덱스에서 사용하는 메모리를 MB 단위로 추적합니다.
5. 개선 사항 및 수정 사항
5.1 High Availability for the Master Aggregator
HA for MA를 활용하면 향상된 안정성 및 페일오버 기능의 이점을 가지게 되므로 중요 업무용 워크로드의 고가용성을 유지시킵니다.
이 기능은 기본 MA에 장애가 발생할 경우 새 MA를 자동으로 선택하고 승격하여 클러스터의 지속적인 작동을 보장합니다.
5.2 Additional Detail
8.9에는 수십 개의 다른 기능 및 성능 개선 사항과 버그 수정도 있습니다.
업그레이드 시 확인 사항
중요
•
SingleStoreDB 7.5 이상 버전을 사용하는 클러스터에서만 SingleStoreDB 8.9로 직접 업그레이드가 가능합니다.
•
DR 구성에 의해 실행 중인 보조 클러스터도 함께 업그레이드 해야 한다면, 보조 클러스터를 하나씩 업그레이드한 후 마지막으로 기본 클러스터를 업그레이드하여 복제가 업그레이드 중에도 동작하도록 합니다.
•
MemSQL 6.7 ~ 6.8 or from SingleStoreDB 7.0 에서 업그레이드하려면 3단계 업그레이드 프로세스를 사용하는 것이 좋습니다. (이전 버전에 대한 업그레이드는 공식 Docuement 를 참고합니다. )
1. SingleStore 7.3으로 업그레이드합니다.
2. SingleStore 7.5로 업그레이드합니다.
3. SingleStore 8.9로 업그레이드합니다.
업그레이드 전 확인
Backup
업그레이드 작업 전 데이터베이스를 백업합니다. 클러스터에서 구성하는 정보(리소스 풀, 엔진 변수, 사용자, 권한, role, passwords, Pipeline Transforms)는 백업 명령을 통해 백업되지 않으므로 OS 단에서 별도의 스크립트를 사용하여 미리 백업해두는 것이 좋습니다.
( MemSQL 6.8 이전 버전의 클러스터에서 생성한 백업은 SingleStoreDB 7.8 이후 버전의 클러스터에서는 복구 할 수 없습니다. )
Plancache
새로운 SingleStoreDB 버전으로 업그레이드하면 이전에 컴파일된 모든 plan 이 무효화되므로 최초 쿼리 실행 시에는 기존보다 시간이 느려질 수 있습니다.
비동기 엔진 변수
SingleStoreDB 7.3 이후부터 비동기 엔진 변수 convert_nonunique_hash_to_skiplist 에 대해 TRUE로 설정됩니다.
OpenSSL 3.0으로 업그레이드
SingleStoreDB 8.1 이후 보안 연결을 설정할 때 OpenSSL 3.0 을 사용합니다. 따라서 보안 연결에 사용하는 클라이언트인증서의 서명(Signature)에 SHA 또는 MD5 Hash 암호화를 사용한다면 SHA256 (또는 그 이상의 알고리즘)을 사용하는 인증서로 교체되어야 합니다. TLS v1, TLS v1.1, TLS v1.2 을 모두 지원하며, FIPS 활성화 시에는 TLS v1.2만 지원합니다.
클러스터 체크
-- 모든 노드가 Online 상태인지 확인
SHOW LEAVES;
SHOW AGGREGATORS;
-- Orphan 파티션이 없는지 확인
SHOW CLUSTER STATUS;
-- rebalance 또는 redundancy 조정이 필요하지 않은지 확인
EXPLAIN REBALANCE PARTITIONS;
EXPLAIN RESTORE REDUNDANCY;
SQL
복사
업그레이드
업그레이드 방법 (Offline/Online) 을 선택하고, 기존 설치와 동일한 설치 파일 형식을 사용하여 업그레이드를 진행합니다.
•
Online 업그레이드를 진행하려면 클러스터에 H/A 설정이 되어있어야 합니다.
•
업그레이드 명령 실행 전 --precheck-only 옵션을 사용하여 업그레이드 동작에 문제가 없는지 미리 확인할 수 있습니다.
•
인터넷에 엑세스 할 수 없는 환경이라면 엔진 설치 파일을 사전에 다운로드하여 클러스터 환경에 옮겨 놓습니다. 이 때 다운로드 받은 설치 파일의 버전이 v8.9가 맞는지 확인합니다.
업그레이드 실패로 인한 Roll back
SingleStoreDB는 downgrade 를 지원하지 않습니다. 따라서 업그레이드를 실패했다면 업그레이드 작업 전 만든 백업을 사용하여 roll back합니다.
# 현재 구성되어 있는 클러스터로부터 setup 정보(.yaml)를 추출
$ sdb-deploy generate-cluster-file
# 업그레이드 실패한 클러스터의 노드 전체 삭제
$ sdb-admin delete-node --stop --all
# v8.9 엔진 삭제
$ sdb-deploy uninstall --version 8.9
# 호스트 정보 삭제
$ sdb-toolbox-config unregister-host --all
# setup 정보(.yaml) 로 다시 클러스터 구성
$ sdb-deploy setup-cluster --cluster-file /path/to/cluster/file
# 사전 백업 파일을 Restore
> RESTORE DATABASE <database_name> FROM "backup_path" [WITH FILE = incr_backup_id] [sync_options] [(OPTION resource_pool = resource_pool_name)]
Bash
복사
업그레이드 후 확인
•
버전에 따른 엔진 변수 Default 값 차이
일부 엔진 변수의 default 값이 이전 버전과 달라지더라도 업그레이드를 통해 새로운 버전의 클러스터를 사용하는 경우 이전 버전의 값을 그대로 사용합니다. default 값이 변경된 엔진 변수가 확인된다면 직접 테스트를 수행하여 관리자가 값을 변경합니다.
•
새로운 기능의 활성화
일부 새로운 기능은 v8.9로 새로 설치 및 구성된 클러스터에서는 자동으로 활성화되지만 업그레이드를 하는 경우에 비활성화 됩니다. 이러한 기능들은 필요성을 확인 후 직접 테스트를 수행하여 관리자가 활성화 여부를 결정합니다.
References
일자 | 작성자 | 비고 |
2024.12.27 | jwy | |