.NET

카우치베이스 .NET SDK 2.0에 대한 N1QL DP4 지원 미리보기!

어제, Couchbase의 쿼리 팀이 오랫동안 기다려온 N1QL 개발자 프리뷰 4를 출시했습니다! N1QL에 대해 들어보신 적이 없으시다면, Couchbase가 Couchbase와 같은 비관계형 데이터 저장소를 쿼리하기 위해 개발 중인 완전히 새로운 SQL과 유사한 쿼리 언어입니다. 목표는 SQL의 친숙함을 유연하고 스키마가 없는 JSON의 세계로 가져오는 것입니다. 오늘 저희는 Couchbase .NET SDK 2.0에서 제공하는 N1QL DP4 지원의 '미리 보기'를 공개합니다.

즉, N1QL DP4에서 제공하는 기능의 상당 부분이 포함된 테스트되지 않은, 프로덕션 버전에서 실행되지 않는 사전 릴리스 SDK를 제공한다는 의미입니다! 다시 한 번 말씀드리겠습니다: 프로덕션에서 사용하지 마세요!!!! 이제 재미 경찰이 평온을 되찾고 파티를 망쳤으니, N1QL DP4의 기능과 이 SDK 프리뷰 릴리스에서 현재 지원되는 기능에 대해 알아봅시다!

N1QL 개발자 프리뷰 4에는 무엇이 있나요?

N1QL DP4는 DP 1-3에서 제공된 훌륭한 작업을 기반으로 구축되어 완전하고 완전한 N1QL 구문과 요소 언어를 제공합니다. 또한 하위 쿼리, INSERT, UPDATE, UPSERT, DELETE와 같은 데이터 조작 언어(DML) 구성에 대한 실험적 지원, 그리고 중요한 것은 새로운 REST API인 SDK를 제공합니다!

REST API가 대대적으로 개편되어 이제 곧 공개될 예정입니다. 새로운 REST API가 지원하는 기능의 일부 목록은 다음과 같습니다:

  • 준비된 문 지원(일종의 쿼리 계획 캐싱과 같은 기능)
  • 위치 및 명명된 매개변수
  • 개선되고 더욱 강력해진 오류 API
  • 쿼리 메트릭
  • 쿼리 시간 초과

마지막으로, 문서가 개선 및 업데이트되었으며 다음에서 확인할 수 있습니다. 여기.

DP4 설치

안타깝게도 N1QL DP4는 Couchbase Server와 거의 완벽하게 통합되어 있지만 아직 패키지로 제공되지는 않습니다. 즉, DP4를 사용하려면 비트를 다운로드하고 서비스를 시작하여 Couchbase Server 인스턴스와 연결해야 합니다. 다행히도 이 작업은 비교적 쉽습니다:

  • 먼저, N1QL DP4를 다운로드하세요. 여기.
  • 그런 다음 하드 드라이브의 디렉토리에 압축을 풉니다.
  • 마지막으로 다음 명령을 실행하여 서비스를 시작하고 Couchbase Server 인스턴스와 연결합니다: .cbq-engine -datastore=http://[서버_이름]:8091/.

