세계에서 가장 흥미로운 DB, TigerBeetle

“SQL 말고 Debit/Credit으로 생각해보자”

안녕하세요 여러분~ 오늘은 좀 색다른 주제를 가져왔어요. “세상에서 가장 흥미로운 데이터베이스”라고 불리는 TigerBeetle 이야기예요. 이름부터 약간 게임 같지 않나요?ㅋㅋ

저도 첨에 보고 ‘뭐야 이거 곤충이야 DB야?’ 했는데, 알고 보니 금융 거래부터 차세대 분산 시스템까지 완전 매력 덩어리더라구요. 그냥 흔한 DB 얘기겠지 하고 읽었다가… 헐, 이건 좀 다른데? 싶었습니다. 오늘 같이 파헤쳐보죠.


1. Debit/Credit, DB의 원래 얼굴

보통 트랜잭션 DB 하면 SQL 떠올리잖아요. 근데 TigerBeetle은 Debit/Credit을 기본 단위로 삼습니다. ‘아니 금융권 아니면 필요 없잖아?’ 싶겠지만, 사실 Jim Gray(전설적 DB 연구자)가 말했듯 트랜잭션의 본질은 금융거래에서 시작됐어요.

은행 계좌에서 돈 빠져나가고 들어오는 그 double-entry bookkeeping이 DB 트랜잭션의 시초라는 거죠. SQL이 70년대부터 있었는데도, Gray는 여전히 debit/credit을 ‘정석 모델’로 봤습니다.

TigerBeetle은 이걸 아예 1급 객체로 만들어버렸습니다. 그래서 SQL에서 한 거래 처리할 때 10~20번 왔다 갔다 해야 하는 걸, TigerBeetle은 한 방에 수천 건을 처리합니다. 진짜 속도 차이 장난 아니에요.


2. 분산이 기본값, 싱글 노드는 없다

옛날 DB들은 다 싱글 노드 중심으로 만들어졌죠. 근데 요즘은 클라우드, 멀티리전, 장애 대비가 필수잖아요? TigerBeetle은 애초에 “분산을 기본값”으로 깔고 들어갑니다. 설치도 심플해요. 그냥 원하는 만큼 서버에 바이너리 올리면 끝. Zookeeper? async replication? 필요 없음

tigerbeetle

TigerBeetle

게다가 합의 알고리즘도 Raft 대신 Viewstamped Replication을 채택했어요.

MIT 연구진이 만든 건데, TigerBeetle은 여기다 집착 수준으로 최적화했습니다. 시계(clock) 문제까지 고려해서 ‘cluster time’을 직접 만든 건 좀 소름 돋았어요. 보통 DB가 이런 거까지 신경 안 쓰거든요.


3. 스토리지 오류까지 잡는다

여러분 SQLite 문서 보면 “디스크는 항상 내가 쓴 걸 그대로 돌려준다”라고 가정해요.

근데 현실은 그렇지 않죠ㅋㅋ 디스크가 슬쩍 데이터 꼬이게 하거나, 성능만 이상하게 떨어지는 gray failure 같은 문제도 많아요. 대부분 DB는 그냥 뻗습니다.

TigerBeetle은 여기서 또 독보적입니다:

  • 데이터 전부 immutable + 체크섬 + 해시 체인
  • LSM Tree 직접 구현 → LSM Forest라는 신박한 구조
  • Jepsen 테스트도 통과 (Kyle Kingsbury가 뚫기 실패)

솔직히 “스토리지 오류 감지+자가복구까지 되는 DB”는 제가 본 것 중 유일했어요.


4. Zig로 짠 DB, 왜 Rust 말고 Zig?

프로그래밍 언어도 흥미로워요. Postgres는 C, MySQL은 C/C++, 근데 TigerBeetle은 Zig로 전부 작성했습니다. 요즘 핫한 Rust가 아니라 Zig라니, 좀 의외죠? 근데 이유가 있어요:

  • 스태틱 메모리 할당 (TigerBeetle 철학 핵심)
  • C 에코시스템 활용 + 더 단순한 문법
  • 코드 읽기 쉽고 러닝커브 낮음

Rust Analyzer 만든 Matklad, Rust 공동 창립자 Brian Anderson도 팀에 합류해서 더 화제였어요. 사실상 Zig/Rust 덕후들의 실험장이자 실전 무대ㅋㅋ


5. DST와 VOPR, 그리고 게임까지

가장 미친 포인트는 테스트 방식. TigerBeetle은 Deterministic Simulation Testing (DST)에 올인했어요. 그냥 유닛 테스트, 통합 테스트 이런 거랑 급이 달라요.

시뮬레이터로 수천 년 치 버그 상황을 단 하루 만에 다 돌려보는 느낌? (실제로 VOPR-1000 클러스터에서 2,000년치 시뮬 돌린다고…)

게다가 이걸 게임화해서 공개했습니다ㅋㅋ 여러분이 직접 DB가 죽는 상황을 플레이하면서 볼 수 있어요. (실제 VOPR이 WebAssembly로 돌아감) 분산 DB 테스트를 게임으로 만든 팀은 진짜 처음 봤습니다.


같이 보면 좋은 글

6. TigerStyle, 코딩을 예술로

마지막으로 철학 얘기. TigerBeetle은 TigerStyle이라는 엔지니어링 가이드를 만들었는데, 이게 NASA의 Power of Ten에서 영감을 받았어요. 요약하면:

  • 함수마다 assert 최소 2개 박기
  • 중요한 주석 대신 assert로 코드 보증
  • 성능은 디자인 단계에서부터 계산하기
  • 코드=예술 (리듬, 시적 감각, biodigital jazz!)

코드 쓰는 걸 단순 기술이 아니라 예술과 음악 같은 감각으로 끌어올린 게 인상 깊더라구요.


7. 그냥 DB가 아니다

TigerBeetle은 단순히 빠른 DB가 아니에요.

  • Debit/Credit 모델로 본질을 잡고,
  • 분산 기본값으로 신뢰성을 담보하고,
  • 스토리지 오류 내성까지 챙기고,
  • Zig와 DST로 빌드업,
  • 마지막엔 TigerStyle로 엔지니어링 문화를 만든.

솔직히 DB라기보단 하나의 시스템 철학+예술 프로젝트 같아요.

궁금하신 분들은 curl 한 줄로 바로 설치 가능하니 직접 만져보는 것도 추천합니다.

오늘부터 이거 사용해보려고 합니다. 과연 어떤한 일들이 있을까요?

그럼 다음에 또 뵙겠습니다

출처: Why TigerBeetle is the most interesting database in the world