NoSQL이 어려울 필요는 없습니다. 일반적으로는 그렇지 않습니다. 하지만 인정하건대, 특히 Windows에서는 항상 깔끔한 것은 아닙니다. 각 데이터베이스에는 고유한 문제가 있습니다. 일부는 설치하기 어렵습니다. 일부는 구성하기 어렵습니다. 일부는 서버 관리 도구가 열악합니다. 일부는 강력한 클라이언트 라이브러리 지원이 부족합니다. 이러한 문제를 제대로 해결한 NoSQL 서비스 중 하나는 Couchbase Server입니다. 이 글은 제가 Couchbase의 개발자 옹호자로서 dllHell(이 글이 처음 게재된 곳)에 올린 첫 번째 글입니다!

카우치베이스는 멤베이스와 카우치원이 합병하면서 탄생했습니다. 카우치베이스 서버 2.0은 분산 키/값 저장소와 문서 지향 데이터베이스의 기능을 모두 결합한 하이브리드 NoSQL 데이터베이스가 될 것입니다. 2.0 제품은 2012년에 출시될 예정입니다. 2012년 1월에는 1.8 임시 버전이 통합된 Couchbase Server(이전 명칭: Membase Server)의 첫 공식 릴리스가 될 것입니다. 저는 Couchbase에서 맡은 업무의 일환으로 Couchbase Server 1.8용 .NET 클라이언트 라이브러리를 작업하고 있습니다. 아래는 앞으로 출시될 기능에 대한 미리보기입니다. .NET과 함께 Membase Server를 사용해 본 적이 있다면 아래 코드에 익숙하실 것입니다. Couchbase Server를 처음 사용하는 경우 처음부터 시작하겠습니다.

카우치베이스 서버 설치

대부분의 NoSQL 데이터베이스에는 Windows 설치 프로그램이 있지만, 간혹 최신 버전으로 유지되지 않는 경우가 있습니다. CouchDB의 경우, 몇 가지 다른 MSI 패키지가 있지만 하나만 작동합니다(적어도 2011년 10월 현재). MongoDB에는 서비스를 위한 명령줄 설치 프로그램이 있습니다. 다행히도 Couchbase Server에는 공식적으로 지원되는 Windows 설치 프로그램이 있습니다. 다운로드할 수 있습니다. 최신 설치 프로그램 여기를 클릭하세요. 이 글을 쓰는 현재 최신 서버 버전은 1.7.2입니다. 1월 말에 1.8을 다시 확인해 보세요. 개발 목적에 적합한 Membase Server 커뮤니티 에디션을 다운로드하세요. 1.8 릴리스에서는 Membase Server의 이름이 Couchbase Server로 변경됩니다. 이미 새 이름이 적용된 2.0 개발자 프리뷰를 다운로드할 수도 있습니다.
설치 프로그램을 실행하면 웹 기반 관리자 콘솔로 이동합니다. 관리자 콘솔에서 클러스터를 구성하고 해당 클러스터 내의 노드를 관리할 수 있습니다. 로컬 개발에서는 단일 노드 클러스터(예: 개발 머신)를 사용하게 될 것입니다.
 windows-web-admin
서버를 설정하고 실행했으면 이제 코드를 작성할 차례입니다. 간단한 콘솔 앱을 만드는 경우 앱에 Couchbase .NET 클라이언트 라이브러리를 포함하는 가장 쉬운 방법은 Nuget을 사용하는 것입니다. 참조를 추가한 후 다음 사용 문을 추가합니다:
 nuget
사용 카우치베이스;
그런 다음 메인 메소드에 다음 줄을 추가합니다:
정적 void 메인(문자열[] args) {
var client =new 카우치베이스클라이언트();
}

이 줄을 추가한 후 앱을 컴파일합니다. 네임스페이스 'Couchbase'를 찾을 수 없다는 이상한 컴파일 오류가 발생할 수 있습니다. 이 오류가 표시되는 이유는 Visual Studio 2010(저는 2010을 사용한다고 가정했습니다)이 콘솔 프로젝트의 기본값으로 .NET 4의 하위 집합인 .NET 4 클라이언트 프로필을 사용하기 때문입니다. 따라서 .NET 버전을 .NET 4.0(또는 3.5)으로 업데이트해야 합니다. 이렇게 변경한 후에는 빌드할 수 있습니다.

net-version-selector

 

다음으로 app.config에 몇 가지 구성 정보를 추가해야 합니다. 전체 파일은 다음과 같아야 합니다:

<구성>
<configSections>
<섹션 이름="멤베이스" 유형="Couchbase.Configuration.CouchbaseClientSection, 카우치베이스"/>
>
<멤베이스>
<서버 버킷="default" 버킷 비밀번호=“”>
<add uri="http://127.0.0.1:8091/pools/default"/>
>
>
>
구성 섹션에서는 연결 방법과 데이터가 기록될 위치에 대한 클라이언트 세부 정보를 제공합니다. CouchbaseClient가 app.config 섹션을 사용하도록 하려면 다음과 같이 선언을 업데이트하세요:
var client =new 카우치베이스클라이언트("멤베이스");
기본 데이터 유형을 저장하고 읽는 것은 사용자 정의 유형을 저장하고 읽는 것만큼이나 쉽습니다. 그래서 Brewery와 Beer(의도적으로 단순화한) 클래스를 몇 개 만들어 보겠습니다.

[직렬화 가능]
public 클래스 양조장 {
public 문자열 이름 { get; set; }
public 문자열 도시 { get; set; }
public 문자열 상태 { get; set; }
}

