본문 바로가기

소프트웨어-이야기/데이터 저장소 + 시각화

[couchbase]카우치 베이스에서 테이블이란?

카우치베이스와 RDB의 논리적 개념 차이에 대해서 헷갈려서, 찾아봤다.

 

카우치베이스의 bucket은 RDB의 database의 개념과 유사하다고 한다. 그러면 카우치베이스의 table의 개념은 무엇일까 궁금했다.

카우치베이스에서는 별도의 TABLE이 없다. 때문에 document에 type이라는 속성을 추가해서, 유사한 데이터를 묶어서 관리해주어야 한다.

 

참고 : http://blog.couchbase.com/10-things-developers-should-know-about-couchbase

위는 카우치베이스 사용할 때 알아야하는 10가지에 대한 포스팅의 캡쳐 이미지이다. 

하나의 버킷은 RDBMS에서 database로 볼 수 있다. 때문에 다른 속성을 가진 도큐먼트여도 같은 버킷에 저장되어야 한다. 그리고 후에 정 필요하다면 버킷을 따로 생성하는게 맞다. 그래서 위에서는 처음에는 버킷 하나로 시작하는 것을 권장한다고 한다.

그렇다면 다른 속성을 지닌 도큐먼트들을 저장할거라면, RDB에서의 테이블개념처럼
각 document에 type이라는 컬럼을 추가하고, 여기에 인덱싱을 걸어서 관리해주어야 한다.

속성명은 꼭 type이 아니여도 된다.

 

예시 )

{
  "id": "-JEVHOVwyze3I9u1G_JHhg",
  "doc_type": "user",
  "join_date": "2014-01-29 03:40:05 UTC",
  "last_active": "2014-02-03 04:54:50 UTC",
  "number_of_visits": 4768,
  "origin": "RU"
}

여기서 doc_type이 카우치베이스의 테이블 개념인 type 컬럼이다. 도큐먼트 저장 시 위의 구조처럼 type을 저장해주면 된다.

참고 : http://scalabilitysolved.com/4-ways-to-make-couchbase-do-the-hard-work-part-i/

 

 

기타 참고할만한 링크

버킷안에 타입 만들기 - https://forums.couchbase.com/t/creating-types-in-a-bucket/7674