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를 처음 사용하는 경우 처음부터 시작하겠습니다.
카우치베이스 서버 설치


이 줄을 추가한 후 앱을 컴파일합니다. 네임스페이스 'Couchbase'를 찾을 수 없다는 이상한 컴파일 오류가 발생할 수 있습니다. 이 오류가 표시되는 이유는 Visual Studio 2010(저는 2010을 사용한다고 가정했습니다)이 콘솔 프로젝트의 기본값으로 .NET 4의 하위 집합인 .NET 4 클라이언트 프로필을 사용하기 때문입니다. 따라서 .NET 버전을 .NET 4.0(또는 3.5)으로 업데이트해야 합니다. 이렇게 변경한 후에는 빌드할 수 있습니다.
다음으로 app.config에 몇 가지 구성 정보를 추가해야 합니다. 전체 파일은 다음과 같아야 합니다:
<configSections>
<섹션 이름="멤베이스" 유형="Couchbase.Configuration.CouchbaseClientSection, 카우치베이스"/>
>
<멤베이스>
<서버 버킷="default" 버킷 비밀번호=“”>
<add uri="http://127.0.0.1:8091/pools/default"/>
>
>
>
[직렬화 가능]
public 클래스 양조장 {
public 문자열 이름 { get; set; }
public 문자열 도시 { get; set; }
public 문자열 상태 { get; set; }
}
[직렬화 가능]
public 클래스 맥주 {
public 문자열 이름 { get; set; }
public 양조장 양조장 { get; set; }
public 십진수 ABV { get; set; }
}
다음으로 클라이언트의 Store 메서드를 호출하여 Beer 인스턴스를 유지하겠습니다. StoreMode를 사용하려면 Enyim.Caching.Memcached에 대해 사용하는 문을 추가해야 한다는 점에 유의하세요.
CBS 2.0을 기대합니다. 이 클라이언트 라이브러리는 Enyim 코드를 기반으로 하나요, 아니면 완전히 새로운 라이브러리인가요?
안녕하세요 클라우스,
클라이언트는 계속해서 Enyim 코드베이스를 사용할 것입니다. CBS 2.0에서는 보기와 같은 새로운 서버 기능을 지원하도록 클라이언트가 발전할 것입니다. CBS 1.8이 출시되면 클라이언트에 대한 단기적인 변경 사항을 다루는 업데이트된 문서가 제공될 예정입니다.
- John
클라이언트.Get(\"아메리칸 페일 에일\")를 수행해야 하겠죠?
예, 하지만....키에 \" \" 공백을 사용할 수 없으므로 예제가 유효하지 않습니다.
동일한 .net 클라이언트에서 액세스할 수 있도록 서로 다른 버킷을 구성하려면 어떻게 해야 할까요?
안녕하세요 Brad,
안타깝게도 현재 클라이언트에서는 이 기능이 지원되지 않습니다. 클라이언트의 두 번째 인스턴스를 만들어야 합니다. 클라이언트당 하나의 구성이 있으며 각 구성은 하나의 버킷만 지원합니다.
- John
명확히 하기 위해: 클라이언트 애플리케이션의 다른 인스턴스가 실행 중이어야 한다는 뜻인가요, 아니면 CouchbaseClient 클래스의 다른 인스턴스를 만들어야 한다는 뜻인가요? 두 번째 옵션도 괜찮지만 올바른 버킷을 사용하기 위해 버킷을 설정하고 CouchbaseClient 인스턴스를 인스턴스화하는 방법이 명확하지 않습니다.
각 인스턴스는 단일 버킷에 바인딩되는 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>