카우치베이스 서버

카우치베이스 서버(Couchbase Server)
개발자카우치베이스
발표일2010년 8월 (2010-08)
안정화 버전
8.0.0 / 2025년 10월 21일 (2025-10-21)
저장소
프로그래밍 언어C++, Erlang, C, Go, Java
종류멀티 모델 데이터베이스, 분산 키-값 데이터베이스, 문서 지향 데이터베이스, JSON 데이터베이스
라이선스BSL 1.1, 프리미엄
웹사이트www.couchbase.com
AWS 서밋에서의 카우치베이스

카우치베이스 서버(Couchbase Server, 본래 명칭 멤베이스/Membase)는 상호작용형 애플리케이션에 최적화된 소스 입수 가능, 분산(공유 무설계 구조) 멀티 모델 NoSQL 문서 지향 데이터베이스 소프트웨어 패키지다. 이러한 애플리케이션은 데이터를 생성, 저장, 검색, 집계, 조작 및 표현함으로써 수많은 동시 사용자에게 서비스를 제공할 수 있다. 이러한 종류의 애플리케이션 요구 사항을 지원하기 위해 카우치베이스 서버는 낮은 지연 시간과 높은 지속 가능 처리량을 바탕으로 쉽게 확장 가능한 키-값 또는 JSON 문서 액세스를 제공하도록 설계되었다. 단일 머신에서 수많은 머신에 걸친 대규모 배포까지 클러스터를 구성할 수 있도록 설계되었다.

카우치베이스 서버는 Memcached와 클라이언트 프로토콜 호환성을 제공하지만, 디스크 지속성, 데이터 복제, 라이브 클러스터 재구성, 리밸런싱 및 데이터 파티셔닝을 통한 멀티테넌시 기능이 추가되었다.

제품 역사

멤베이스(Membase)는 memcached의 단순성, 속도, 확장성을 갖추되 데이터베이스의 저장, 지속성 및 쿼리 기능을 갖춘 키-값 저장소를 개발하기 위해 노스스케일(NorthScale)이라는 회사를 설립한 Memcached 프로젝트의 여러 리더들에 의해 개발되었다. 원래의 멤베이스 소스 코드는 2010년 6월에 노스스케일과 프로젝트 공동 스폰서인 징가(Zynga) 및 네이버(당시 NHN)에 의해 membase.org의 새로운 프로젝트에 기증되었다.

2011년 2월 8일, 멤베이스 프로젝트 창립자들과 멤베이스 Inc.는 CouchDB의 주요 인물들이 포진한 카우치원(CouchOne)과의 합병 및 관련 프로젝트의 합병을 발표했다. 합병된 회사의 이름은 카우치베이스로 명명되었다. 2012년 1월, 카우치베이스는 카우치베이스 서버 1.8을 출시했다. 2012년 9월, 오비츠는 자사 시스템 중 일부를 카우치베이스를 사용하도록 변경했다고 밝혔다. 2012년 12월, 카우치베이스 서버 2.0(2011년 7월 발표)이 출시되었으며, 새로운 JSON 문서 저장소, 인덱싱 및 쿼리, 증분 맵리듀스 및 데이터 센터 간 복제 기능이 포함되었다.

아키텍처

모든 카우치베이스 노드는 데이터 서비스, 인덱스 서비스, 쿼리 서비스 및 클러스터 관리자 구성 요소로 이루어진다. 4.0 버전부터는 필요한 경우 세 가지 서비스를 클러스터의 별도 노드에서 실행되도록 분산할 수 있다. 에릭 브루어의 CAP 정리에 따르면, 카우치베이스는 일반적으로 일관성과 분할 내성을 제공하는 CP 유형 시스템이지만, 여러 클러스터를 사용하여 AP 시스템으로 설정할 수도 있다.

클러스터 관리자

클러스터 관리자는 카우치베이스 클러스터 내의 모든 서버 구성과 동작을 감독한다. 복제 스트림 관리 및 리밸런싱 작업과 같은 노드 간 동작을 구성하고 감독한다. 또한 클러스터에 대한 메트릭 집계 및 합의 기능을 제공하며, REST 방식의 클러스터 관리 인터페이스를 제공한다. 클러스터 관리자는 얼랭 프로그래밍 언어와 오픈 텔레콤 플랫폼을 사용한다.

