전체 문서가 아닌 문서의 일부만 읽고 쓰는 것과 관련된 많은 질문이 Couchbase 포럼과 스택 오버플로에 올라오고 있습니다. 저는 이것이 어디에서 문제가 될 수 있는지 알 수 있습니다. 예를 들어, 크기가 메가바이트인 문서가 있다면 어떨까요? 이러한 대용량 문서를 애플리케이션 계층과 Couchbase Server 간에 전송하면 속도가 상당히 느려질 수 있습니다.

여기에서 Couchbase 하위 문서 API의 일부인 카우치베이스 서버 4.5가 출시되었습니다. 키를 기반으로 전체적이고 잠재적으로 큰 문서를 가져오는 대신 필요한 문서 부분만 가져올 수 있습니다. 변경 내용을 Couchbase에 다시 기록할 때도 마찬가지입니다. 예를 들어 사용자 프로필 데이터가 있는 문서가 있는데 주소만 변경해야 한다면 어떻게 해야 할까요? 그 변경 내용만 작성하는 것이 더 합리적이지 않을까요?

여기서는 Couchbase용 Node.js SDK를 사용하여 Node.js 애플리케이션에서 하위 문서 API를 사용하는 방법을 살펴보겠습니다. 시작하기 전에 한 가지 이야기를 생각해 봅시다. 소셜 미디어 데이터가 있는 사용자 프로필이 있다고 가정해 봅시다. 문서의 나머지 부분이 아닌 소셜 미디어 데이터만을 기반으로 조작을 수행하겠습니다. 예를 들어

위의 JSON 문서는 우리가 작업하는 기본 문서가 될 것입니다.

이해하기 쉽게 하기 위해 작업할 새로운 Node.js 프로젝트를 만들어 보겠습니다. 명확성을 위해 이 새 프로젝트를 기반으로 구축하겠습니다. Node.js가 설치되어 있고 어딘가에 Couchbase Server 4.5 이상이 실행되고 있다고 가정하고 명령 프롬프트 또는 터미널에서 다음을 실행합니다:

위의 명령을 실행하기 전에 새 디렉터리를 만들어야 하지만 기본적으로 새 Node.js 프로젝트를 생성하고 Couchbase Node.js SDK를 설치합니다. 새 디렉토리에 app.js 파일을 로직을 저장할 디렉토리와 같은 디렉토리에 저장합니다.

앞으로는 저희는 app.js 파일을 다운로드합니다. 파일을 열고 기본 부트스트랩 코드를 추가하여 Couchbase에 연결해 보겠습니다.

위에서는 로컬로 실행 중인 Couchbase 인스턴스에 연결하고 기본값 버킷으로 설정합니다. 필요에 따라 자유롭게 변경하세요. 이제 다음 네 가지 자바스크립트 함수를 만들어 보겠습니다:

비동기 함수 콜백의 거대한 중첩 체인을 방지하기 위해 네 개의 함수를 만들고 있습니다. 우리 프로젝트는 스크립트처럼 설계될 것이기 때문에 체인을 따라가기가 조금 어려울 수 있습니다.

각 기능에 대해 순서대로 살펴보겠습니다. 먼저 createDocument 함수를 사용하면 다음과 같이 표시됩니다:

 

 

위의 함수는 문서 키와 JSON 문서를 전달한다고 가정합니다. 마지막에 설명할 테니 걱정하지 마세요. 하지만 지금 일어나고 있는 일은 업서트 를 사용하여 완전한 새 문서를 만듭니다. 이 예제에서는 기본적으로 이 함수를 초기화 함수로 사용합니다. 전체 프로필 문서가 생성되면 성공하면 다음 함수를 호출합니다. 이 다음 함수는 getSubDocument 함수를 호출하면 다음과 같이 표시됩니다:

위의 함수는 우리가 정의한 초기 문서 키를 가져와서 문서를 가져오는 대신 조회를 수행한다고 선언합니다. 조회를 수행할 때 우리는 소셜네트워킹 프로퍼티가 있으면 이 조회를 실행합니다. 실행 결과는 여러 속성의 배열을 반환하므로 원하는 경우 둘 이상의 속성을 가져올 수 있습니다. 예를 들어, 위 결과 내용의 배열은 다음과 같습니다:

이후 getSubDocument 함수가 성공적으로 완료되면 업서트서브문서 함수를 사용하면 전체 문서 또는 일부만 가져와도 문서의 일부를 변경할 수 있습니다.

여기서 명확히 하자. 우리가 mutateIn 메서드를 사용하면 먼저 문서를 가져오지 않습니다. 앞서 수행한 조회와 비슷하게 작동합니다. 키를 기반으로 변경할 문서를 카우치베이스에 알려준 다음 특정 속성을 업서트합니다. 위의 예에서는 다음과 같은 새 속성을 만들려고 합니다. 웹사이트. 중첩된 프로퍼티이므로 해당 프로퍼티의 값과 함께 전체 경로를 전달합니다. 그러면 요청을 실행할 수 있습니다.

마지막으로 남은 전체 문서를 확인하고자 합니다. 돌연변이가 성공했다고 가정하면 getDocument 함수가 호출됩니다. 다음과 같이 표시됩니다:

위의 함수에서 우리는 단지 표준 get 를 문서 키로 호출합니다. 마무리를 위해 첫 번째 함수를 호출한 코드를 공유하는 것이 좋을 것 같습니다. 다음과 같이 볼 수 있습니다:

결론

카우치베이스 하위 문서 API는 대용량 문서로 작업할 때 매우 유용합니다. 문서에서 조각을 가져와 전송 크기를 줄일 수 있을 뿐만 아니라 조각을 작성할 수도 있습니다. Node.js용 API로 할 수 있는 작업 중 일부만 공유했습니다. 다른 예시를 보려면 프로젝트에서 확인할 수 있습니다. 추가 명령은 Node.js SDK에서 확인할 수 있습니다. 문서.

작성자

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

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

댓글 남기기