Information Security ˗ˋˏ ♡ ˎˊ˗

OS/Database

[DBMS] CouchDB 정의 및 특징

토오쓰 2022. 1. 13. 14:10

 

정의

  • Apache CouchDB, NoSQL
  • Cluster Of Unreliable Commodity Hardware의 약어로, 문서 기반 데이터베이스이다.
  • Document NoSQL 데이터베이스 구조를 갖추고 있으며 아파치 프로젝트 중에서 유일하게 얼랭으로 구현되어 있다.
    • 여기서 얼랭(Erlang)이란 범용 병렬 프로그래밍 언어
  • NOSQL CAP 이론 중 AP에 해당한다(가용성+분산 혀용)

 

특징

  • 관계형 데이터베이스와 달리 테이블에 데이터와 관계를 저장하지 않는다. 대신에 각 데이터베이스는 독립된 도큐먼트들의 모음집이 된다.
  • 다중 버전 동시성 제어(MVCC)의 형태를 구현하므로 쓰기 중에 데이터베이스 파일을 잠그지 않는다. 충돌은 애플리케이션이 해결하도록 내버려 둔다.
  • SQL 대신 Json을 사용하여 데이터를 저장하고, 자바스크립트를 쿼리 언어로 사용하며 API를 위해 HTTP 사용한다.
  • HTTP/REST 프로토콜을 사용함으로 별도의 드라이버가 필요 없고 인터넷에 연결이 되어 있으면 HTTP를 이용하여 CouchDB를 사용한다. 단 HTTP REST만 지원한다.
  • Map-Reduce 쿼리 지원을 통해서 새로운 대용량 웹 문서 처리의 가능성을 보여주지만, 쿼리 속도가 느리다.
    • Map-Reduce View: 비정형 데이터를 처리하기 위해서 자바스크립트 함수를 이용하는데 여기서 자바 스크립트 함수를 보라고 하는데 Map-Reduce 모델을 사용한다.
  • 멀티 마스터 복제(multi-master replication)이며 여러 머신들로 하여금 스케일 할 수 있게 함으로써 고성능 시스템을 구축할 수 있게 한다.
  • CouchDB의 복제 기능은 단방향, 양방향 복제, 1:N, M:N 또한 필터나 Rule 기반의 복제도 가능하다.
  • 다른 데이터베이스들처럼 ACID 속성을 갖고 있다.
    • ACID: 원자성, 일관성, 고립성, 지속성

 

참고

https://ko.wikipedia.org/wiki/%EC%B9%B4%EC%9A%B0%EC%B9%98DB

https://www.kdata.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=221&dbnum=127630&mode=detail&type=techreport

https://ryufree.tistory.com/215

https://hub.docker.com/_/couchdb?tab=description&page=1&ordering=last_updated docker에서 CouchDB 사용하기

 

설치가이드

https://www.joinc.co.kr/w/Site/cloud/BigData/CouchDB/Tutorial