복제 및 장애 조치

클러스터 노드 내의 데이터 복제는 여러 매개변수로 제어할 수 있다. 2012년 12월, 서로 다른 데이터 센터 간의 복제 지원이 추가되었다.

데이터 관리자

데이터 관리자는 애플리케이션의 데이터 작업에 응답하여 문서를 저장하고 검색한다. 클라이언트에게 응답을 보낸 후 데이터를 디스크에 비동기적으로 기록한다. 1.7 버전 이상에서는 애플리케이션이 선택적으로 클라이언트에 쓰기 완료를 알리기 전에 데이터가 둘 이상의 서버 또는 디스크에 기록되도록 보장할 수 있다. 매개변수는 데이터가 유지되는 시기에 영향을 주는 항목 수명과 최대 메모리 및 메인 메모리에서 디스크로의 마이그레이션 처리 방식을 정의한다. "노드" 또는 "버킷"당 메모리 할당량보다 큰 워킹 셋(working set)을 지원한다. 외부 시스템은 필터링된 데이터 스트림을 구독할 수 있으며, 예를 들어 전문 검색 인덱싱, 데이터 분석 또는 아카이빙을 지원한다.

데이터 형식

문서(document)는 카우치베이스 서버에서 데이터 조작의 가장 기본적인 단위다. 문서는 미리 정의된 스키마 없이 JSON 문서 형식으로 저장된다. JSON이 아닌 문서(바이너리, 직렬화된 값, XML 등)도 카우치베이스 서버에 저장할 수 있다.

객체 관리 캐시

카우치베이스 서버에는 get, set, delete, append, prepend 등과 같은 memcached 호환 API를 구현하는 멀티스레드 객체 관리 캐시가 내장되어 있다.

스토리지 엔진

카우치베이스 서버는 데이터 손상, OOM 킬러, 또는 갑작스러운 전력 손실에 내성이 있는 테일 어펜드(tail-append) 스토리지 설계를 갖추고 있다. 데이터는 추가 전용(append-only) 방식으로 데이터 파일에 기록되므로, 카우치베이스는 업데이트 시 대부분 순차 쓰기를 수행하고 디스크 I/O에 최적화된 액세스 패턴을 제공할 수 있다.

성능

2012년 알토로스(Altoros)가 수행한 성능 벤치마크에서 카우치베이스 서버를 다른 기술들과 비교했다. 시스코 시스템즈는 2012년에 혼합 워크로드 환경에서 카우치베이스 서버의 지연 시간과 처리량을 측정한 벤치마크를 발표했다.

라이선스 및 지원

카우치베이스 서버는 카우치베이스의 오픈 소스 소프트웨어 기술을 패키징한 버전으로, 최신 버그 수정이 포함되지 않은 커뮤니티 에디션(Apache 2.0 라이선스)과 상업용 에디션으로 제공된다. 카우치베이스 서버 빌드는 우분투, 데비안, 레드햇, SUSE, 오라클 리눅스, 마이크로소프트 윈도우 및 macOS 운영 체제에서 사용할 수 있다.

카우치베이스는 .NET, PHP, Ruby, Python, C, Node.js, Java, Go, Scala 프로그래밍 언어를 위한 소프트웨어 개발 키트(SDK)를 지원한다.

SQL++

RDBMS에서 SQL이 데이터를 조작하는 것처럼, 카우치베이스의 JSON 데이터를 조작하기 위해 SQL++(이전 명칭 N1QL)라는 질의 언어가 사용된다. JSON 데이터 작업을 위해 SELECT, INSERT, UPDATE, DELETE, MERGE 문을 갖추고 있다. 이는 2015년 3월 "문서를 위한 SQL"로 처음 발표되었다.

SQL++ 데이터 모델은 중첩된 속성과 도메인 지향 데이터베이스 정규화를 지원하는 비제1정규형(N1NF)이다. 또한 SQL++ 데이터 모델은 관계형 모델의 적절한 상위 집합이자 일반화다.

