LLM WikiAccess-protected knowledge portal

WIKI

ScyllaDB 2026.2: Trie SSTable 인덱스 기본화·Raft 강한 일관성·DynamoDB 스트림 GA

Cassandra가 물려준 유산과 ScyllaDB가 해결하려는 것 Apache Cassandra는 아마존의 Dynamo 논문 2007 과 Google Bigtable을 결합한 설계다. 고가용성과 수평 확장을 극적으로 단순화했지만, 그 대가로 "결과적 일관성 eventual consistency "을 기본으로 삼았다. 동일한 키에 두 노드가 서로 다른 값을 가질 수 있고, 클라이언트가 QUORUM을 지정해야 비로소 일관성에 근접

경로human/study/content/database-frontier/73-scylladb-2026-2-raft-strong-consistency-trie-sstable-alternator.md
카테고리Study
태그#alternator #consistency #mysql #sstable #strong #study #trie

Cassandra가 물려준 유산과 ScyllaDB가 해결하려는 것

Apache Cassandra는 아마존의 Dynamo 논문(2007)과 Google Bigtable을 결합한 설계다. 고가용성과 수평 확장을 극적으로 단순화했지만, 그 대가로 "결과적 일관성(eventual consistency)"을 기본으로 삼았다. 동일한 키에 두 노드가 서로 다른 값을 가질 수 있고, 클라이언트가 QUORUM을 지정해야 비로소 일관성에 근접할 수 있다.

ScyllaDB는 C++로 Cassandra를 재구현해 처리량을 대폭 높였지만, 초기에는 아키텍처 원칙을 그대로 이어받았다. 2023년부터 ScyllaDB는 체계적으로 이를 바꿔나갔다. 스키마 관리에 Raft를 먼저 적용하고(5.2), 클러스터 토폴로지 변경을 Raft로 직렬화했으며(6.0), 이제 2026.2에서 사용자 데이터 플레인에까지 Raft를 확장하는 실험적 기능을 내놓았다.

같은 2026.2 릴리스에는 읽기 성능을 최대 3배 높이는 Trie 기반 SSTable 인덱스가 기본값으로 승격됐고, DynamoDB 호환 API인 Alternator의 Streams(변경 데이터 캡처) 기능이 GA로 전환됐다.


Trie 기반 SSTable 인덱스: 왜 기존 방식이 느렸나

기존 Index.db + Summary.db 구조

Cassandra에서 물려받은 SSTable 인덱스는 두 파일로 구성된다.

포인트 쿼리 흐름:

[클라이언트 요청]
→ Summary.db (메모리) 에서 근접 범위 탐색
→ Index.db (디스크) 에서 선형 스캔 (수백~수천 바이트)
→ Data.db에서 실제 행 읽기

이 구조의 문제는 Index.db 디스크 스캔 단계다. 파티션 키가 긴 경우나 파티션이 많을수록 스캔 범위가 커지고, 캐시 활용이 어렵다. 특히 SSD가 아닌 환경에서 랜덤 I/O 비용이 크다.

Trie 인덱스: 공유 접두사 제거와 캐시 친화적 접근

Trie(접두사 트리, Prefix Tree)는 키를 문자(또는 바이트) 단위로 분해해 공유되는 경로를 하나만 저장하는 자료구조다. user:alice, user:bob, user:charlie라는 키가 있으면 user: 경로를 한 번만 저장한다.

기존 Index.db (선형 정렬)
user:alice → offset 12000
user:bob → offset 14500
user:charlie → offset 17200
…(공유 접두사 중복 저장)
↓ 탐색: 선형 스캔 필요
Trie 인덱스 (접두사 공유)
루트 → "user:"
→ "alice" → 12000
→ "bob" → 14500
→ "charlie" → 17200
↓ 탐색: O(key_length), 캐시 재사용 ↑
처리량: +20~230% / 지연: -31~63% (ScyllaDB 공식 벤치마크)
SSTable 인덱스: 기존 선형 스캔 vs Trie 구조 비교

ScyllaDB의 Trie 인덱스는 파티션 인덱스와 클러스터링 키 인덱스 모두에 적용된다. 기존 Summary.db + Index.db 조합 대신 Trie 최적화된 새 파일 포맷(ms 포맷)을 사용한다. 공유 접두사를 단일 경로로 압축하므로 파일 크기가 줄어들고, 디스크 I/O 패턴이 보다 순차적이 되어 캐시 히트율이 높아진다.

ScyllaDB 2025.4에서 실험적으로 도입됐던 이 인덱스 포맷이 2026.2에서 기본값으로 승격됐다.

마이그레이션 시 확인 사항


Raft 기반 강한 일관성 테이블: Cassandra의 결정적 차이

기존 LWT와 새 Raft 방식의 비교

Cassandra와 ScyllaDB는 강한 일관성을 위해 LWT(Lightweight Transactions) — Paxos 기반 — 을 제공했다. 하지만 Paxos는 하나의 쓰기 작업에 3번의 라운드트립이 필요하다. 쓰기 지연이 크고, 충돌이 발생하면 재시도 비용이 높다.

