문서를 다음 위치에 저장해야 하는 애플리케이션을 만든 적이 있나요? 카우치베이스 를 클릭한 다음 생성된 문서를 즉시 쿼리하고 싶으신가요? 개발할 때는 항상 이런 일이 발생합니다. 예를 들어 각 목록 항목이 새 문서인 목록에 새 데이터를 추가하는 경우를 생각해 보세요. 많은 시나리오에서 목록에 추가한 후 즉시 목록을 렌더링하는 UI를 업데이트하고 싶을 것입니다. 여기서 문제는 방금 만든 문서가 쿼리 결과에 표시되지 않을 수 있다는 것입니다. 이는 Couchbase 인덱서가 Couchbase 버킷에 대한 최신 변형을 처리하지 않았을 수 있기 때문입니다.

Node.js 애플리케이션 내에서 자체 스캔 일관성을 정의하여 Couchbase N1QL 쿼리에서 다양한 결과를 생성하는 방법을 살펴보겠습니다.

애플리케이션에서 스캔 일관성을 정의하는 것은 사용되는 프로그래밍 기술에 관계없이 유사합니다. 이 특정 예제에서는 Node.js 사용 N1QL과 Ottoman.js.

계속 진행하기 전에, Couchbase가 설치되어 있고 N1QL용으로 구성되어 있다고 가정합니다. 즉, 기본 인덱스일지라도 하나 이상의 인덱스가 준비되어 있다는 뜻입니다.

N1QL 쿼리로 스캔 일관성 정의하기

가장 먼저 걱정할 것은 N1QL 관련 쿼리입니다. 다음 Node.js 자바스크립트 코드 스니펫을 살펴보세요:

기본적으로 선택 쿼리는 무제한입니다. 즉, 쿼리가 현재 색인된 데이터만 반환하므로 가능한 가장 빠른 응답을 얻을 수 있습니다. 새 데이터가 색인되지 않은 경우 결과에서 반환되지 않는다는 점을 기억하세요.

데이터가 색인될 때까지 기다리려면 다음을 수행하여 스캔 일관성을 정의할 수 있습니다:

위 코드 조각에서 일관성을 다음과 같이 변경했습니다. REQUEST_PLUS 로 설정하는 것이 좋습니다. 즉, 버킷의 모든 변이가 처리될 때까지 쿼리가 실행되지 않습니다.

그렇다면 N1QL이 아닌 Ottoman.js를 사용한다면 어떨까요?

Ottoman.js로 스캔 일관성 정의하기

오스만은 약간 다르지만 규칙은 여전히 적용됩니다. 찾기 연산자, N1QL이 은밀하게 사용되고 있습니다.

다음 자바스크립트 스니펫을 살펴보세요:

여기서 목표는 앞서 보았던 것과 동일한 작업을 수행하는 것입니다. 위에서는 무제한 쿼리를 수행하고 있으며 인덱스에서 처리된 결과만 받습니다.

다음과 같은 방법으로 쉽게 변경할 수 있습니다:

위 코드에서, 로컬 일관성이란 REQUEST_PLUS.

나쁘지 않죠?

결론

방금 Node.js와 N1QL 또는 Ottoman을 사용하여 Couchbase에서 자신만의 스캔 일관성을 정의하는 방법을 살펴보았습니다. 기본적으로 쿼리는 성능을 우선시하지만 조정이 필요한 경우 최소한 옵션으로 사용할 수 있습니다.

스캔 일관성 및 사용 가능한 옵션에 대해 자세히 알아보고 싶으시면 카우치베이스 문서 주제에 대해 설명합니다.

작성자

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

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

댓글 남기기