카우치베이스 모바일

카우치베이스 모바일의 조인 쿼리 소개

Couchbase Lite 2.0은 JSON 문서에서 JOIN을 수행할 수 있는 기능을 지원합니다. 이것은 다음을 기반으로 하는 새로운 쿼리 인터페이스의 일부입니다. N1QL는 JSON용 SQL을 확장하는 Couchbase의 선언적 쿼리 언어입니다. SQL에 익숙하다면 새로운 API의 의미를 쉽게 이해할 수 있을 것입니다.

JOIN을 사용하면 여러 문서의 콘텐츠를 결합할 수 있습니다. 이 게시물에서는 Couchbase Lite에서 가능한 JOIN의 유형을 설명하기 위해 예제를 제공합니다. 각 쿼리에 대해 해당하는 SQL 쿼리를 제공합니다. 이 블로그는 새로운 쿼리 API의 기본 사항에 익숙하다고 가정하므로, 아직 숙지하지 않은 경우 반드시 이전 게시물 를 먼저 읽어 보세요. 관심이 있으시다면 이 글의 끝에 쿼리 인터페이스의 다른 기능에 대해 설명하는 블로그 링크가 제공됩니다.

최신 Couchbase Mobile 2.0 사전 릴리스 빌드는 다음에서 다운로드할 수 있습니다. 다운로드 페이지로 이동합니다.

배경

1.x 버전의 Couchbase Mobile을 사용 중이라면 다음과 같은 내용을 잘 알고 계실 것입니다. 맵 보기 를 사용하여 인덱스와 쿼리를 만들 수 있습니다. 2.0에서는 더 이상 뷰와 맵 함수를 만들 필요가 없습니다! 대신, 간단한 인터페이스를 통해 인덱스를 생성하고 쿼리 빌더 인터페이스를 사용해 쿼리를 구성할 수 있습니다. 새로운 쿼리 인터페이스는 사용하기 더 간단하고 훨씬 더 강력합니다. 이 글에서 몇 가지 기능을 살펴보겠습니다.

샘플 프로젝트

여기서 설명하는 예제에서는 iOS용 Swift를 사용하지만, 동일한 쿼리 인터페이스는 Android 및 Windows 플랫폼에서도 지원됩니다.

따라서 약간의 수정만 하면 다른 플랫폼에서 작업할 때 이 글의 쿼리 예제를 재사용할 수 있습니다.

샘플 Swift 프로젝트에 관심이 있다면 아래 지침을 따르세요.

  • GitHub에서 iOS Swift 플레이그라운드 복제하기

  • 해당 항목의 설치 지침을 따르세요. README 파일을 사용하여 플레이그라운드를 빌드하고 실행합니다.

샘플 데이터 모델

다음 위치에 있는 샘플 데이터베이스를 사용합니다. 여기. 이 사전 구축된 데이터베이스를 모바일 애플리케이션에 임베드하여 쿼리에 사용할 수 있습니다.

샘플 데이터 세트는 약간 인위적이지만 여기서는 다음과 같은 몇 가지 일반적인 사용 사례를 보여주기 위한 것입니다. join 쿼리.

  • "직원" 유형 문서

  • "부서" 유형 문서

  • "위치" 유형 문서

** 아래의 각 쿼리 예제는 위의 모델을 참조하세요. **

데이터베이스 핸들

아래 쿼리에서는 다음과 같이 데이터베이스 API를 사용하여 CouchbaseLite 데이터베이스를 열거나 생성합니다.

색인

읽기 쿼리 속도를 높이려면 쿼리할 속성에 인덱스를 만들면 됩니다. 대규모 데이터 세트에서 성능 향상은 상당할 것입니다. 물론 인덱스를 저장하기 위해 필요한 스토리지가 증가하고 쓰기 성능에도 영향을 미칠 수 있다는 점에 유의하세요. 따라서 너무 많은 인덱스를 만들지 않도록 주의하세요.

다음 예제에서는 ValueIndex 에서 유형 문서의 속성

조인 또는 내부 조인