예시

{
  "email": "testme@example.org",
  "friends": [
    { "name": "Pavan" },
    { "name": "Ravi" }
  ]
}
Like 쿼리
SELECT * FROM `bucket` WHERE email LIKE "%@example.org";
배열 쿼리
SELECT * FROM `bucket` WHERE ANY x IN friends SATISFIES x.name = "Pavan" END;

카우치베이스 모바일

카우치베이스 모바일(Couchbase Mobile) / 카우치베이스 라이트(Couchbase Lite)는 데이터 복제 기능을 제공하는 모바일 데이터베이스다.

카우치베이스 라이트(Couchbase Lite, 본래 TouchDB)는 내장된 피어 투 피어 또는 클라이언트-서버 복제 메커니즘을 갖춘 오프라인 우선 NoSQL 데이터베이스용 네이티브 라이브러리를 제공한다. 싱크 게이트웨이(Sync Gateway)는 카우치베이스 라이트와 카우치베이스 서버 간의 데이터 동기화 및 보안 액세스를 관리한다.

카우치베이스 라이트는 3.2 버전에서 벡터 검색(Vector Search) 지원을 추가하여, 모바일 애플리케이션에서 클라우드 투 에지(cloud-to-edge) 벡터 검색 지원을 가능하게 했다.

활용 사례

카우치베이스는 고속 데이터 캐시인 Memcached의 진화로 시작되었으며, 코드 변경 없이 memcached 애플리케이션에 고가용성을 제공하는 memcached의 드롭인 대체재로 사용될 수 있다.

카우치베이스는 유연한 데이터 모델, 쉬운 확장성, 일관된 고성능이 요구되는 애플리케이션(예: 실시간 사용자 활동 추적, 사용자 기본 설정 저장소 또는 온라인 애플리케이션)을 지원하는 데 사용된다.

장치(주로 모바일 장치)에 로컬로 데이터를 저장하는 카우치베이스 모바일은 장치가 네트워크에 연결되지 않았을 때도 작동하고 네트워크 연결이 재설립되면 카우치베이스 서버와 동기화되는 "오프라인 우선" 애플리케이션을 만드는 데 사용된다.

노스스케일 대학교의 Catalyst Lab은 참가자들이 식단의 질, 신체 활동, 스트레스 또는 수면을 개선하는 데 데이터를 활용하는 건강한 라이프스타일 연구 프로그램인 Evo 애플리케이션을 지원하기 위해 카우치베이스 모바일을 사용한다.

아마데우스는 항공사 및 기타 여행 파트너의 로열티 프로그램 데이터를 소비하고 통합하려는 "개방적이고 단순하며 민첩한" 전략을 지원하기 위해 아파치 카프카와 함께 카우치베이스를 사용한다. 여행 중단 이벤트가 발생하여 고가치 고객을 인식하고 보상해야 할 때 높은 확장성이 필요하기 때문이다.

2012년부터 링크드인의 캐싱 시스템에서 채용 담당자 및 채용 공고 제품의 백엔드 캐시 처리, 보안 방어 메커니즘용 카운터, 내부 애플리케이션 등을 위해 사용되었다.

대안

캐싱 분야에서 카우치베이스는 Memcached 및 레디스와 경쟁한다. 문서 데이터베이스 분야에서 카우치베이스는 다른 문서 지향 데이터베이스 시스템과 경쟁한다. 일반적으로 몽고DB, 아마존 다이나모DB, 오라클 RDBMS, DataStax, 구글 빅테이블, MariaDB, IBM Cloudant, 레디스 엔터프라이즈, 싱글스토어, 마크로직 등과 비교된다.