[직렬화 가능]
public 클래스 맥주 {
public 문자열 이름 { get; set; }
public 양조장 양조장 { get; set; }
public 십진수 ABV { get; set; }
}

이 클래스들은 직렬화 가능으로 표시된 POCO(Plain Old CLR 객체)일 뿐입니다. 메인 메서드에서 각각의 인스턴스를 새로 만들겠습니다.

var 양조장 =new 양조장 {
도시 = "하트포드",
상태 = "CT",
이름 = "토마스 후커 양조장"
};

var 맥주 =new 맥주 {
양조장 = 양조장,
이름 = "아메리칸 페일 에일",
ABV = 5.3m
};

다음으로 클라이언트의 Store 메서드를 호출하여 Beer 인스턴스를 유지하겠습니다. StoreMode를 사용하려면 Enyim.Caching.Memcached에 대해 사용하는 문을 추가해야 한다는 점에 유의하세요.

클라이언트.스토어(스토어모드.세트, 맥주.이름, 맥주);
저장 후 맥주를 다시 읽어 맥주 이름을 표시합니다.
변수 저장된 맥주 = 클라이언트.Get<맥주>("맥주"); 콘솔.WriteLine(저장된 맥주.이름);
아주 간단하죠? 물론 이것은 Couchbase Server에 대한 매우 간단한 소개입니다. 이제 .NET 클라이언트 라이브러리를 인수하게 되면서 더 자세한 튜토리얼과 샘플을 게시할 예정입니다.

작성자

게시자 존 자블로키, NET. SDK 개발자, Couchbase

존 자블로키는 NET. SDK 개발자입니다. John은 Beantown ALT.NET의 주최자이자 Fairfield University의 전 겸임교수이기도 합니다. Amazon에서 Couchbase Server를 설치하고 구성하는 방법을 설명하는 "Couchbase Essentials"라는 책을 확인할 수도 있습니다.

댓글 하나

  1. CBS 2.0을 기대합니다. 이 클라이언트 라이브러리는 Enyim 코드를 기반으로 하나요, 아니면 완전히 새로운 라이브러리인가요?

    1. 안녕하세요 클라우스,

      클라이언트는 계속해서 Enyim 코드베이스를 사용할 것입니다. CBS 2.0에서는 보기와 같은 새로운 서버 기능을 지원하도록 클라이언트가 발전할 것입니다. CBS 1.8이 출시되면 클라이언트에 대한 단기적인 변경 사항을 다루는 업데이트된 문서가 제공될 예정입니다.

      - John

  2. 클라이언트.Get(\"아메리칸 페일 에일\")를 수행해야 하겠죠?

    1. 예, 하지만....키에 \" \" 공백을 사용할 수 없으므로 예제가 유효하지 않습니다.

  3. 브래드 젠트리 3월 6, 2012에서 7:53 오후

    동일한 .net 클라이언트에서 액세스할 수 있도록 서로 다른 버킷을 구성하려면 어떻게 해야 할까요?

    1.  안녕하세요 Brad,

      안타깝게도 현재 클라이언트에서는 이 기능이 지원되지 않습니다. 클라이언트의 두 번째 인스턴스를 만들어야 합니다. 클라이언트당 하나의 구성이 있으며 각 구성은 하나의 버킷만 지원합니다. 

      - John

      1. 브래드 젠트리 3월 6, 2012에서 8:08 오후

        명확히 하기 위해: 클라이언트 애플리케이션의 다른 인스턴스가 실행 중이어야 한다는 뜻인가요, 아니면 CouchbaseClient 클래스의 다른 인스턴스를 만들어야 한다는 뜻인가요? 두 번째 옵션도 괜찮지만 올바른 버킷을 사용하기 위해 버킷을 설정하고 CouchbaseClient 인스턴스를 인스턴스화하는 방법이 명확하지 않습니다.

        1.  각 인스턴스는 단일 버킷에 바인딩되는 CouchbaseClient의 두 번째 인스턴스가 필요합니다. 구성에는 몇 가지 옵션이 있습니다.

          가장 쉬운 방법은 프로그래밍 방식의 구성을 사용하는 것입니다. 샘플이 있습니다. https://github.com/couchbase/c.... 이 구성은 Couchbase Server DP3+용이므로 1.0 클라이언트와 함께 1.8 서버를 사용하는 경우 URL 뒤의 설정이 적용되지 않습니다. 

          다른 옵션은 app.config(또는 web.config)에 두 개의 구성 섹션을 만드는 것입니다. 아래 구성과 같은 작업을 수행해야 합니다. 생성자에서 섹션 이름을 사용하여 클라이언트를 구성해야 합니다.

          도움이 되었는지 알려주세요...

          var clientA = 새 카우치베이스클라이언트(\"bucketA\");
          var clientB = 새 카우치베이스클라이언트(\"bucketB\");

          <configuration>
            <configsections>
             


             

            </configsections>
            <bucketa>
              <servers bucket=\”default\” bucketpassword=\”\”>
                <add uri=\”http://192.168.0.2:8091/pools/default\”/>
                <add uri=\”http://192.168.0.3:8091/pools/default\”/>
              </servers>  </bucketa>  <bucketb>
              <servers bucket=\”otherBucket\” bucketpassword=\”\”>
                <add uri=\”http://192.168.0.2:8091/pools/default\”/>
                <add uri=\”http://192.168.0.3:8091/pools/default\”/>
              </servers>
            </bucketb>
          </configuration>

댓글 남기기