두 문서 모두에 지정된 조건을 충족하는 경우에만 간단한 조인 또는 내부 조인 쿼리를 사용하여 참여 문서에서 속성을 가져올 수 있습니다. 켜기 절을 사용합니다.

예를 들어 앞서 제시한 데이터 모델을 고려할 때, 다음과 같은 데이터 모델을 가져오고 싶다고 가정해 보겠습니다. 이름, "직원"과 해당 이름 직원이 소속된 '부서'의 이름입니다. 이 경우 이름 그리고 의 문서에서 프로퍼티를 가져옵니다. 유형 "직원" 및 부서 이름 의 문서에서 가져옵니다. 유형 "부서"에 해당하는 경우에만 부서 속성은 "직원"의 해당 속성과 일치하는 코드 속성을 "부서"

즉, '부서'와 일치하는 문서가 없는 경우 코드 를 '직원' 문서에 입력하면 해당 직원의 세부 정보가 출력 결과에 포함되지 않습니다.

요청

 

ANSI SQL

위 쿼리에 해당하는 SQL 문은 다음과 같습니다.

 

왼쪽 조인 또는 왼쪽 외부 조인

두 문서가 모두 지정된 조건을 충족하는 경우 왼쪽 조인 쿼리를 사용하여 참여 문서에서 속성을 가져올 수 있습니다. 켜기 절을 사용합니다. 그러나 일반 조인과 달리 결과에는 일치하지 않는 문서가 왼쪽에 있는 켜기 절을 사용합니다.

예를 들어 앞서 제시한 데이터 모델을 고려할 때, 다음과 같은 데이터 모델을 가져오고 싶다고 가정해 보겠습니다. 이름, "직원"과 해당 이름 직원이 소속된 '부서'의 이름입니다.
또한 다음과 같은 경우에도 관심이 있다고 가정해 보겠습니다.이름 그리고 "직원"의 부서 코드가 수행하는 작업 not 는 유효한 부서에 해당합니다. 예를 들어 다음과 같은 경우에 해당할 수 있습니다. 부서 직원의 코드가 잘못 입력되었습니다.

이 경우 이름 그리고 의 문서에서 프로퍼티를 가져옵니다. 유형 "직원" 및 부서 이름 의 문서에서 가져옵니다. 유형 "부서"인 경우 부서 속성은 "직원"의 해당 속성과 일치하는 코드 속성을 추가합니다.

일치하는 부서가 없는 경우에는 이름 그리고 속성이 반환됩니다.

요청

ANSI SQL

위 쿼리에 해당하는 SQL 문은 다음과 같습니다.

 

교차 가입

교차 JOIN 쿼리를 사용하여 참여 문서에서 속성의 직교곱을 가져올 수 있으며, 일반적으로 문서는 서로 관련이 없습니다. 이것은 내부 JOIN과 동일합니다. 없이켜기 절을 사용합니다.

예를 들어, 앞서 제시한 데이터 모델을 고려하여 다음과 같은 모든 문서의 직교곱을 가져오고 싶다고 가정해 보겠습니다. 유형 "위치" 및 유형 "부서". 즉, 모든 "위치" 유형 문서가 각 "부서"와 결합됩니다. 유형 문서.

따라서 on 절을 포함하는 경우, 교차 조인 표현식에 지정된 어디 절을 사용하여 문서에 따라 고려할 문서의 하위 집합을 필터링합니다. 유형.

요청

ANSI SQL

위 쿼리에 해당하는 SQL 문은 다음과 같습니다.

 

조인 연결

여러 JOIN 표현식을 지정할 수 있습니다. 선택 절을 추가하여 다양한 기준에 따라 문서 간에 조인할 수 있도록 합니다.

예를 들어 앞서 제시한 데이터 모델을 고려할 때, 다음과 같은 데이터 모델을 가져오고 싶다고 가정해 보겠습니다. 이름, "직원"과 해당 이름 을 사용하여 직원이 소속된 '부서'를 확인할 수 있습니다. 또한 직원이 속한 이름 직원이 근무했던 '위치'를 입력합니다.

