맨위로가기

카우치DB

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

카우치DB는 2005년 데미안 카츠가 시작한 오픈 소스 NoSQL 데이터베이스로, 아파치 라이선스 하에 제공된다. ACID 속성을 지원하며, 다중 버전 동시성 제어를 통해 높은 동시성의 읽기 및 쓰기를 처리한다. JSON 형식의 문서를 저장하고, 양방향 복제 및 오프라인 작동을 지원하여 모바일 환경에 적합하다. 뷰를 사용하여 데이터를 구조화하며, HTTP를 통해 CRUD 작업을 수행한다. CERN, 적십자, IBM, 유나이티드 항공 등 다양한 기관 및 기업에서 활용하며, Erlang, ICU, jQuery, OpenSSL, SpiderMonkey 등 여러 오픈 소스 구성 요소를 포함한다.

더 읽어볼만한 페이지

  • 얼랭 - RabbitMQ
    RabbitMQ는 분산 시스템에서 애플리케이션 간 비동기 메시지 전송을 지원하는 오픈 소스 메시지 브로커 시스템으로, AMQP 기반의 다양한 프로토콜과 프로그래밍 언어를 지원하며, 플러그인과 웹 기반 관리 인터페이스를 통해 기능을 확장하고 서버를 관리한다.
  • 얼랭으로 작성된 자유 소프트웨어 - 셰프 (소프트웨어)
    셰프는 서버 애플리케이션과 유틸리티를 관리하고 구성하는 레시피를 사용자가 작성하도록 하는 형상 관리 소프트웨어이며, 클라이언트/서버 방식 또는 독립형 모드로 실행될 수 있고, 리눅스 및 마이크로소프트 윈도우를 지원하며, 코드형 인프라스트럭처 도구로도 사용된다.
  • 얼랭으로 작성된 자유 소프트웨어 - RabbitMQ
    RabbitMQ는 분산 시스템에서 애플리케이션 간 비동기 메시지 전송을 지원하는 오픈 소스 메시지 브로커 시스템으로, AMQP 기반의 다양한 프로토콜과 프로그래밍 언어를 지원하며, 플러그인과 웹 기반 관리 인터페이스를 통해 기능을 확장하고 서버를 관리한다.
  • 문서 지향 데이터베이스 - 몽고DB
    몽고DB는 2007년 개발되어 2009년 오픈 소스로 전환된 문서 지향적 NoSQL 데이터베이스로, 다양한 데이터 쿼리, 인덱싱, 고가용성, 수평적 확장 기능을 제공하며, 2018년부터 멀티 도큐먼트 ACID 트랜잭션을 지원하고 다양한 에디션과 프로그래밍 언어를 지원한다.
  • 문서 지향 데이터베이스 - BSON
    BSON은 JSON과 유사한 이진 데이터 직렬화 형식으로, JSON보다 효율적인 저장 공간 활용과 빠른 검색 속도를 제공하며 다양한 데이터 유형을 지원하여 MongoDB의 주요 데이터 저장 및 전송 형식으로 사용된다.
카우치DB - [IT 관련 정보]에 관한 문서
개요
이름아파치 카우치DB
로고
카우치DB의 Fauxton Administration 인터페이스, 사용자 데이터베이스
개발자아파치 소프트웨어 재단
라이선스아파치 라이선스 2.0
웹사이트아파치 카우치DB 공식 웹사이트
개발
최초 출시2005년
최신 버전3.1.1
최신 버전 출시일2020년 9월 18일
개발 상태활발히 개발 중
프로그래밍 언어얼랭, 자바스크립트, C, C++
운영 체제크로스 플랫폼
기타
장르도큐먼트 지향 데이터베이스
관련 링크GitHub 저장소
저자Damien Katz, Jan Lehnardt, Naomi Slater, Christopher Lenz, J. Chris Anderson, Paul Davis, Adam Kocoloski, Jason Davies, Benoît Chesneau, Filipe Manana, Robert Newson

