JaeWon's Devlog
article thumbnail
반응형

이전 글에서 NoSQL 에 대해 정리해보았고, 이번 글에서는 NoSQL 중 CouchBase 에 대해 간단하게 알아보고 설치하는 방법을 정리해보고자 합니다.

 

[DB] NoSQL DataBase 정리

회사에서 업무 도중 오픈 API 데이터를 긁어와서 저장해두었다가 특정 필드를 확인해서 서비스에 녹이고자 하였습니다. 그러던 중 간단하게 먼저 공부 겸 진행해보라고 하시면서 DB 는 NoSQL 을 사

dev-jwblog.tistory.com


1. CouchBase 정리

1-1. CouchBase 란?

- Apache 의 CouchDB 를 기반으로 새롭게 만든 솔루션이다.

- 카우치베이스 Server 라는 NoSQL 솔루션이다.

- 고성능 NoSQL(비 관계형)으로 Key-Value 형태로 XML/JSON 를 저장하는 Document DB이다.

1-2. 특징

- NoSQL 의 분산 이론인 CAP 이론에서 CP(Consistency & Partition tolerance) 의 부분에 해당하며 데이터에 대한 일관성과, 노드 간의 네트워크 장애 시에도 서비스를 제공할 수 있다.

- Memcached 기반의 Level 2 캐시를 내장하여 속도가 빠르다.

- 모바일 디바이스에 탑재할 수 있으며, 서버에 설치된 CouchBase 계열과 Sync 가 가능하다.

- XDCR(Cross Data Center Replication) 의 기능을 이용하여 물리적으로 떨어진 데이터 센터 간에 복제가 가능하다.

- RDBMS(Oracle, MySQL etc...) 들이 지원하는 index, grouping, ordering 기능을 지원한다.(데이터 타입이 다름에도 불구하고 공통되는 필드에 대해 indexing, grouping 등을 제공한다.)

- 확장이 쉽다.

- 웹 기반의 GUI 관리 도구를 기본적으로 제공한다.

- 스키마가 없기 때문에 하나의 테이블에 컬럼 형식이 다른 데이터를 넣을 수 있다.(데이터 구조가 다른 JSON 을 넣을 수 있다.)

- 카우치베이스의 구조는 여러 개의 노드로 이루어진 클러스터로 구성된다.

1-3. 용어 개념

  • 버킷(Bucket)

- RDBMS 에서의 데이터베이스 같은 공간이다.

- XML/JSON Document 들이 이 버킷에 저장된다.

- 각각의 버킷은 고유의 속성 값을 가지고 있다.

- 버킷 별로 사용할 수 있는 메모리 양, 옵션으로 버킷별로 접근할 수 있는 TCP 포트, 접근 비밀번호, 데이터에 대한 복제본의 수 등을 정할 수 있다.

  • vBucket

- 논리적인 데이터 컨테이너이다.

- 많은 수의 논리적인 vBucket 으로 구성되며, 실제 데이터와 물리 서버 간의 맵핑을 이 vBucket 을 사용해서 관리한다.

- 카우치베이스는 Key 가 어디에 저장되어 있는지를 vBucket 이라는 단위로 관리한다.

  • 뷰(View)

- RDBMS 의 뷰 개념과 유사하며, 원본 데이터로부터 필터링을 통해 원하는 형태의 데이터로 변환하여 읽기 전용으로 보여주는 테이블이다.

- Filtering, Indexing, Grouping, Ordering 등 다양한 기능을 제공한다.

- 위 그림을 예로 들어보면, 저장하고자 하는 Data(Json Document) 안에 ssn(주민번호)가 있고, Bucket 에 90년생 이하만 저장하는 View 를 만든다고 가정하면 데이터가 저장될 때마다 생성된 뷰에 같이 저장된다.

- 즉, 데이터를 저장하거나 업데이트 시 View 코드가 매번 수행되며, View 코드에 저장된 알고리즘에 따라 View의 데이터를 업데이트한다.

2. CouchBase Architecture

2-1. Node & Cluster

- 카우치베이스는 여러 개의 노드로 이루어진 클러스터로 구성된다.

  • Node

- Node(노드)는 물리적인 서버에서 기동 하는 CouchBase 의 인스턴스이다.

  • Cluster

- CouchBase Cluster 는 각각 독립 노드에서 실행되는 하나 이상의 CouchBase Server 인스턴스로 구성된다.

- CouchBase Server 를 실행하는 각 노드, 클러스에 여러 노드가 있는 경우 CouchBase 클러스터 관리자는 각 노드에서 실행된다.

- 클러스트의 전체 또는 일부 노드에서 실행되도록 서비스를 구성할 수 있다.

2-2. 노드의 구조

- CouchBase 의 노드는 Data Manager 와 Cluster Manager 로 나뉜다.

Data Manager Cluster Manager
- 직접 데이터에 접근하는 부분
- set/get 메서드를 통한 데이터 저장이나 View 에 대한 쿼리를 수행할 때 접근
- Multi Thread Persisten Engine : 디스크에 데이터를 저장하거나 읽을 때 사용하는 컴포넌트
- 노드에 대한 상태와 Cluster 에 대한 상태, 설정 등을 관리하는 부분으로 Erlang/OTP 로 구성
- CouchBase Client SDK 는 8091 포트의 REST API 를 통해서 vBucket 정보를 조회
- 다수의 포트를 사용

3. CouchBase 설치하기

3-1. Mac

- Intel Mac 기준으로 Docker 를 사용한다.

- Docker 가 설치되어 있다면 터미널에서 couchbase 를 검색한다.

docker serach couchbase

- 공식 이미지를 설치한다.

docker pull couchbase

- 설치가 완료되었다면, 이미지를 실행시킨다.(무료판인 Community 판을 사용하며, 버전은 원하시는 버전 사용)

docker run -d --name db -p 8091-8094:8091-8094 -p 11210:11210 couchbase:community-7.1.1

3-2. Window

- 공식 홈페이지를 통해서 Community 버전을 다운로드한다.

 

Best NoSQL Database | 30-Day Free Trial | Couchbase

Couchbase Server Enterprise A full-featured, multimodel distributed  NoSQL database available free of charge for evaluation, development, and unlimited preproduction testing.  Experience the unmatched flexibility, familiarity and performance of NoSQL on

www.couchbase.com

- 설치 파일을 실행하여 PC 에 설치한다.

3-3. 설치 확인

- CouchBase 는 웹 GUI 관리 툴을 제공한다.

- http://localhost:8091/ui/index.html#/ 를 접속하여 확인한다.

- 'Setup New Cluster' 를 선택하여 Local PC 용 계정을 만든다.

- 적당하게 값을 설정하여 생성한다.

- 아래와 같은 대시보드 화면으로 진입이 되었다면, 정상적으로 클러스터가 생성된 것이다.

- 다음 글에서는 SpringBoot 에서 CouchBase 를 연동하여 간단하게 데이터를 저장/조회 해보도록 하겠습니다.


참고

- https://t-okk.tistory.com/173

- https://azderica.github.io/02-db-nosql-couchbase/

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!