Each language version is independently generated for its own context, not a direct translation.
🏭 배경: 데이터베이스라는 거대한 공장
데이터베이스를 거대한 공장의 창고라고 상상해 보세요. 이 창고에는 수많은 물건 (데이터) 이 쌓여 있고, 직원들 (트랜잭션) 이 물건을 찾아오거나 (읽기), 새로운 물건을 넣거나 (쓰기) 작업을 합니다.
이 공장에는 두 가지 종류의 직원이 있습니다.
빠른 배달부 (짧은 거래, Short Transactions):
- "이 물건 하나만 가져와!" "가격만 수정해!"
- 아주 짧고 빠르게 끝나는 작업입니다. 하루에 수만 번씩 반복됩니다.
- 예시: 쇼핑몰에서 주문하기, 계좌 이체하기.
거대한 정리꾼 (긴 거래, Long Transactions):
- "창고에 있는 모든 물건을 다 꺼내서, 종류별로 분류하고, 가격을 다시 계산해서 새로운 목록을 만들어줘!"
- 아주 많은 데이터를 읽고, 복잡한 계산을 하며, 결과를 다시 저장해야 합니다. 시간이 오래 걸립니다.
- 예시: 매달 말에 모든 고객의 사용량을 합산해서 요금을 계산하기, 공장 재고 전체를 다뤄서 원가 계산하기.
🚨 문제: 서로 부딪히는 상황
기존의 데이터베이스 (예: 포스트지스) 는 이 두 직원을 동시에 일하게 하면 큰 문제가 생깁니다.
- 상황: 거대한 정리꾼이 창고 전체를 뒤지고 있을 때, 빠른 배달부들이 "여기서 물건 좀 꺼내줘!"라고 계속 요청합니다.
- 결과:
- 정리꾼은: 배달부들이 자꾸 방해해서 일을 못 하고, 결국 "아, 내가 잘못했나?" 하고 일을 다 취소하고 (Abort) 처음부터 다시 시작해야 합니다.
- 배달부들은: 정리꾼이 길을 막고 있어서 기다려야 하거나, 정리꾼이 일을 취소하는 바람에 자신도 일을 못 합니다.
- 최종: 공장이 마비되고, 처리 속도가 느려집니다.
기존 기술들은 "짧은 일"만 잘 하거나, "긴 일"만 잘 하도록 설계되어 있어, 둘을 섞어서 처리하는 데는 한계가 있었습니다.
✨ 해결책: 시라카미 (Shirakami) 프로토콜
이 논문은 **'시라카미'**라는 새로운 규칙을 제안합니다. 시라카미는 두 가지 다른 규칙을 하나로 합친 하이브리드 (혼합) 시스템입니다.
1. 두 가지 역할 분담 (S-LTX 와 S-OCC)
시라카미는 직원을 두 팀으로 나누어 관리합니다.
팀 A (S-LTX): 거대한 정리꾼을 위한 팀
- 특징: 아주 넓은 공간을 확보해 줍니다. 정리꾼이 일을 할 때, 다른 사람이 방해하지 못하게 미리 "이 구역은 내가 정리 중이야"라고 표시해 둡니다 (Write Preservation).
- 비유: 정리꾼이 창고를 정리할 때, "이 시간 동안 이 구역은 내가 독점해서 정리할 거야"라고 미리 공지하고, 다른 배달부들은 그 구역에 들어오지 못하게 막습니다. 하지만 정리꾼이 일을 마칠 때까지 기다리는 게 아니라, 정리꾼이 일을 시작할 때부터 미리 준비를 해둡니다.
- 핵심: 정리꾼이 일을 멈추지 않고 계속 진행할 수 있게 합니다.
팀 B (S-OCC): 빠른 배달부를 위한 팀
- 특징: 기존에 잘 알려진 '실로 (Silo)' 방식을 개량했습니다.
- 비유: 배달부들은 서로 부딪히지 않도록 빠르게 움직입니다. 만약 정리꾼이 미리 "이 구역은 정리 중"이라고 표시해 두었다면, 배달부는 그 구역에 들어가지 않고 다른 일을 하거나 잠시 기다렸다가 다시 시도합니다.
- 핵심: 짧은 일은 기존처럼 아주 빠르게 처리됩니다.
2. 시간대 관리 (Epoch) 와 우선순위
시라카미는 시간을 작은 조각 (Epoch) 으로 나누어 관리합니다.
- 우선순위: 정리꾼 (긴 거래) 이 배달부 (짧은 거래) 보다 우선순위가 높습니다.
- 작동 방식:
- 정리꾼이 일을 시작하면, 다음 시간대부터는 그 구역이 정리꾼의 것으로 간주됩니다.
- 배달부들은 정리꾼이 일을 시작하기 전에 미리 그 사실을 알 수 있습니다. 만약 충돌이 예상되면, 배달부는 일을 취소하고 (Abort) 다시 시도합니다.
- 중요한 점: 정리꾼은 배달부 때문에 일을 취소당하지 않습니다. 반대로, 배달부는 정리꾼을 방해하지 않도록 스스로 길을 비킵니다.
3. 순서 바꾸기 (Order Forwarding) - 시라카미의 마법
가장 흥미로운 부분은 **'순서 바꾸기'**입니다.
- 상황: 정리꾼 (A) 이 물건을 정리하고 있는데, 그보다 나중에 시작한 다른 정리꾼 (B) 이 A 가 정리한 물건을 읽어야 할 때가 있습니다.
- 기존 방식: A 가 먼저 끝내야 B 가 읽을 수 있으니, B 는 A 가 끝날 때까지 기다려야 합니다.
- 시라카미 방식: "아, B 가 A 보다 나중에 시작했지만, B 가 읽어야 할 물건을 A 가 정리하고 있네? 그럼 순서를 바꿔서 B 가 먼저 끝내게 하고, A 는 나중에 끝내자!"
- 비유: 줄을 서서 기다리는 사람들 사이에서, 나중에 온 사람이 먼저 일 처리를 하고, 나중에 온 사람이 먼저 끝내도 괜찮다면 순서를 뒤바꿔서 모두 빠르게 처리해 줍니다. 이렇게 하면 불필요한 대기 시간이 사라집니다.
📊 실험 결과: 얼마나 빨라졌을까?
연구진은 이 시스템을 '츠루기 (Tsurugi)'라는 실제 데이터베이스에 적용해 보았습니다.
- 전화 요금 계산 (긴 거래 + 짧은 거래):
- 기존 시스템 (PostgreSQL) 은 1800 초 (30 분) 가 넘게 걸리거나 아예 끝내지 못했습니다.
- **시라카미 (Tsurugi)**는 19.7 배 더 빠릅니다. (약 90 초 만에 완료)
- 원가 계산 (BoM):
- 5.6 배 더 빠릅니다.
- 긴 거래 처리 능력:
- 긴 거래만 처리할 때, 시라카미의 '긴 거래 팀 (S-LTX)'은 '짧은 거래 팀 (S-OCC)'보다 680 배 더 많은 일을 처리했습니다.
🎯 결론: 왜 이것이 중요한가요?
우리의 일상생활과 비즈니스는 점점 더 복잡해지고 있습니다.
- **실시간 주문 (짧은 거래)**이 끊이지 않는 동안,
- **매달 말의 대량 정산 (긴 거래)**도 동시에 이루어져야 합니다.
기존 시스템은 이 두 가지를 동시에 하면 "서로 발목이 잡혀서 느려진다"는 문제가 있었습니다. 하지만 시라카미는 이 두 가지를 서로 방해하지 않고, 각자의 특성에 맞춰 최적화하여 동시에 처리할 수 있게 해줍니다.
한 줄 요약:
"빠른 배달부들과 거대한 정리꾼이 같은 공장에서 일할 때, 서로 부딪히지 않고 각자 최고의 속도로 일할 수 있게 해주는 최고의 교통 통제 시스템이 바로 시라카미입니다."