끄적이는 메모장

[.NET Core 2.x] NoSQL (Couchbase) 연동 본문

C, C++, C#/C# ASP.NET

[.NET Core 2.x] NoSQL (Couchbase) 연동

밥보92 2018. 4. 5. 17:15
반응형

Couchbase와 NET Core 2.0을 연동할 필요가 있을 것 같다.

그래서 실습을 해보려고 한다.

 

1. couchbase net client 설치하기

> https://www.nuget.org/packages/CouchbaseNetClient/

- VS code 터미널 콘솔에서 다음 명령어로 설치해준다

  dotnet add package CouchbaseNetClient --version 2.5.9

 

2. couchbase server 설치하기

> https://www.couchbase.com/downloads

 

- Couchbase server

> JSON 모델로서 데이터베이스의 스키마 제약 없이 쉽게 어플리케이션을 수정할 수 있음

> 고속의 데이터 입출력 처리 성능을 보장 (NoSQL DB중 매우 고성능을 가진 솔루션)

> 모바일 디바이스에 탑재 할 수 있음

> RDB에서 제공하고 있는 indexing, grouping, ordering 기능이 사용 가능함

> Memcached를 지원하고 있음

 

3. couchbase setting

> couchbase 관리툴 : http://localhost:8091

> ID 및 Password를 만들어 준다.

> Bucket -> ADD BUCKET / couchbase bucket을 생성 해준다. (RDB의 Table 개념)

> Security -> ADD USER (roles - bucket full access) / couchbase의 bucket에 접근하기 위한 계정 setting

> N1QL을 사용하기 위한 INDEX 만들기

 

4. startup.cs setting

- couchbase server 초기화

 > Uri 내에 couchbase 서버 주소

 > PasswordAuthenticator 내에 Security에서 설정한 username과 password

using Couchbase.Configuration.Client;
using Couchbase;
using Couchbase.Authentication;

 

public void ConfigureServices(IServiceCollection services)
{
  // add couchbase init
  ClusterHelper.Initialize(new ClientConfiguration{
    Servers = new List<Uri> { new Uri("couchbase://localhost")}
  }, new PasswordAuthenticator("user","user123"));

 

- runtime에 호출할 config 셋팅

 > Application이 멈출 때, couchbase cluster가 종료 되도록 설정

public void Configure(IApplicationBuilder app, IHostingEnvironment env,
                                      
IApplicationLifetime applicationLifetime)
{
  applicationLifetime.ApplicationStopped.Register(() =>
  {
    ClusterHelper.Close();
  });

 

 

5. Bucket 사용하기

- controller에서 bucket 사용하기

controller.cs 

 > bucket 이름을 통해 bucket 사용을 명시한다.

using Couchbase;
using Couchbase.Core;
private IBucket _bucket;

public Controller()
{
_bucket = ClusterHelper.GetBucket("demo");
}

 

 

6. N1QL을 사용하여 Query 하기

 

using Couchbase.N1QL;
[HttpGet("couch/all")]
public IActionResult GetCouch()
{
  var n1ql = @"SELECT g.*, META(g).id
             FROM demo g
             WHERE g.id = 1";
  var query = QueryRequest.Create(n1ql);
  query.ScanConsistency(ScanConsistency.RequestPlus);
  var result = _bucket.Query<OpenResponse>(query);
  return Ok(result.Rows);
}

 

> Model 만을 이용해서 데이터를 조회, 추가, 업데이트 및 삭제할 수 있다.

 _buckcet.get

 _bucket.Upsert

 _bucket.Remove  

 

 

참고

  https://www.youtube.com/watch?v=kp4tpVtDMXs

 https://developer.couchbase.com/documentation/server/3.x/developer/dotnet-2.0/hello-couchbase.html

 

반응형

'C, C++, C# > C# ASP.NET' 카테고리의 다른 글

[.NET Core 2.x] Swagger 연동  (0) 2018.04.06
[.NET Core 2.x] RabbitMQ 연동  (0) 2018.04.06
[.NET Core 2.x] REST API + MySQL  (0) 2018.04.05
[.NET Core 2.x] VS Code + MySQL  (0) 2018.04.04
[.NET Core 2.x] Visual Studio Code  (0) 2018.04.04