[R2DBC] R2DBC란 무엇일까?(1)
R2DBC란 무엇일까요??
최근 Spring webflux에 대해 관심을 가지고 공부를 시작하면서 R2DBC에 대해 알게되었습니다.
R2DBC(Reactive Relational Database Connectivity)는 관계형 DB에서 효율적으로 코드가 동작할 수 있도록
reactive programming API를 가능하게 해줍니다. 즉 관계형 DB에 논블로킹 접근이 가능하게 해줍니다.
R2DBC는 언제 사용할까요?
Reactive Programming을 하는 과정에서 Database 사용이 필요한 경우에 사용합니다.
많은 예제를 보면 Reactor 기반의 Spring Webflux를 사용하며 Database를 사용해야할 때 R2DBC를 많이 사용합니다.
Reactive Programming이란? (참고)
https://alsxor5.tistory.com/63
[Section4] 리액티브(Reactive) 프로그밍이란?
✅리액티브(Reactive) 용어의 의미 일반적으로 '반응을 하는', '반응을 보이는' 이란 의미를 가진다. 리액티브에 대한 의미를 가장 쉽게 이해할 수 있는 또 다른 용어는 바로 리액션(Reaction)이다. ✅
alsxor5.tistory.com
그럼 여기서 질문해봐야 할게 "그냥 Spring 진영에서 많이 사용하는 JPA를 사용할 수는 없나?" 라는 생각이 듭니다.
질문에 대한 답변은 "사용할 수는 있습니다. 하지만 사용하는 것이 좋진 않습니다." 라는 답변을 드릴 수 있습니다.
기존에 사용하는 관계형 DB접근 API(JDBC, JPA)는 블로킹 API로 기본적으로 비동기를 제공하지 않습니다.
즉 Webflux 기반에서 JPA나 JDBC같은 API를 사용한다면 Database 부분에서 Block되고 그동안 thread가 기다리게 됩니다.
결국 논블로킹으로 서비스를 구축한 의미가 없어집니다.
스프링 공식문서에 들어가보시면 Spring 3.0.0부터 R2DBC를 지원한다고 알려주고 있습니다.
https://spring.io/projects/spring-data-r2dbc
Spring Data R2DBC
Spring Data R2DBC, part of the larger Spring Data family, makes it easy to implement R2DBC based repositories. R2DBC stands for Reactive Relational Database Connectivity, a specification to integrate SQL databases using reactive drivers. Spring Data R2DBC
spring.io
R2DBC를 지원하는 데이터베이스 목록과 DB별 예제도 확인할 수 있습니다.
R2DBC의 장점은 뭔가요?
R2DBC는 Reactive programming 기반이다보니 Reactive programming의 장점을 그대로 갖습니다.
Blocking programming일 때보다 높은 동시성(High Concurrency)이 요구되는 상황에서 더 좋은 성능을 낼 수 있습니다.
동시성(Concurrency)이 높아짐에 따라 MVC-JPA를 사용하는 것보다 Latency는 더 줄고, Throughput은 더 증가합니다.
그렇지만 무조건 R2DBC를 사용한다고 더 좋다고는 말할 수 없습니다.
아직 기술측면에서 숙련도가 높지 않으며 Blocking 방식에 비해 사용자도 많지 않고, 구글링을 해보면 자료도 훨씬 적게 나와있습니다.
이번에 R2DBC를 사용하면서 느낀 것은 확실히 Spring data JPA가 잘 만들어져 있다는 것이고, 제공하는 기능도 많습니다.
JPA에 비하면 Spring data r2dbc는 아직 멀게 느껴지고 러닝커브 곡선도 가팔라서 공부하는데 시간이 조금 걸릴 것 같지만 기술 사용을 두려워하기만 해서는 앞으로 발전할 수 없다고 생각되기에 조금씩이나마 내 기술로 만들어야겠다고 생각하였습니다.
다음에는 Spring data R2DBC를 사용한 예제 프로젝트를 작성해보겠습니다!
Reference
https://spring.io/projects/spring-data-r2dbc
Spring Data R2DBC
Spring Data R2DBC, part of the larger Spring Data family, makes it easy to implement R2DBC based repositories. R2DBC stands for Reactive Relational Database Connectivity, a specification to integrate SQL databases using reactive drivers. Spring Data R2DBC
spring.io
R2DBC를 사용해보자 (1) - 왜 사용할까?
이번 글에서 R2DBC란 무엇이고, 왜 사용하고, 어떻게 사용했는지 경험에 대해 이야기해보고자 한다. 학습 기록용. 피드백은 언제나 환영입니다. R2DBC는 언제 사용할까? Reactive Programming을 하는 과정
binux.tistory.com
https://namocom.tistory.com/1012
SimpleR2dbcRepository 를 사용한 R2DBC 학습
계기: Spring Tips: Reactive Summit Keynote: Here and There → Spring R2DBC + MySQL 회사에서 WebFlux 를 사용하여 프로젝트가 되어 있었다. Redis는 ReactiveRedisTemplate 을 사용하여 작성이 되어 있었으나, RDBMS는 jooq 를
namocom.tistory.com