각주

  1. ↑ Damien Katz (2013년 1월 8일). “The Unreasonable Effectiveness of C”. 2016년 9월 30일에 확인함.
  2. ↑ “Couchbase Adopts BSL License”. 《The Couchbase Blog》. 2021년 3월 26일.
  3. ↑ “NewProtocols - memcached - Klingon - Memcached - Google Project Hosting”. 2011년 8월 22일. 2013년 6월 4일에 확인함.
  4. ↑ Shashank Tiwari (2011년 8월 31일). 《Professional NoSQL》. John Wiley & Sons. 15–16쪽. ISBN 9781118167809.
  5. ↑ “Balancing Oracle and open source at Orbitz”. GigaOM. 2012년 9월 21일. 2012년 9월 23일에 원본 문서에서 보존된 문서. 2016년 9월 19일에 확인함.
  6. 1 2 Andrew Brust (2012년 12월 12일). “Couchbase 2.0 released; implements JSON document store”. ZDNet.
  7. ↑ Derrick Harris (2011년 7월 29일). “Couchbase goes 2.0, pushes SQL for NoSQL”. 《GigaOm》. 2016년 10월 2일에 원본 문서에서 보존된 문서. 2016년 9월 19일에 확인함.
  8. ↑ Trond Norbye (2010년 3월 15일). “Want to know what your memcached servers are doing? Tap them”. 《Couchbase blog》.
  9. ↑ Frank Weigel (2012년 10월 30일). “Benchmarking Couchbase”. Couchbase. 2016년 9월 30일에 확인함.
  10. ↑ “Cisco and Solarflare Achieve Dramatic Latency Reduction for Interactive Web Applications with Couchbase, a NoSQL Database” (PDF). Cisco Systems. 2012년 6월 18일. 2012년 8월 13일에 원본 문서 (PDF)에서 보존된 문서. 2016년 10월 7일에 확인함.
  11. ↑ “Couchbase Open Source Projects”. 《Couchbase web site》. 2016년 10월 7일에 확인함.
  12. ↑ “Couchbase Server Editions”. Couchbase. 2012년 12월 27일에 원본 문서에서 보존된 문서. 2012년 12월 7일에 확인함.
  13. ↑ Andy Slater (2015년 3월 24일). “Ssssh! don't tell anyone but Couchbase is a serious contender: Couchbase Live Europe 2015”. 2018년 2월 13일에 확인함.
  14. ↑ “DB-Engines: Couchbase including Mobile”. 《DB-Engines》. 2013년 7월 29일에 원본 문서에서 보존된 문서. 2021년 6월 29일에 확인함.
  15. ↑ “Lite | Couchbase”. 《www.couchbase.com》. 2020년 5월 11일에 확인함.
  16. ↑ “Sync Gateway Couchbase”. 《DB-Engines》. 2013년 7월 29일에 원본 문서에서 보존된 문서. 2021년 6월 29일에 확인함.
  17. ↑ “Vector Search | Couchbase”. 《www.couchbase.com》.
  18. ↑ Jaquier, Yannick (2016년 9월 27일). “Couchbase server as a Memcached cluster (part 2)” (미국 영어). 《IT World》. 2022년 2월 9일에 확인함.
  19. ↑ “Introduction to Couchbase - NoSQL Document Database” (영어). 《Today Software Magazine》. 2022년 2월 9일에 확인함.
  20. ↑ “Couchbase Mobile” (영어). 《DEV Community》. 2022년 2월 6일. 2022년 2월 9일에 확인함.
  21. ↑ “How Northwestern's Catalyst Lab scales healthy behavior program with Couchbase” (미국 영어). 《VentureBeat》. 2021년 12월 31일. 2022년 2월 9일에 확인함.
  22. ↑ “Amadeus Loyalty wins the Couchbase Community Award under the Cloud Computing Category”. 《Amadeus IT Group》. 2022년 1월 20일.
  23. ↑ Michael Kehoe (2017년 12월 6일). “Couchbase Ecosystem at LinkedIn” (영어). 《engineering.linkedin.com》. 2022년 2월 9일에 확인함.
  24. ↑ Inc, Gartner. “Top Couchbase Competitors and Alternatives - Gartner 2022 - Cloud Database Management Systems”. 《Gartner》. 2022년 2월 9일에 확인함.[깨진 링크(과거 내용 찾기)]
  25. ↑ “MongoDB to Couchbase: An Introduction to Developers and Experts - DZone Database” (영어). 《dzone.com》. 2022년 2월 9일에 확인함.

참고 문헌

외부 링크