백엔드
HBase상 트랜잭션 라이브러리 Haeinsa를 소개합니다
두줄요약
HBase의 다중 행·테이블 트랜잭션 부재를 해결하기 위해 Haeinsa를 소개했습니다. ACID와 직렬화 격리를 제공하며, 연산 패턴별 성능 특성을 설명합니다.
문제 상황
- HBase의 단일 행 원자성만으로 여러 행·테이블을 함께 처리하는 서비스 로직 구현의 어려움
- 기존 HBase 트랜잭션 프로젝트의 서비스 적용이 어려운 성능 문제
구조와 흐름
- Percolator에서 영감을 받은 HBase 클라이언트 트랜잭션 라이브러리 Haeinsa
- 트랜잭션 시작 후 Put·Get·Delete·Scan 연산 수행, 커밋 시 변경 사항 일괄 반영
- 테이블별 Lock Column Family 추가와 클라이언트 라이브러리만으로 기존 HBase 클러스터 적용
선택 이유
- Multi-Row·Multi-Table ACID와 Serializability 제공
- HBase 노드 증설에 따른 처리량 확장과 서버·클라이언트 장애 상황의 트랜잭션 무결성 지향
성능/운영 포인트
- 동일 Row에 여러 연산이 집중될수록 커밋 시 일괄 반영 효과로 성능상 유리
- 메시지 전송 시뮬레이션에서 일반 HBase 대비 높은 성능 관찰
- Row별 단일 연산의 불리한 경우 일반 HBase 대비 처리량·응답시간 2~3배 저하
