Reactive Relational Database Connectivity(R2DBC)는 관계형 데이터베이스에 반응형 프로그래밍 API를 제공하는 프로젝트이다.
기존의 JDBC(Java Database Connectivity)가 블로킹 방식으로 동작하여 리액티브 스택과의 통합에 어려움이 있었던 문제를 해결하기 위해 등장했다.
| 특징 | JDBC | R2DBC |
|---|---|---|
| I/O 모델 | 블로킹 | 논블로킹 |
| 스레드 모델 | 일반적으로 "연결 하나 당 하나의 스레드"를 사용 (스레드 풀 사용) | 적은 수의 스레드로 많은 연결을 처리 이벤트 루프 기반 |
| 프로그래밍 | 동기(Synchronous) 방식 | 비동기(Asynchronous) 빛 반응형(Reactive) 방식 (Publisher/Subscriber) |
| 확장성 | 높은 동시성에 스레드 오버헤드로 인한 확장성 제한 | 높은 동시성에 효율적인 리소스 사용으로 확장성 우수 |
| 사용 편의성 | 익숙하고 성숙한 API | 반응형 프로그래밍 패러다임 이해 필요 |
| 성숙도 | 매우 성숙하고 광범위하게 사용 | 비교적 새로운 기술이다 |
| 주요 사용처 | 전통적인 엔터프라이즈 애플리케이션, 단순한 CRUD 작업 | 고성능, 고확장성, 마이크로서비스, 이벤트 기반 애플리케이션 |