23
Couchbase 개개 Couchbase 개 개개개 개개개개개개 개개 개개 개개

Couchbase .net client 개발

Embed Size (px)

DESCRIPTION

NoSQL 서버인 Couchbase의 Client SDK를 이용하여 .NET 어플리케이션을 개발하기 위한 기초지식 습득을 위한 프리젠테이션

Citation preview

Page 1: Couchbase .net client 개발

Couchbase 개발

Couchbase를 사용한 응용프로그램 개발 방법 개요

Page 2: Couchbase .net client 개발

목차

목표

Client SDK

기본 조작 method

그 외 method

질의 응답

Page 3: Couchbase .net client 개발

목표

Couchbase 를 DB 로 사용하여 클라이언트 응용프로그램을 개발하기 위한 환경에 대한 이해

기본적인 조작방법 숙지

Page 5: Couchbase .net client 개발

CLIENT SDKClient SDK 의 종류와 특징 , 설치 및 사용방법

Page 6: Couchbase .net client 개발

Client SDK 다운로드 아래 URL에서 개발하고자 하는 언어의 SDK를 다운로드 http://www.couchbase.com/communities/all-client-libraries

Page 7: Couchbase .net client 개발

SDK 종류 및 특징

Page 8: Couchbase .net client 개발

.NET Client SDK 1.3.0

.NET 3.5 와 4.0 용 어셈블리 제공의존하는 어셈블리에 의해 Client Profile 은 비권장 됨

Visual Studio 의 Nuget 플러그인 사용시 아래 명령으로 설치 가능 Install-Package CouchbaseNetClient

Github 에서 소스코드 다운로드 가능 git clone

https://github.com/couchbase/couchbase-net-client.git

출처 : http://docs.couchbase.com/couchbase-sdk-net-1.3/

Page 9: Couchbase .net client 개발

.NET Client SDK 1.3.0

어셈블리 파일 내용 카우치베이스 라이브러리 본체

Couchbase.dll Memcached 라이브러리

Enyim.Caching.dll 로그 어댑터

Enyim.Caching.Log4NetAdapter.dll Enyim.Caching.NLogAdapter.dll

기타 utility 라이브러리 Newtonsoft.Json.dll : JSON 문자열 파싱 / 생성 NLog.dll, log4net.dll : 로그 생성 및 기록

Page 10: Couchbase .net client 개발

기본 조작 method

DB 연결

조회 / 조작 (CRUD)

카운터

Page 11: Couchbase .net client 개발

DB 연결 app|web.config 를 사용한 DB 연결 설정<?xml version="1.0"?> <configuration>   <configSections>     <section name="couchbase"           type="Couchbase.Configuration.CouchbaseClientSection, Couchbase"/>   </configSections>   <couchbase>     <servers bucket="default" bucketPassword="">       <add uri="http://192.168.0.2:8091/pools"/>       <add uri="http://192.168.0.3:8091/pools"/>     </servers>   </couchbase> </configuration>

Page 12: Couchbase .net client 개발

DB 연결 싱글톤 패턴으로 Client 객체 생성

    public static class CouchbaseManager     {         private readonly static CouchbaseClient _instance;

        static CouchbaseManager()         {             _instance = new CouchbaseClient();         }

        public static CouchbaseClient Instance { get { return _instance; } 

}     }

Page 13: Couchbase .net client 개발

DB 연결 DB 연결 코드 작성 예 1 : Bucket 목록 조회

            //app.config 의  url 을 추출            var ClusterNodeList = (                (CouchbaseClientSection)System.Configuration.ConfigurationManager.GetSection("couchbase")                ).Servers.Urls.ToUriCollection();             // 관리자 계정으로  bucket 목록 조회            var config = new CouchbaseClientConfiguration()            {                Username = Username,                Password = Password            };            foreach (var uri in ClusterNodeList)                config.Urls.Add(uri);             var buckets = new CouchbaseCluster(config).ListBuckets();

Page 14: Couchbase .net client 개발

DB 연결 DB 연결 코드 작성 예 2 : 코드로 연결

            config = new CouchbaseClientConfiguration()             {                 Bucket = BucketName,                 BucketPassword = BucketPassword             };             foreach (var uri in ClusterNodeList)                 config.Urls.Add(uri);

            ClientInstance = new CouchbaseClient(config);

Page 15: Couchbase .net client 개발

조회 / 조작 Store Methods

bool ClientInstance.Store(StoreMode, key, value)

반환값 : 성공시 true

bool Remove(string key)

public enum StoreMode    {        Add = 1,        Replace = 2,        Set = 3,    }

Page 16: Couchbase .net client 개발

조회 / 조작 ExecuteStore Methods

IStoreOperationResult ClientInstance. ExecuteStore(StoreMode, key, value)

var result = client.ExecuteStore(StoreMode.Add, "beer", new Beer());

            if (!result.Success)

            {

                Console.WriteLine("Store failed with message {0} 

and status code {1}", 

result.Message, result.StatusCode);

                if (result.Exception != null)

                    throw result.Exception;

            }  

Page 17: Couchbase .net client 개발

조회 / 조작 Get Methods

object ClientInstance.Get(key)

T ClientInstance.Get<T>(key)

IDictionary<string, object>

Get(IEnumerable<string> keys)

            var dict = client.Get(new string[] { "brewery", "beer" });

            Console.WriteLine(dict["brewery"]);

            Console.WriteLine(dict["beer"]);

Page 18: Couchbase .net client 개발

조회 / 조작 Get Methods

CasResult<object> GetWithCas(string ke

y)

bool KeyExists(string key)

    public struct CasResult<T>     {

        public ulong Cas { get; set; }

        public T Result { get; set; }

        public int StatusCode { get; set; }

    }

Page 19: Couchbase .net client 개발

카운터 Counter

ulong Increment(string key, ulong de-faultValue, ulong delta)

ulong Decrement(string key, ulong de-faultValue, ulong delta)

             client.Remove("inventory"); //reset the counter

            client.Increment("inventory", 100, 1); //counter will be 100

            client.Increment("inventory", 100, 1); //counter will be 101

Page 20: Couchbase .net client 개발

그 외 method

비 JSON 문자열 조작 Append/Prepend 메소드

CAS 를 이용한 조작 Cas 메소드 ICasOperationResult

Lock 을 이용한 조작 GetWithLock/Unlock 메소드

Page 21: Couchbase .net client 개발

그 외 method

View 사용 GetView 메소드

Expiration Touch 메소드 TimeSpan validFor( 초단위 )/DateTime expire-

sAt

Durability enum PersistTo enum ReplicateTo

Page 22: Couchbase .net client 개발

질의 응답

[email protected]

Page 23: Couchbase .net client 개발

감사합니다