2. 역사

CouchDB 프로젝트는 2005년 4월 IBM의 전 Lotus Notes 개발자였던 데미안 카츠에 의해 시작되었다.[3] 그는 거의 2년 동안 이 프로젝트를 자비로 운영했으며, GNU 일반 공중 사용 허가서에 따라 오픈 소스 프로젝트로 공개했다.

2008년 2월, 이 프로젝트는 아파치 인큐베이터 프로젝트가 되었으며, 아파치 라이선스 하에 제공되었다.[4] 몇 달 후, 최상위 프로젝트로 승격되었다.[5] 이로 인해 2010년 7월에 첫 번째 안정 버전이 출시되었다.[6]

2012년 초, 카츠는 Couchbase Server에 집중하기 위해 프로젝트를 떠났다.[7]

카츠가 떠난 후에도 아파치 CouchDB 프로젝트는 지속되었으며, 2012년 4월에 버전 1.2, 2013년 4월에 버전 1.3을 출시했다. 2013년 7월, CouchDB 커뮤니티는 BigCouch, 즉 Cloudant의 CouchDB 클러스터 버전의 코드베이스를 아파치 프로젝트에 병합했다.[8] BigCouch 클러스터링 프레임워크는 현재 아파치 CouchDB 릴리스에 포함되어 있다.[9]

네이티브 클러스터링은 버전 2.0.0에서 지원된다. 그리고 새로운 Mango 쿼리 서버는 JavaScript나 MapReduce 없이 CouchDB 쿼리를 수행할 수 있는 간단한 JSON 기반 방법을 제공한다. 또한 버전 2.0.0에서는 이전 내장 웹 인터페이스인 Futon을 대체하기 위해 새로운 내장 웹 인터페이스인 Fauxton이 도입되었다.[10]

3. 주요 특징

카우치DB의 주요 특징은 다음과 같다.


  • ACID 시맨틱: 다중 버전 동시성 제어를 통해 ACID 시맨틱을 제공하여, 높은 수준의 동시 읽기 및 쓰기 작업을 충돌 없이 처리한다.[11]
  • 오프라인 지원: 오프라인 상태가 될 수 있는 기기(스마트폰 등)에 데이터를 복제하고, 온라인 상태로 복귀했을 때 데이터 동기화를 지원한다.[11]
  • 분산 아키텍처와 복제: 양방향 복제(동기화)를 통해 여러 복제본이 동일한 데이터를 가지고 수정하고, 나중에 변경 사항을 동기화할 수 있다.[11]
  • 문서 저장: 데이터를 JSON 형태로 표현된 "문서"로 저장하며, 각 문서는 고유한 ID를 가지고 필수적인 스키마는 없다.[11]
  • 최종 일관성: 가용성과 분할 내결함성을 위해 최종 일관성을 보장한다.[11]
  • 맵/리듀스 뷰 및 인덱스: map/reduce 작업의 Map 역할을 하는 자바스크립트 함수로 뷰를 구성하고, 뷰를 인덱싱하여 문서 추가, 제거, 업데이트 시 인덱스를 최신 상태로 유지한다.[11]
  • HTTP API: 모든 항목은 HTTP를 통해 접근 가능한 고유한 URI를 가지며, CRUD (생성, 읽기, 업데이트, 삭제) 작업을 위해 HTTP의 POST, GET, PUT 및 DELETE HTTP 요청 메서드를 사용한다. 웹을 통해 접근 가능한 내장된 관리 인터페이스인 Fauxton을 제공한다.[12]

3. 1. ACID 시맨틱

카우치DB는 다중 버전 동시성 제어를 통해 ACID 시맨틱을 제공한다.[11] 이는 카우치DB가 높은 수준의 동시적인 읽기 및 쓰기를 충돌 없이 처리할 수 있도록 한다.

3. 2. 오프라인 지원