이 경우 두 개의 JOIN 표현식을 사용합니다.
첫 번째 JOIN 표현식은 다음과 같은 문서를 조인하는 데 사용됩니다. 유형 "직원"은 다음 문서와 함께 유형 "부서 코드" 속성을 기반으로 "부서"를 설정합니다. 이 경우 이름 그리고 의 문서에서 프로퍼티를 가져옵니다. 유형 "직원" 및 부서 이름 의 문서에서 가져옵니다. 유형 "부서"에 해당하는 경우에만 부서 속성은 "직원"의 해당 속성과 일치하는 코드 속성을 추가합니다.

두 번째 JOIN 표현식은 다음과 같은 문서를 조인하는 데 사용됩니다. 유형 "직원"은 다음 문서와 함께 유형 "위치 코드" 속성을 기반으로 "위치"를 설정합니다. 이 경우 이름 그리고 의 문서에서 프로퍼티를 가져옵니다. 유형 "직원" 및 위치 이름 의 문서에서 가져옵니다. 유형 "위치"에 해당하는 경우에만 위치 속성은 "직원"의 해당 속성과 일치하는 코드 속성을 추가합니다.

요청

ANSI SQL

위 쿼리에 해당하는 SQL 문은 다음과 같습니다.

 

함수를 사용한 조인 표현식

모든 예제에서 equalTo 비교를 사용하는 경우, 다음과 같은 비교 연산자를 사용할 수 있다는 점에 유의해야 합니다. 사이, 보다 크거나 같음 등을 JOIN 표현식에 포함할 수 있습니다. 또한 유효한 기능 표현식을 사용할 수 있습니다. 이것은 강력한 기능입니다.

예를 들어, 앞서 제시한 데이터 모델을 고려하여 부서에서 이름 및 해당 위치 부서가 위치한 '위치'의 이름입니다. 부서는 하나 이상의 위치에 속할 수 있습니다.
이 경우 JOIN 표현식은 "부서" 및 "위치" 유형 문서를 조인하여 위치 배열 속성을 사용하여 부서 문서의 배열 함수 표현식입니다.

 

ANSI SQL

SQL에서는 배열이 지원되지 않습니다. 그러나 N1QL에는 배열이 지원됩니다. 위 쿼리에 해당하는 SQL과 유사한 문은 다음과 같습니다.

 

다음 단계

이 블로그 게시물에서는 여러 JSON 문서의 결과를 결합할 수 있는 Couchbase Mobile 2.0의 강력한 JOIN 기능에 대해 살펴봅니다. 다음을 수행할 수 있습니다. 다운로드 카우치베이스 모바일 2.0을 설치하고 이 게시물에서 설명한 쿼리를 테스트해 보세요. 이것은 시작에 불과합니다. 향후 릴리스에서 더 많은 기능이 추가될 예정입니다.

다음은 관심을 가질 만한 몇 가지 다른 Couchbase 모바일 쿼리 관련 게시물입니다.
- 이 블로그 게시물 기본 사항에 대해 설명합니다.
- 이 블로그 게시물 배열 컬렉션을 쿼리하는 방법에 대해 설명합니다.
- 이 블로그 게시물 에서는 전체 텍스트 검색(FTS) 기능에 대해 설명합니다.

질문이나 피드백이 있으면 아래에 댓글을 남기거나 트위터로 언제든지 문의해 주세요. @rajagp 또는 이메일을 보내주세요. priya.rajagopal@couchbase.com. . 카우치베이스 포럼 를 통해 질문할 수 있습니다.

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

작성자

게시자 프리야 라자고팔, 제품 관리 부문 선임 이사

프리야 라자고팔은 클라우드 및 엣지용 개발자 플랫폼을 담당하는 Couchbase의 제품 관리 수석 이사입니다. 그녀는 20년 이상 여러 기술 및 제품 리더십 직책을 맡으며 전문적으로 소프트웨어를 개발해 왔으며, 그중 10년 이상은 모바일 기술에 집중했습니다. TISPAN IPTV 표준 대표로서 IPTV 표준 사양에 핵심적인 기여를 했습니다. 네트워킹 및 플랫폼 보안 분야에서 22개의 특허를 보유하고 있습니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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