이 작업을 완료한 후에는(물론 [서버 이름]을 Couchbase 인스턴스의 IP로 변경해야 합니다.) 사용하려는 각 버킷에 대한 인덱스를 만들어야 합니다. 이렇게 하려면 대화형 쿼리 명령줄 도구를 실행하고 이를 사용하여 인덱스를 만들거나 N1QL DP4 "미리 보기"가 포함된 Couchbase .NET 2.0 SDK를 다운로드할 수 있습니다. 먼저 대화형 셸을 사용하는 방법을 보여주고 나중에 SDK를 사용하여 프로그래밍 방식으로 수행하는 방법을 보여 드리겠습니다.

  • N1QL DP4의 압축을 푼 디렉토리로 이동하여 다음과 같이 입력하고 Couchbase 서버 인스턴스: .cbq -engine=http://:8093/
  • 다음을 입력합니다: 버킷 이름]에 주 인덱스 만들기
  • Enter 키를 누릅니다(참고: [버킷 이름]을 Couchbase 서버 인스턴스에서 유효한 버킷 이름으로 변경해야 합니다.

나중에 Couchbase에 사전 설치되어 있는 "맥주 샘플" 샘플 버킷을 사용할 예정이므로 여러분도 따라 하려면 똑같이 해야 할 것입니다. N1QL DP4를 다운로드하여 설치한 후에는 Couchbase .NET SDK 2.0을 사용하여 인덱스를 만들고 쿼리를 실행할 수 있습니다.

N1QL DP4에서 SDK 사용

SDK를 사용하려면 Visual Studio와 함께 .NET Framework 4.5 이상이 설치되어 있어야 합니다. Mono를 사용하는 경우 테스트해 보지는 않았지만 기능적으로 .NET Framework 4.5와 동등한 버전의 Mono를 사용한다고 가정하면 따라할 수 있을 것입니다. 특히 비동기/대기, 동적 키워드 및 일부 새로운 .NET 라이브러리를 지원합니다.

비트 다운로드 및 참조

SDK를 빠르게 시작하고 실행하려면 다음 단계를 따르세요:

  • SDK의 특별 프리뷰 릴리스는 다음에서 확인할 수 있습니다. 여기. 다운로드하여 하드 드라이브의 어딘가에 압축을 풉니다.
  • VS를 열고 새 "콘솔 애플리케이션" 프로젝트를 생성하고, 이름을 N1QL-DP4-Preview 또는 원하는 대로 지정합니다.
  • 오른쪽의 '솔루션 탐색기'에서 참조 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 '참조 추가'를 클릭합니다.
  • "찾아보기" 버튼을 사용하여 첫 번째 단계에서 다운로드하고 압축을 푼 dll을 찾아 다음에 대한 참조를 추가합니다: Couchbase.NetClient.dll, Common.Logging.dll 및 Newtonsoft.Json.dll.

여기까지 왔다면 코드 작성을 시작할 수 있습니다. 여기서는 Couchbase 서버 인스턴스가 로컬 호스트에서 실행되고 있다고 가정합니다. 그렇지 않은 경우 원격 설치를 가리키도록 클라이언트를 구성해야 합니다.

새로운 쿼리 요청 API

N1QL 개발자 프리뷰 3(DP3)에 대한 SDK 지원은 애드혹 문자열 리터럴 쿼리만 지원되는 등 다소 미미했습니다. 새로운 REST API를 통해 새로운 QueryClient 클래스가 생성되어 대부분의 새로운 REST API 기능에 대한 래퍼 API를 제공하는 CouchbaseBucket 클래스와 통합되었습니다(일부 기능은 아직 완성되지 않았기 때문에 "대부분"이라고 표현했습니다).

이 새로운 API에는 유창한 인터페이스를 사용하여 쿼리를 구성하는 클래스가 포함되어 있습니다. 이는 뷰 쿼리를 위해 SDK GA의 일부로 릴리스된 클라이언트에서도 지원하는 ViewQuery 클래스/API와 매우 유사합니다. 다음과 같은 서명이 있습니다:

[이미지]

N1QL 문을 사용하여 쿼리 요청을 구성하는 다양한 REST API 매개변수를 함께 연결할 수 있습니다. N1QL 문 자체는 여전히 리터럴 문자열이지만 쿼리 서비스에서 쿼리를 처리하는 방식을 제어할 수 있는 옵션을 제공할 수 있습니다. 이 글에서는 이러한 각 매개 변수에 대해 자세히 설명하지 않으므로 다른 블로그 게시물에서 다루도록 하겠습니다.

QueryRequest는 N1QL 언어와는 전혀 관련이 없다는 것을 알고 계셨나요? 그건 의도적인 것입니다. N1QL 쿼리를 만드는 또 다른 프로젝트가 진행 중인데, N1QL용 언어 통합 쿼리(LINQ) 제공자이며, 아직 개발 단계는 다소 떨어져 있습니다.

이 개체를 사용하면 IDE의 인텔리센스 및 점 "."을 사용하여 쿼리 요청을 수동으로 작성할 필요 없이 쉽게 작성할 수 있습니다. 연산자입니다. 예를 들어

인덱스 만들기

다음 예제에서는 위의 QueryRequest와 Couchbase .NET SDK 2.0 N1QL DP4 프리뷰를 사용하여 인덱스를 즉시 생성하고 제거하는 방법을 보여드리겠습니다:

여기서는 먼저 시스템 "카탈로그"를 쿼리하여 어떤 버킷에 인덱스가 있는지 확인합니다. 인덱스가 있는 버킷이 이 목록에 반환됩니다. 인덱스가 존재하면 편리하게 다시 만들 수 있도록 인덱스를 삭제합니다. 마지막으로 인덱스를 다시 생성합니다. 일반적으로 프로덕션 환경에서는 이 작업을 수행하지 않지만, 여기서는 N1QL과 SDK에서 제공하는 기능을 설명하기 위해 이 작업을 수행합니다.

명명된 매개변수 및 위치 매개변수 사용

N1QL DP4에는 매개변수화된 쿼리를 생성하는 기능이 도입되었습니다. 이름/값 쌍과 같은 명명된 매개변수와 매개변수의 위치가 서수와 일치하는 위치 매개변수에 대한 기능도 있습니다.
다음은 위치 매개변수를 사용하는 쿼리의 예입니다:

        static void PositionalParameters(IBucket 버킷)
        {
            var queryRequest = 새로운 쿼리 요청()
                .statement("SELECT * FROM 맥주 샘플 WHERE type=$1 LIMIT $2″)
                .추가 위치 매개변수("맥주")
                .추가 위치 매개변수(10);

            var result = bucket.Query(쿼리 요청);
            foreach (var row in result.Rows)
            {
                Console.WriteLine(행);
            }
        }

현재 위치 매개변수는 0 인덱싱되지 않는다는 점에 유의하세요! 따라서 $1과 $2를 $0과 $1로 바꾸면 오류 메시지가 표시됩니다.
명명된 매개변수는 다시 한 번 이름/값 쌍과 같으며 위치 매개변수와 달리 순서는 중요하지 않습니다. 다음은 명명된 매개변수를 사용한 위와 동일한 쿼리입니다:

        static void NamedParameters(IBucket 버킷)
        {
            var queryRequest = 새로운 쿼리 요청()
                .statement("SELECT * FROM 맥주 샘플 WHERE type=$type LIMIT $limit")
                .AddNamedParameter("limit", 10)
                .AddNamedParameter("type", "beer");

            var result = bucket.Query(쿼리 요청);
            foreach (var row in result.Rows)
            {
                Console.WriteLine(행);
            }
        }

이것은 이전과 동일한 문장이지만, 순서가 중요하지 않다는 것을 보여주기 위해 QueryRequest를 만들 때 매개변수의 순서를 다시 지정했습니다.

준비된 명세서

준비된 문은 관계형 데이터베이스의 캐시된 쿼리 계획과 다소 유사합니다. 쿼리 구문 분석 비용을 한 번만 발생시킨 다음 준비된 문을 반복해서 사용할 수 있습니다. 이 기능은 N1QL DP4에 포함되어 있지만, 이 기능에 대한 SDK 지원은 불완전합니다(아직 작동하지 않음). 이 기능은 프리뷰 코드가 SDK의 마스터 브랜치에 병합된 이후 릴리스에서 작동할 것으로 예상됩니다.

결론

이것으로 Couchbase .NET SDK 2.0 N1QL DP4 프리뷰를 마쳤습니다! 앞으로 살펴볼 내용이 훨씬 더 많으며, 개발이 더 진전되고 N1QL GA에 가까워지면 더 많은 블로그를 포스팅할 예정입니다!

피드백이 있거나 문제 또는 버그가 발생하면 여기에 댓글을 남기거나 Jira에 버그를 게시해 주세요. 또한 이 블로그에 포함된 코드는 github에서 찾을 수 있습니다. 여기.

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

작성자

게시자 Jeff Morris, 수석 소프트웨어 엔지니어, Couchbase

Jeff Morris는 Couchbase의 수석 소프트웨어 엔지니어입니다. Couchbase에 입사하기 전에는 6년 동안 Source Interlink에서 엔터프라이즈 웹 아키텍트로 근무했습니다. Jeff는 Couchbase SDK 개발과 N1QL(쿼리 언어)과 통합하는 방법을 담당하고 있습니다.

댓글 하나

  1. 로버트 베일리 1월 22, 2015에서 1:58 오후

    맥도날드입니다! (정말 마음에 들어요!)

  2. N1QL의 상용 버전은 언제 출시될 예정인가요?

  3. 에르소이 바탄세베르 4월 1, 2015에서 10:08 오전

    프로덕션에서 사용할 수 없다면 왜 이런 글을 쓰는 거죠? ????
    상용 버전은 언제 출시되나요?

    1. 매트 인젠트론 4월 1, 2015에서 4:53 오후

      카우치베이스는 인터페이스를 잠그고 프로덕션에 들어가기 전에 기능 개발을 안내하는 데 관심이 있는 분들의 피드백을 받기 위해 DP(개발자 프리뷰)를 공개합니다. 이것이 바로 그 아이디어입니다.

      출시와 관련하여 지난 주에도 꽤 많은 이야기를 나눴는데, 곧 Couchbase Server 4.0의 DP가 출시되고 베타 및 GA가 출시될 예정입니다. 한 번 확인해 보세요: http://www.couchbase.com/press

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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