카우치DB는 오프라인 상태가 될 수 있는 기기(스마트폰 등)에 데이터를 복제할 수 있으며, 기기가 온라인 상태로 복귀했을 때 데이터 동기화를 처리한다.[11]

3. 3. 분산 아키텍처와 복제

카우치DB는 양방향 복제(또는 동기화)와 오프라인 작동을 염두에 두고 설계되었다.[11] 여러 복제본이 동일한 데이터의 자체 복사본을 가지고 이를 수정할 수 있으며, 나중에 해당 변경 사항을 동기화할 수 있다.

3. 4. 문서 저장

카우치DB는 데이터를 JSON 형태로 표현된 "문서"로 저장한다.[11] 각 문서는 하나 이상의 필드/값 쌍으로 구성되며, 필드 값은 문자열, 숫자, 날짜와 같이 간단한 값뿐만 아니라 정렬된 목록이나 연관 배열도 포함할 수 있다. 카우치DB 데이터베이스의 모든 문서는 고유한 ID를 가지며, 필수적인 문서 스키마는 없다.

3. 5. 최종 일관성

카우치DB는 가용성과 분할 내결함성을 모두 제공하기 위해 최종 일관성을 보장한다.[11]

3. 6. 맵/리듀스 뷰 및 인덱스

저장된 데이터는 뷰를 사용하여 구조화된다. 카우치DB에서 각 뷰는 map/reduce 작업의 Map 역할을 하는 자바스크립트 함수로 구성된다.[11] 이 함수는 문서를 가져와서 반환하는 단일 값으로 변환한다. 카우치DB는 뷰를 인덱싱하고 문서가 추가, 제거 또는 업데이트될 때 해당 인덱스를 최신 상태로 유지할 수 있다.

3. 7. HTTP API

모든 항목은 HTTP를 통해 접근 가능한 고유한 URI를 갖는다. 기본적인 CRUD (생성, 읽기, 업데이트, 삭제) 작업을 위해 HTTP의 POST, GET, PUT 및 DELETE HTTP 요청 메서드를 사용한다.[12]

카우치DB는 또한 웹을 통해 접근할 수 있는 내장된 관리 인터페이스인 Fauxton을 제공한다.[12]

4. 활용 사례

카우치DB의 복제 및 동기화 기능은 네트워크 연결이 보장되지 않는 환경이나 오프라인에서도 작동해야 하는 모바일 장치에서 사용하기에 적합하다.

카우치DB는 CRM, CMS 시스템과 같이 미리 정의된 쿼리가 실행되고 버전 관리가 중요한 애플리케이션에서 데이터를 관리하는 데 유용하다. 특히, 마스터-마스터 복제 기능은 다중 사이트 배포를 쉽게 할 수 있도록 지원한다.[13]

4. 1. 사용자


  • CERN(유럽 입자 물리 연구소)은 거대 강입자 충돌기(LHC)의 데이터 관리 시스템의 데이터베이스로 사용한다.[14]
  • 적십자는 재해 지역에서 케이스워크를 전자적으로 완료하기 위해 iDAT 애플리케이션을 사용하며, 이 애플리케이션에서 CouchDB는 멀티 노드 P2P 오프라인 우선 데이터베이스로 사용된다.[15]
  • IBM 클라우드 서비스는 근본적으로 CouchDB를 기반으로 한다.[16]
  • 유나이티드 항공은 3,000대 이상의 비행기에서 기내 엔터테인먼트 시스템에 사용한다.[17][18]
  • 아마데우스 IT 그룹은 일부 백엔드 시스템에 사용한다.
  • 크레디트 스위스는 상품 부서의 내부 사용을 위한 마켓플레이스 프레임워크에 사용한다.[19]
  • 미보는 소셜 플랫폼에 사용되었다. 미보는 구글에 인수되었으며 대부분의 제품은 2012년 7월 12일에 종료되었다.[20]
  • npm은 패키지 레지스트리의 복제 데이터베이스로 사용한다.[21]
  • 소포스는 일부 백엔드 시스템에 사용한다.
  • BBC는 동적 CMS 플랫폼에 사용한다.[22]
  • 캐노니컬은 2009년에 동기화 서비스 "Ubuntu One"에 사용하기 시작했지만, 2011년 11월에 사용을 중단했다.[23][24]
  • CANAL+는 CANAL+ 해외의 국제 주문형 플랫폼에 사용한다.
  • 프로토그리드는 신속한 애플리케이션 개발 프레임워크의 스토리지 백엔드로 사용한다.[25]