방식라운드트립일관성성능
최종 일관성 (기본)1약함 (stale read 가능)빠름
QUORUM 읽기/쓰기1 (복수 노드 확인)준강함중간
LWT (Paxos)3강함 (linearizable)느림
Raft 강한 일관성 (2026.2 실험)1강함 (linearizable)LWT보다 빠름

Tablet-per-Raft-Group 설계

ScyllaDB 6.0에서 도입된 Tablet은 기존 vNode와 달리 토큰 링의 고정 파티션이 아니라 동적으로 분할·이동 가능한 데이터 단위다. 핵심 장점은 각 Tablet이 자체 Raft 그룹을 가질 수 있다는 점이다.

강한 일관성 Keyspace (실험적 — 2026.2)
Tablet A
Raft 리더 (Node 1)
팔로워 (Node 2)
팔로워 (Node 3)
→ 단일 라운드트립 커밋
Tablet B
Raft 리더 (Node 2)
팔로워 (Node 1)
팔로워 (Node 3)
→ 독립적 Raft 그룹
Tablet C
Raft 리더 (Node 3)
팔로워 (Node 1)
팔로워 (Node 2)
→ 병렬 처리 가능
각 Tablet의 Raft 리더가 해당 Tablet의 선형화 가능 커밋을 책임짐 (Paxos LWT의 3-라운드트립 제거)
ScyllaDB Raft 강한 일관성: Tablet별 Raft 그룹 아키텍처

이 설계는 기존 Paxos LWT 대비 두 가지 이점을 준다. 첫째, 라운드트립 수가 1로 줄어든다(Raft 리더가 과반 동의만 받으면 커밋). 둘째, Tablet별로 독립적인 Raft 그룹을 갖기 때문에 서로 다른 Tablet에 대한 쓰기가 병렬로 진행된다.

운영자가 알아야 할 제약

강한 일관성 테이블은 실험적 기능이며, 2026.2에서는 다음 조건이 필요하다.


Alternator Streams GA: DynamoDB CDC를 ScyllaDB에서 운영하기

Alternator는 ScyllaDB가 DynamoDB API를 호환하는 레이어다. 2026.2에서 DynamoDB Streams에 해당하는 기능이 GA(General Availability)로 전환됐다.

기능 개요

Alternator Streams는 테이블의 항목 수준(item-level) 변경 이벤트를 순서가 보장된 스트림으로 제공한다. DynamoDB Streams와의 호환성 덕분에 기존 DynamoDB Streams 소비자 코드를 최소 변경으로 ScyllaDB에 적용할 수 있다.

이벤트 타입내용
INSERT신규 항목 삽입
MODIFY기존 항목 업데이트 (이전 이미지/신규 이미지 포함 가능)
REMOVE항목 삭제

사용 시나리오:

기존 DynamoDB Streams와의 차이

DynamoDB AWS에서 ScyllaDB Alternator로 마이그레이션하는 팀이 확인해야 할 사항:


vNode-to-Tablet 온라인 마이그레이션: 왜 중요한가

기존 ScyllaDB 클러스터(6.0 이전)는 Cassandra의 vNode 방식을 사용한다. Tablet은 더 나은 탄력적 확장과 핫스팟 재분배를 제공하지만, vNode 클러스터를 Tablet으로 전환하려면 기존에는 다운타임이 필요했다.

2026.2는 vNode에서 Tablet으로 무중단 온라인 마이그레이션을 실험적 기능으로 제공한다. 마이그레이션 절차는:

  1. 클러스터를 Raft-managed topology 모드로 전환(6.0에서 완료했어야 함)
  2. 테이블 단위로 Tablet 포맷으로 전환 시작
  3. 내부적으로 Tablet 단위 데이터 이동이 진행되는 동안 읽기/쓰기 계속 서비스
  4. 완료 후 Tablet 기반 스케줄러가 핫스팟 재분배 담당
Before (vNode)
토큰 링 고정 파티션
핫스팟 재분배 어려움
Raft 강한 일관성 불가
마이그레이션 중 (무중단)
읽기/쓰기 서비스 유지
내부: Tablet 단위 데이터 이동
테이블별 순차 전환
After (Tablet)
동적 분할/이동 가능
Raft 강한 일관성 지원
핫스팟 자동 재분배
실험적 기능 — 프로덕션 적용 전 스테이징에서 충분히 검증 필요
vNode → Tablet 온라인 마이그레이션 흐름

마이그레이션 전 확인 사항


Connection Storm 완화: P99 지연 5초 → 3.5밀리초

2026.2는 대규모 서비스 재시작 또는 클라이언트 파드 롤아웃 시 발생하는 Connection Storm 문제를 완화하는 메커니즘을 추가했다. ScyllaDB 측 발표에 따르면 Connection Storm 상황에서 P99 지연이 5초에서 3.5밀리초로 개선됐다.

구체적 메커니즘(예: 연결 수락 속도 제한, 큐잉 전략)은 공식 문서에서 상세히 공개하지 않았다. 대규모 쿠버네티스 클러스터에서 파드 롤아웃 시 ScyllaDB가 순간 연결 폭증을 겪는 환경에서 특히 관련성이 높다.


운영 체크리스트

2026.2 업그레이드 시

성능 모니터링

DynamoDB → ScyllaDB Alternator 마이그레이션 팀


References