NewSQL은 전통적인 관계형 데이터베이스의 ACID 특성을 유지하면서 NoSQL 수준의 수평적 확장성과 고성능을 제공하는 차세대 데이터베이스 시스템이다. 2010년대 초 Web 2.0 시대의 확장성 요구와 ACID 필요성을 동시에 해결하려는 시도로 등장했다.
NoSQL vs NewSQL
전통 RDBMS: 강한 일관성 + ACID, 단일 노드 확장 한계
NoSQL: 수평 확장 가능, ACID 포기 (BASE)
NewSQL: 수평 확장 가능 + ACID 유지 ← 두 장점 결합
주요 NewSQL 데이터베이스
CockroachDB 예시
sql
-- PostgreSQL과 거의 동일한 문법
CREATE TABLE accounts (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
balance DECIMAL NOT NULL,
region STRING AS (crdb_internal_region) STORED -- 지역 분산
);
-- 글로벌 분산 트랜잭션 (자동으로 직렬화 보장)
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 'user-a';
UPDATE accounts SET balance = balance + 100 WHERE id = 'user-b';
COMMIT;
-- 서로 다른 대륙에 있는 노드에서도 ACID 보장
Google Spanner의 TrueTime
일반 분산 시스템의 문제:
각 서버의 시계가 다름 → 사건 순서 불분명
Spanner 해결책:
TrueTime API: [earliest, latest] 범위로 시간 표현
GPS + 원자 시계로 오차를 ±7ms 이내로 보장
→ 타임스탬프 기반 전역 일관성 실현
HTAP (Hybrid Transactional/Analytical Processing)
TiDB는 OLTP(트랜잭션)와 OLAP(분석)을 동시에 처리한다.
TiDB 아키텍처:
TiKV (행 스토리지) ─── OLTP 처리
TiFlash (열 스토리지) ─ OLAP 처리
TiDB Server ────────── 쿼리 라우팅 (자동 분리)
관련 개념