5. 데이터 조작: 문서와 뷰

CouchDB는 JSON 문서 모음을 관리한다. 문서는 뷰를 통해 구성된다. 뷰는 집계 함수로 정의되며 필터는 MapReduce와 유사하게 병렬로 계산된다.

뷰는 일반적으로 데이터베이스에 저장되며 해당 인덱스는 지속적으로 업데이트된다. CouchDB는 외부 소켓 서버와 JSON 기반 프로토콜을 사용하는 뷰 시스템을 지원한다.[26] 결과적으로 다양한 언어(JavaScript, PHP, Ruby, Python, Erlang 등)로 뷰 서버가 개발되었다.

5. 1. HTTP를 통한 데이터 접근

애플리케이션은 HTTP를 통해 카우치DB와 상호 작용한다. cURL과 같은 명령줄 유틸리티를 사용하여 데이터베이스와 상호작용할 수 있다. 다음 표는 그 예시를 나타낸다.[1]

동작요청응답
서버 정보 접근curl http://127.0.0.1:5984/
wiki라는 데이터베이스 생성curl -X PUT http://127.0.0.1:5984/wiki{"ok": true}
wiki라는 두 번째 데이터베이스 생성 시도curl -X PUT http://127.0.0.1:5984/wiki
wiki 데이터베이스에 대한 정보 검색curl http://127.0.0.1:5984/wiki
wiki 데이터베이스 삭제curl -X DELETE http://127.0.0.1:5984/wiki{"ok": true}
카우치DB에 문서 ID를 제공하도록 요청하여 문서 생성curl -X POST -H "Content-Type: application/json" --data { "text" : "Wikipedia on CouchDB", "rating": 5 } http://127.0.0.1:5984/wiki
데이터베이스 목록 가져오기curl http://127.0.0.1:5984/_all_dbs


6. 오픈 소스 구성 요소

Erlang 공용 라이선스 (이전 릴리스)ICU유니코드 지원, 소프트웨어 국제화 및 세계화를 위한 C/C++Java 라이브러리 기반의 오픈 소스 프로젝트이다.유니코드 라이선스jQuery자바스크립트HTML 간의 상호작용을 강조하는 가볍고 크로스 브라우저를 지원하는 자바스크립트 라이브러리이다.MIT 라이선스OpenSSLSSL 및 TLS 프로토콜의 오픈 소스 구현이다. 핵심 라이브러리는 C 프로그래밍 언어로 작성되었으며, 기본적인 암호화 기능을 구현하고 다양한 유틸리티 기능을 제공한다.Apache 1.0 및 4-절 BSD 라이선스스파이더몽키모질라 재단에서 관리하는 고성능 자바스크립트 엔진이다. 인터프리터, JIT 컴파일러, 가비지 컬렉터를 포함한다.MPL 2.0


6. 1. Erlang

Erlang은 범용 동시 프로그래밍 언어이자 런타임 시스템이다. Erlang의 순차적 하위 집합은 함수형 언어로, 엄격한 평가, 단일 할당, 동적 타이핑을 특징으로 한다.[1]

Erlang영어Apache 2.0 (릴리스 18.0 이상) 및 Erlang 공용 라이선스 (이전 릴리스)를 따른다.[1]

6. 2. ICU (International Components for Unicode)

ICU는 유니코드 지원, 소프트웨어 국제화 및 세계화를 위한 C/C++Java 라이브러리 기반의 오픈 소스 프로젝트이다.[1] 유니코드 라이선스를 따른다.[1]

