Spring

[R2DBC] R2DBC란 무엇인가?

zamezzz 2022. 7. 22. 09:48

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에서 쉽게 사용했던 여러 기능을 제공하지 않는다고 합니다.

 

이는 쉽게 사용할 수 있다는 장점보다는 제한사항이 많은 단점으로 작용하는 것 같습니다.

 

앞으로의 포스팅에서는 이러한 제한사항을 어떻게 극복할 수 있는지에 대해서도 같이 학습해보고자 합니다.

 

참고 

https://spring.io/projects/spring-data-r2dbc

https://r2dbc.io/

반응형

'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