R2DBC가 무엇인지에 대해 정리해보겠습니다.
그리고 이후 포스팅에서는 Spring에서 R2DBC를 활용하여 서비스를 구축하는 방법에 대해 학습해보고자 합니다.

R2DBC (Reactive Relational Database Connectivity) 는 관계형 DB에서 효율적으로 코드가 동작할 수 있도록 reactive programming API를 가능하게 해줍니다. 즉 관계형 DB에 논블로킹 접근이 가능하게 해줍니다.
기존 관계형 DB 접근 API (ex JDBC 등 )는 블로킹 API이기때문에, 완전한 논블로킹 서비스를 구축할 수 없었습니다.
그렇기 때문에 이를 해결하고, 보다 적은 스레드와 하드웨어로 더 많은 동시 처리를 하기 위해 R2DBC가 탄생했다고 합니다.
이제는 Spring Data 에서도 R2DBC를 지원하고 있습니다.최신 버전은 1.5.2 버전입니다.
(https://spring.io/projects/spring-data-r2dbc)
spring-data-r2dbc 를 통해 spring에서 쉽게 R2DBC를 사용할 수 있습니다.
현재 지원하는 데이터베이스 드라이브는 다음과 같습니다. - H2- MariaDB- MySQL- Postgres- Oracle- Microsoft SQL Server (MS SQL)- jasync-sql MySQL
위 데이터베이스 드라이브는 R2DBC와함께 쉽게 사용될 수 있으며, 논블로킹으로 처리됩니다.
하지만 R2DBC는 단점 또한 가지고 있습니다.
Spring Data의 Overview를 보면 다음과 같은 문구가 있습니다.
| Spring Data R2DBC aims at being conceptually easy. In order to achieve this, it does NOT offer caching, lazy loading, write-behind, or many other features of ORM frameworks. This makes Spring Data R2DBC a simple, limited, opinionated object mapper. |
쉽게 말해 개념적으로 쉬운 것을 목표로 하므로, 기존에 JDBC나 JPA에서 쉽게 사용했던 여러 기능을 제공하지 않는다고 합니다.
이는 쉽게 사용할 수 있다는 장점보다는 제한사항이 많은 단점으로 작용하는 것 같습니다.
앞으로의 포스팅에서는 이러한 제한사항을 어떻게 극복할 수 있는지에 대해서도 같이 학습해보고자 합니다.
참고
'Spring' 카테고리의 다른 글
| SpringBoot 3.0의 AOT (Ahead of Time Compilation) (0) | 2023.04.12 |
|---|---|
| STOMP에 대한 이해 (0) | 2022.03.14 |
| [스프링 #7] Test (0) | 2019.03.30 |
| [스프링 #6] Custom Annotation (0) | 2018.05.30 |
| [스프링 #5] DispatcherServlet (0) | 2018.05.05 |