N1QL 쿼리 및 Couchbase를 사용한 RxJava의 단순성

N1QL 쿼리 및 Couchbase를 사용한 RxJava의 단순성

쿼리를 시도해 본 적이 있나요? 카우치베이스 N1QL과 Java SDK의 동기식 API를 사용하나요? 잘 작동하고 특별히 어렵지는 않지만 약간 지저분하고 동기식이라는 점이 마음에 걸립니다. 이 문제를 해결하는 방법에는 몇 가지가 있습니다. 더 나은 코드를 작성하거나 최근에 관심을 갖기 시작한 RxJava를 살펴볼 수 있습니다.

RxJava에 익숙하지 않은 분들을 위해 설명하자면, Rx.NET 및 RxJS와 유사한 Java용 반응형 확장 프로그램 세트입니다. 가장 큰 장점은 Couchbase Java SDK가 이 확장 세트와 매우 잘 통합됩니다.. N1QL을 사용하여 RxJava를 최대한 활용하는 몇 가지 Java 코드 스니펫을 살펴보겠습니다.

다음과 같은 매우 간단한 동기식 쿼리 코드가 있다고 가정해 보겠습니다:

위의 예제에는 간단한 N1QL 쿼리가 있습니다. 쿼리를 실행한 후 결과 집합을 얻고 이를 반복하여 Java 지도 에 추가하고 목록. 마지막으로 구문 분석된 결과를 반환합니다. 이 구문 분석은 Spring Boot 애플리케이션으로 작업할 때 일반적이지만 이에 국한되지는 않습니다.

위의 코드는 특별히 어렵지는 않았지만 많은 일이 있었습니다. RxJava를 사용하면 위의 코드를 다음과 같이 변환할 수 있습니다:

알겠습니다! RxJava 코드가 더 많은 줄을 가지고 있지만 더 복잡하거나 지저분하다는 뜻인가요?

RxJava는 시간 경과에 따른 값으로 간주할 수 있는 관측값을 사용합니다. 이는 비동기식이며 데이터가 파이프라인을 통해 흐르면서 일련의 연산을 포함할 수 있습니다. 예를 들어, 위 코드에서는 N1QL 쿼리를 비동기적으로 실행합니다. 쿼리의 .flatMap 에서 쿼리로 반환된 데이터에 대해 비동기 변환을 수행합니다. AsyncN1qlQueryResult 를 입력하여 AsyncN1qlQueryRow.map 은 반환된 각 행을 Java 지도. 왜냐하면 우리는 목록 의 Java 지도 전화할 수 있습니다. toList 가 바로 그 역할을 합니다. 결국에는 관찰 가능 항목으로 작업하고 싶지 않으므로 다음을 호출합니다. 차단 를 사용하여 결과를 반복 가능한 값으로 변환하거나, 우리의 경우 부모 함수 또는 프런트엔드에서 작업할 수 있는 값으로 변환합니다. 마지막으로 .single 우리는 단 한 번만 돌아올 수 있다는 것을 알고 있기 때문입니다. 목록.

RxJava는 강력하며 위의 예시보다 훨씬 더 복잡한 작업에도 적용할 수 있습니다. 여기서 중요한 점은 사용이 간편하고 비동기 데이터 조작에 대한 이벤트 기반 접근 방식을 제공한다는 점입니다.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Nic Raboy, 개발자 옹호자, Couchbase

닉 라보이는 최신 웹 및 모바일 개발 기술을 옹호하는 사람입니다. 그는 Java, JavaScript, Golang 및 Angular, NativeScript, Apache Cordova와 같은 다양한 프레임워크에 대한 경험이 있습니다. Nic은 웹 및 모바일 개발을 보다 쉽게 이해할 수 있도록 자신의 개발 경험에 대해 글을 쓰고 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.