MemDB, VersionDB, 메모리 매핑 파일 I/O 메커니즘 (mmap)와 같은 아키텍처 혁신을 도입하여 처리량을 획기적으로 향상시킵니다.
디스크 I/O가 병목이 되는 이유
상태 전환과 저장
트랜잭션 블록이 실행될 때마다 블록체인은 하나의 상태에서 다음 상태로 전환됩니다. 이 과정은 다음과 같은 두 가지 기본 단계로 나뉩니다:- 상태 커밋: 트랜잭션 실행 후, 새로운 애플리케이션 상태가 커밋됩니다
- 상태 저장: 커밋된 상태가 디스크에 영구적으로 저장되어, 향후 접근성과 과거 기록에 검증을 가능하게 합니다.

- 노드는 다음 블록을 실행하기 전에 새로운 상태가 디스크에 완전히 저장될 때까지 대기해야 합니다.
- 상태 데이터는 고정된 주소를 가지지 않은 임의의 디스크 위치에 기록됩니다. 이로 인해 이후 트랜잭션 실행 시 상태 데이터를 검색하는 데 높은 레이턴시가 발생합니다.
더 높은 처리량을 위한 DB 연산 최적화
이러한 제약을 극복하기 위해 Stable은 상태 연산의 분리 및 메모리 매핑 DB 최적화 라는 두 가지 아키텍처 개선을 제안합니다.1. 상태 커밋과 저장의 분리

- 새로운 상태가 커밋되면, 노드는 즉시 다음 블록을 실행합니다.
- 상태를 디스크에 저장하는 작업은 비동기적으로 백그라운드에서 처리됩니다.
2. mmap 을 통한MemDB 및 VersionDB 도입
Stable은 메모리 매핑 파일 I/O 메커니즘 (mmap)을 기반으로 한 이중 데이터베이스 모델을 도입하여 이를 보강합니다:
- MemDB (메모리 DB):
- 자주 접근되는 최근/활성 데이터를 저장
- mmap을 통한 고정 주소 매핑을 사용하여 빠르고 결정론적인 조회가 가능
- 최근 수정된 상태에 접근하는 대부분의 트랜잭션에 대해 이상적인 구조
- VersionDB (히스토리컬 DB):
- 오래된 과거 상태를 디스크에 저장
- 자주 접근되지 않는, 오래되거나 넓은 범위의 데이터에 대한 쿼리에 최적화됨
mmap 접근을 활용함으로써, Stable은 블록 실행 중 DB의 읽기/쓰기 지연을 크게 줄일 수 있습니다.

