카우치베이스 서버

카우치베이스 서버에서 인덱스 없이 다양한 N1QL 쿼리 수행하기

이미 알고 계시겠지만, N1QL이라는 SQL 방언을 사용하여 Couchbase NoSQL 문서를 쿼리할 수 있습니다. 이는 Couchbase 버킷의 문서에 생성한 인덱스를 통해 가능합니다. 하지만 모든 N1QL 쿼리에 인덱스가 먼저 존재해야 하는 것은 아니라고 하면 어떻게 될까요? 제 동료와 이야기를 나눈 후 저스틴 마이클스에서 인덱스 없이 N1QL에서 대량 작업을 수행하는 멋진 트릭을 보여주었습니다. 저는 항상 인덱스가 하나 이상은 있어야 한다고 생각했기 때문에 이 사실은 저에게는 새로운 것이었지만, 매일 새로운 것을 배우는 것이니까요.

N1QL 쿼리를 몇 가지 실행하는 방법을 살펴보겠습니다. 카우치베이스 인덱스가 없고 기본 인덱스가 포함되지 않은 버킷입니다.

몇 가지 샘플 시나리오를 살펴보기 전에 인덱스 없이 쿼리를 실행하는 것이 어떻게 가능한지 궁금하실 것입니다. 이것은 실제로 사용 키 연산자를 사용하여 메타 정보에 존재하는 키로 특정 문서를 구체화할 수 있습니다.

다음 문서를 예로 들어 보겠습니다:

위에는 특정 사람을 나타내는 간단한 문서가 있습니다. 위의 문서에 다음과 같은 내용이 있다고 가정해 보겠습니다. nraboy 를 ID 값으로 설정합니다. 흥미를 더하기 위해 다른 문서를 만들어 보겠습니다.

다음이 있다고 가정합니다. mraboy 를 ID 값으로 입력합니다:

따라서 이 두 문서 중 하나를 쿼리하려면 사용 키 연산자를 사용하면 다음과 같은 쿼리를 작성할 수 있습니다:

를 보면 설명 를 보면 쿼리에 인덱스가 사용되지 않았음을 알 수 있습니다. 위와 같은 쿼리 유형은 제가 이전에 작성한 글의 제목과 유사한 방식으로 매우 빠른 성능을 원하고 얻고자 하는 키를 알고 있는 경우에 유용할 것입니다, Node.js를 사용하여 한 번의 작업으로 키별로 여러 문서 가져오기.

상황을 좀 더 복잡하게 만들어 보겠습니다. 하나 이상의 문서 속성에 대한 관계로 쿼리하려면 어떻게 해야 할까요?

다음을 사용하여 다른 문서를 만들어 보겠습니다. 카우치베이스 를 문서 ID로 입력합니다:

위의 문서는 회사를 나타냅니다. 짐작하셨겠지만 각 사람의 회사 정보를 쿼리하려고 합니다. 이를 가능하게 하기 위해 문서에서 nraboy 문서를 다음과 같이 수정합니다:

다른 문서에 키가 있는 속성을 추가한 것을 확인할 수 있습니다. 회사 정보를 추가하지 않습니다. mraboy 문서.

여러 문서 관계가 있지만 인덱스가 생성되지 않은 다음 쿼리를 예로 들어 보겠습니다:

위의 쿼리에는 하위 쿼리인 사용 키 연산자입니다. 나쁘지 않죠? 다음과 같은 다른 연산자를 사용해 보세요. UNNEST 에 있는 배열 데이터를 평평하게 만들기 위해 소셜 미디어 속성입니다.

결론

방금 인덱스를 사용하지 않는 Couchbase에서 N1QL 쿼리를 작성하는 방법을 살펴보았습니다. 인덱스를 사용하지 않는 사용 키 연산자를 사용하면 기사에서 설명한 것처럼 키를 기반으로 대량 작업을 수행할 수 있습니다, Node.js를 사용하여 한 번의 작업으로 키별로 여러 문서 가져오기 그리고 Golang을 사용하여 한 번의 작업으로 키별로 여러 개의 카우치베이스 문서 가져오기. 이 작업을 도와준 Couchbase의 저스틴 마이클스에게 큰 감사를 드립니다.

N1QL 및 Couchbase에 대해 자세히 알아보려면 다음을 확인하세요. 카우치베이스 개발자 포털 에서 자세한 내용을 확인하세요.

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

Author

Posted by 닉 라보이

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

댓글 하나

  1. 안녕하세요, 인덱스 없이 여러 문서에서 데이터 버킷에 대한 쿼리를 수행해야 합니다.
    ID 값 목록과 함께 USE KEYS 연산자를 사용할 수 있다는 것을 이해했습니다.
    예: USE KEYS ['a', 'b']
    제 사용 사례에는 여러 문서 ID 목록이 있습니다.
    USE KEYS ['a', 'b', ....., 'n'] 배열에 모든 id 값을 지정하는 대신 USE KEYS ['*모든 문서 id']와 같은 쿼리를 작성할 수 있나요?
    그렇지 않으면 이런 종류의 쿼리를 작성하는 다른 방법을 제안해 주실 수 있나요?
    고마워요

    1. 인덱스를 사용하지 않으려면 모든 키를 지정해야 합니다. 인덱스는 문서를 추적하므로 모든 문서 ID에 대해 이러한 쿼리를 수행할 수 있습니다. 인덱스가 없으면 문서를 추적하는 것이 없으므로 키-값 작업만 할 수 있습니다.

      문서 ID의 배열인 마스터 문서를 보관하고 계신가요? 그런 다음 쿼리가 필요할 때 문서를 조회하고 USE KEYS 문에서 배열의 키를 사용하시겠습니까?

  2. 좋아요, 해결책이 될 수 있습니다.
    답변 주셔서 감사합니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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