이전 글에서 NoSQL 에 대해 정리해보았고, 이번 글에서는 NoSQL 중 CouchBase 에 대해 간단하게 알아보고 설치하는 방법을 정리해보고자 합니다.
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 버전을 다운로드한다.
- 설치 파일을 실행하여 PC 에 설치한다.
3-3. 설치 확인
- CouchBase 는 웹 GUI 관리 툴을 제공한다.
- http://localhost:8091/ui/index.html#/ 를 접속하여 확인한다.
- 'Setup New Cluster' 를 선택하여 Local PC 용 계정을 만든다.
- 적당하게 값을 설정하여 생성한다.
- 아래와 같은 대시보드 화면으로 진입이 되었다면, 정상적으로 클러스터가 생성된 것이다.
- 다음 글에서는 SpringBoot 에서 CouchBase 를 연동하여 간단하게 데이터를 저장/조회 해보도록 하겠습니다.
참고
'BackEnd > DataBase' 카테고리의 다른 글
[MySQL] Clustered Index와 Secondary Index 정리 (0) | 2023.10.04 |
---|---|
[DB] MySQL/MariaDB Pivot(피벗) 테이블 사용/만들기 (0) | 2022.12.01 |
[DB] NoSQL DataBase 정리 (2) | 2022.11.12 |
[MySQL] DATEDIFF, TIMESTAMPDIFF 함수를 통한 날짜 차이 계산하기 (2) | 2022.08.29 |
[MYSQL] IN, EXISTS 절 활용하기 (0) | 2022.08.27 |