CockroachDB는 PostgreSQL 호환 분산 SQL 데이터베이스로, 자동 샤딩·복제·지역 분산을 지원한다. "바퀴벌레처럼 죽지 않는" 고가용성이 특징이다.
아키텍처
계층 구조:
SQL Layer → Transaction Layer → Distribution Layer → Replication Layer → Storage Layer (RocksDB)
데이터 분산:
- Range: 키 범위 기반 데이터 파티션 (기본 64MB)
- Leaseholder: 각 Range의 쓰기/읽기 조정
- Raft: 복제 그룹 합의 알고리즘 (기본 3 복제)
PostgreSQL 호환 SQL
sql
-- 일반 SQL과 동일하게 사용
CREATE TABLE orders (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
customer STRING NOT NULL,
amount DECIMAL(10,2),
created_at TIMESTAMPTZ DEFAULT now(),
region STRING AS (split_part(id::STRING, '-', 1)) STORED
);
-- 분산 트랜잭션 (ACID 보장)
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 'A';
UPDATE accounts SET balance = balance + 100 WHERE id = 'B';
COMMIT;
-- 지역 기반 파티션 (Multi-Region)
ALTER TABLE orders SET LOCALITY REGIONAL BY ROW;
-- region 컬럼 기반으로 데이터를 해당 지역 노드에 배치
CockroachDB vs 경쟁 제품
| 항목 | CockroachDB | Spanner | YugabyteDB | TiDB |
|---|
| SQL 호환 | PostgreSQL | 독자 | PostgreSQL | MySQL |
| 오픈소스 | BSL | 비공개 | Apache 2.0 | Apache 2.0 |
| Multi-Region | 내장 | 내장 | 실험적 | 제한적 |
| 트랜잭션 | Serializable | External Consistency | SSI | Snapshot |
관련 문서