6. 3. jQuery

jQuery는 자바스크립트HTML 간의 상호작용을 강조하는 가볍고 크로스 브라우저를 지원하는 자바스크립트 라이브러리이다. MIT 라이선스를 따른다.

6. 4. OpenSSL

SSL 및 TLS 프로토콜의 오픈 소스 구현이다. 핵심 라이브러리는 C 프로그래밍 언어로 작성되었으며, 기본적인 암호화 기능을 구현하고 다양한 유틸리티 기능을 제공한다. Apache 1.0 및 4-절 BSD 라이선스를 따른다.[1]

6. 5. SpiderMonkey

모질라 재단에서 관리하는 고성능 자바스크립트 엔진이다. 인터프리터, JIT 컴파일러, 가비지 컬렉터를 포함한다.[1] MPL 2.0 라이선스를 따른다.[1]

참조

[1] 웹사이트 Apache CouchDB http://couchdb.apach[...] 2012-04-15
[2] 웹사이트 What is the CouchDB replication protocol? Is it like Git? https://stackoverflo[...] Stack Exchange 2012-04-14
[3] 웹사이트 Exploring CouchDB http://www.ibm.com/d[...] IBM 2016-09-30
[4] 간행물 Apache mailing list announcement http://mail-archives[...]
[5] 간행물 Re: Proposed Resolution: Establish CouchDB TLP http://mail-archives[...]
[6] 뉴스 CouchDB NoSQL Database Ready for Production Use https://www.pcworld.[...] 2010-07
[7] 웹사이트 The future of CouchDB http://damienkatz.ne[...] 2012-04-15
[8] 웹사이트 Welcome BigCouch https://blogs.apache[...] 2013-07-25
[9] 웹사이트 '2.0' https://blog.couchdb[...] 2017-01-13
[10] 웹사이트 1.8. 2.0.x Branch — Apache CouchDB® 3.3 Documentation https://docs.couchdb[...] 2024-08-04
[11] 문서 CouchDB, Technical Overview http://couchdb.apach[...]
[12] 웹사이트 couchdb-fauxton https://github.com/a[...] apache 2023-05-02
[13] 문서 Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase comparison http://kkovacs.eu/ca[...]
[14] 웹사이트 Why Large Hadron Collider Scientists are Using CouchDB https://readwrite.co[...] 2022-03-29
[15] Citation iDAT https://github.com/r[...] Red Cross Code 2022-03-29
[16] 웹사이트 Database-Deep-Dives-CouchDB https://www.ibm.com/[...] 2019-07-19
[17] 웹사이트 Database-Deep-Dives-CouchDB https://www.ibm.com/[...] 2019-07-19
[18] 웹사이트 United Airlines Streamlines Operations With Couchbase {{!}} Case Study https://www.couchbas[...] 2022-03-29
[19] 문서 "CouchDB in the wild" http://wiki.apache.o[...]
[20] 웹사이트 Meebo Gets The Classic Google Acq-hire Treatment: Most Products To Shut Down Soon https://techcrunch.c[...] AOL Inc. 2016-01-07
[21] 웹사이트 npm-registry-couchapp https://github.com/n[...] npm 2016-01-07
[22] 문서 CouchDB at the BBC as a fault tolerant, scalable, multi-data center key-value store http://www.erlang-fa[...]
[23] 문서 Email from Elliot Murphy (Canonical) http://mail-archives[...]
[24] 문서 Canonical Drops CouchDB From Ubuntu One (Slashdot) http://linux.slashdo[...]
[25] 웹사이트 Protogrid - Über uns http://protogrid.com[...]
[26] 문서 View Server Documentation http://wiki.apache.o[...]
[27] 웹인용 Apache CouchDB http://couchdb.apach[...] 2012-04-15
[28] 웹인용 What is the CouchDB replication protocol? Is it like Git? https://stackoverflo[...] Stack Exchange 2012-04-14



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com