Apache CouchDB

Apache CouchDB
Apache CouchDB
Apache CouchDB logo.svg
Apache CouchDB v2.1.1 Fauxton Console.png
CouchDB의 Fauxton 관리 인터페이스, 사용자 데이터베이스
원저작자Damien Katz, Jan Lehnardt, Naomi Slater, Christopher Lenz, J. Chris Anderson, Paul Davis, Adam Kocoloski, Jason Davies, Benott Chesneau, 필리프 마나, 로버트 뉴슨
개발자Apache 소프트웨어 재단
초기 릴리즈2005년, 17년 전(2005년)
안정된 릴리스
3.2.2[1] / 2022년 4월 26일; 3개월 전 (2022년 4월 26일)
저장소
기입처Erlang, JavaScript, C, C++
운영 체제크로스 플랫폼
유형문서 지향 데이터베이스
면허증.Apache 라이센스 2.0
웹 사이트couchdb.apache.org Edit this on Wikidata

Apache CouchDB는 Erlang에 구현된 오픈 소스 문서 지향 NoSQL 데이터베이스입니다.

CouchDB는 여러 형식과 프로토콜을 사용하여 데이터를 저장, 전송 및 처리합니다.JSON을 사용하여 데이터를 저장하고 JavaScript를 쿼리 언어로 사용하며 [2]MapReduce를 사용하여 HTTP를 사용하여 API를 저장합니다.

CouchDB는 2005년에 처음 출시되어 2008년에 Apache Software Foundation 프로젝트가 되었습니다.

관계형 데이터베이스와 달리 CouchDB 데이터베이스는 데이터 및 관계를 테이블에 저장하지 않습니다.대신, 각 데이터베이스는 독립 문서의 집합입니다.각 문서는 자체 데이터와 자체 포함 스키마를 유지관리합니다.응용 프로그램은 사용자의 휴대 전화에 저장된 데이터베이스와 서버에 저장된 데이터베이스와 같은 여러 데이터베이스에 액세스할 수 있습니다.문서 메타데이터에는 데이터베이스 연결이 끊긴 동안 발생한 차이를 병합할 수 있는 개정 정보가 들어 있습니다.

CouchDB는 다중 버전 동시성 제어(MVCC) 형식을 구현하여 쓰기 중에 데이터베이스 파일을 잠그지 않습니다.경합은 어플리케이션에 맡겨져 있습니다.일반적으로 충돌을 해결하려면 먼저 데이터를 문서 중 하나에 병합한 다음 오래된 [3]문서를 삭제합니다.

기타 기능에는 궁극적인 일관성을 갖는 문서 수준의 ACID 의미론, (증분) MapReduce 및 (증분) 복제 등이 있습니다.CouchDB의 특징 중 하나는 멀티 마스터 복제입니다. 이를 통해 여러 머신으로 확장하여 고성능 시스템을 구축할 수 있습니다.Fauxton(이전의 Futon)이라고 하는 빌트인 Web 애플리케이션은, 관리에 도움이 됩니다.

역사

Couch신뢰할 수 없는 일반 [4]하드웨어 클러스터의 약자입니다.CouchDB 프로젝트는 IBM의 Lotus Notes 개발자였던 Damien Katz에 의해 2005년 4월에 만들어졌습니다.그는 거의 2년 동안 이 프로젝트에 자금을 자체 조달하여 GNU General Public License에 따라 오픈 소스 프로젝트로 출시하였습니다.

2008년 2월에 Apache Incubator 프로젝트가 되었고 대신 [5]Apache License로 제공되었습니다.몇 달 후,[6] 그것은 최상위 프로젝트로 졸업했습니다.그 결과 2010년 [7]7월에 첫 번째 안정판이 출시되었습니다.

2012년 초, Katz는 프로젝트를 그만두고 Couchbase [8]Server에 집중했습니다.

Katz가 떠난 이후 Apache CouchDB 프로젝트는 계속 진행되어 2012년 4월에 1.2개, 2013년 4월에 1.3개가 출시되었습니다.2013년 7월 CouchDB 커뮤니티는 Cloudant의 CouchDB 클러스터 버전BigCouch의 코드 베이스를 Apache [9]프로젝트에 통합했습니다.BigCouch 클러스터링 프레임워크는 Apache CouchDB의 [10]현재 릴리스에 포함되어 있습니다.

네이티브 클러스터링은 버전 2.0.0에서 지원됩니다.또한 새로운 망고 쿼리 서버는 JavaScript나 MapReduce 없이 CouchDB 쿼리를 실행할 수 있는 간단한 JSON 기반 방법을 제공합니다.

주요 기능

ACID의 의미론
CouchDB는 ACID [11]시멘틱스를 제공합니다.를 위해 다중 버전 동시성 제어(Multi-Version Concurrency Control) 형식을 구현함으로써 CouchDB는 충돌 없이 대량의 동시 구독자와 작성자를 처리할 수 있습니다.
오프라인용으로 구축
CouchDB는 기기가 다시 온라인 상태가 되었을 때 오프라인으로 전환하여 데이터 동기화를 처리할 수 있는 장치(스마트폰 등)에 복제할 수 있습니다.
레플리케이션을 사용한 분산 아키텍처
CouchDB는 양방향 복제(또는 동기화) 및 오프라인 작업을 염두에 두고 설계되었습니다.즉, 여러 복제본이 동일한 데이터의 복사본을 가지고 수정한 후 나중에 변경사항을 동기화할 수 있습니다.
문서 저장소
CouchDB는 데이터를 JSON으로 표현되는 하나 이상의 필드/값 쌍으로 "문서"로 저장합니다.필드 값은 문자열, 숫자, 날짜 등 간단한 것일 수 있지만 순서 목록 및 연관 배열도 사용할 수 있습니다.CouchDB 데이터베이스의 모든 문서는 고유한 ID를 가지며 필요한 문서 스키마가 없습니다.
최종적인 일관성
CouchDB는 가용성과 파티션 허용성을 모두 제공할 수 있도록 궁극적인 일관성을 보장합니다.
뷰 및 인덱스 맵/축소
저장된 데이터는 보기를 사용하여 구성됩니다.CouchDB에서 각 뷰는 /축소 작업의 Map half 역할을 하는 JavaScript 함수에 의해 구성됩니다.함수는 문서를 가져와서 반환되는 단일 값으로 변환합니다.CouchDB는 보기를 색인화하고 문서가 추가, 제거 또는 업데이트될 때 해당 색인을 최신 상태로 유지할 수 있습니다.
HTTP API
모든 항목에는 HTTP를 통해 공개되는 고유한 URI가 있습니다.모든 리소스에 대한 4가지 기본 CRUD(Create, Read, Update, Delete) 조작에는 HTTP 메서드 POST, GET, PUT 및 DELETE가 사용됩니다.

CouchDB는 Futon이라는 [12]웹을 통해 액세스할 수 있는 내장 관리 인터페이스도 제공합니다.

사용 사례 및 운영 환경 도입

CouchDB의 복제 및 동기화 기능은 네트워크 연결이 보장되지 않고 애플리케이션이 오프라인에서 계속 작동해야 하는 모바일 장치에서 사용하는 데 이상적입니다.

CouchDB는 사전 정의된 쿼리를 실행할 수 있고 버전 관리가 중요한 데이터(예: CRM, CMS 시스템)가 축적되거나 때때로 변경되는 애플리케이션에 매우 적합합니다.마스터 마스터 복제는 특히 여러 사이트에 쉽게 [13]도입할 수 있는 흥미로운 기능입니다.

사용자

CouchDB 사용자는 다음과 같습니다.

  • CERN은 대형 강입자 가속기에서 [14]CouchDB를 데이터 관리 시스템의 데이터베이스로 사용합니다.
  • Red Cross는 애플리케이션 iDAT를 사용하여 재해 지역에서 전자적으로 사례 작업을 완료합니다.여기서 CouchDB는 다중 노드 피어 투 피어 오프라인 우선 [15]데이터베이스로 사용됩니다.
  • IBM 클라우드 서비스는 CouchDB를 [16]기반으로 합니다.
  • 유나이티드 항공은 3,000대 이상의 비행기에서 기내 엔터테인먼트 시스템에 CouchDB를 사용합니다.[17][18]
  • Amadeus IT Group, 일부 백엔드 [citation needed]시스템용.
  • Credit Suisse, 시장 프레임워크를 [19][better source needed]위해 상품 부서에서 내부적으로 사용합니다.
  • 소셜 플랫폼(웹 및 애플리케이션)[citation needed]을 위한 Meebo.Meebo는 Google에 인수되어 대부분의 제품이 2012년 [20]7월 12일에 종료되었습니다.
  • npm은 패키지 [21]레지스트리의 복제 데이터베이스로 CouchDB를 사용합니다.
  • Sophos, 그들의 백엔드 [citation needed]시스템들 중 일부에.
  • BBC, 동적 CMS-Platform용.[22]
  • Canonical은 2009년 동기 서비스 "Ubuntu One"[23]에 사용하기 시작했지만 2011년 [24]11월부터 사용을 중단했다.
  • CANAL+ 해외의 국제 온디맨드 플랫폼용 CANAL+.
  • 신속한 애플리케이션 개발 프레임워크를 위한 스토리지 백엔드로서의 Protogrid

데이터 조작: 문서 및 보기

CouchDB는 JSON 문서 모음을 관리합니다.문서는 뷰를 통해 정리됩니다.뷰는 집계 함수로 정의되며 필터는 MapReduce와 마찬가지로 병렬로 계산됩니다.

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

HTTP를 통한 데이터 액세스

응용 프로그램은 HTTP를 통해 CouchDB와 상호 작용합니다.다음으로 명령줄 유틸리티인 cURL을 사용한 예를 몇 가지 나타냅니다.다음 예제에서는 CouchDB가 포트 5984의 localhost(127.0.0.1)에서 실행되고 있다고 가정합니다.

액션. 부탁한다 대답
서버 정보 접근
curl http://102.0.0.1:5984/
{   "syslogdb": "어서 오세요",   "버전":"1.1.0" } 
Wiki라는 이름의 데이터베이스 작성
-X PUT http://127.0.0.1:5984/wiki
{"OK": 진실의} 
wiki라는 이름의 두 번째 데이터베이스를 만드는 중입니다.
-X PUT http://127.0.0.1:5984/wiki
{   "에러":"file_filename",   "이유":"데이터베이스를 만들 수 없습니다. 파일이 이미 있습니다." } 
Wiki 데이터베이스에 대한 정보 검색
컬 http://curl.0.0.1:5984/curl
{   "db_name": "실패",   "doc_count": 0,   "doc_del_count": 0,   "update_seq": 0,   "sysq_seq": 0,   "syslog_running": 거짓의,   "disk_size": 79,   "syslog_start_time": "1272453873691070",   "disk_format_version": 5 } 
데이터베이스 Wiki 삭제
-X DELETE http://127.0.0.1:5984/wiki
{"OK": 진실의} 
CouchDB에 문서 ID를 제공하도록 요청하는 문서 작성
Curl - X POST - H "Content - Type : application / json " --data \ " { text " : " Wikipedia on CouchDB " , " rating " : 5 } " \ http : // 127.0.0.1:5984 / wiki
{   "OK": 진실의,   "id": "123BAC",   "rev": "946B7D1C" } 
데이터베이스 목록을 가져오다
curl http://curl.0.0.1:5984/_all_dbs
["_오디오네이터","_사용자","실패"] 

오픈 소스 컴포넌트

CouchDB에는 기본 패키지의 일부로 다른 여러 오픈 소스 프로젝트가 포함되어 있습니다.

요소 묘사 면허증.
얼랑 Erlang은 범용 동시 프로그래밍 언어 및 런타임 시스템입니다.Erlang의 순차적 서브셋은 엄격한 평가, 단일 할당동적 타이핑을 가진 기능적 언어입니다. Apache 2.0 (릴리스 18.0 이후)
Erlang Public License(이전 출시)
ICU International Components for Unicode(ICU)는 Unicode 지원, 소프트웨어 국제화 및 소프트웨어 세계화를 위한 성숙한 C/C++Java 라이브러리의 오픈 소스 프로젝트입니다. Unicode 라이선스
j쿼리 jQuery는 JavaScript와 HTML 의 상호작용을 강조하는 경량 크로스 브라우저 JavaScript 라이브러리입니다. MIT 라이선스
OpenSSL OpenSSL은 SSL 및 TLS 프로토콜의 오픈 소스 구현입니다.코어 라이브러리(C 프로그래밍 언어로 작성)는 기본 암호화 기능을 구현하고 다양한 유틸리티 기능을 제공합니다. Apache 1.04절 BSD 라이선스
스파이더몽키 SpiderMonkey는 Mozilla Foundation이 관리하는 고성능 JavaScript 엔진입니다.인터프리터, JIT 컴파일러 및 가비지 컬렉터가 포함되어 있습니다. MPL 2.0

「 」를 참조해 주세요.

레퍼런스

  1. ^ https://github.com/apache/couchdb/releases/tag/3.2.2 를 참조해 주세요.
  2. ^ Apache Software Foundation. "Apache CouchDB". Retrieved 15 April 2012.
  3. ^ Smith, Jason. "What is the CouchDB replication protocol? Is it like Git?". StackOverflow. Stack Exchange. Retrieved 14 April 2012.
  4. ^ "Exploring CouchDB". Developer Works. IBM. March 31, 2009. Retrieved September 30, 2016.
  5. ^ Apache 메일링 리스트는 mail-archives.apache.org에서 발표됩니다.
  6. ^ 문제: 제안된 해결 방법: mail-archives.apache.org에서 CouchDB TLP를 확립합니다.
  7. ^ "CouchDB NoSQL Database Ready for Production Use", PC World of 2010년 7월호 기사
  8. ^ Katz, Damien. "The future of CouchDB". Retrieved 15 April 2012.
  9. ^ Slater, Noah. "Welcome BigCouch". Retrieved 25 July 2013.
  10. ^ "'2.0'". 20 September 2016. Retrieved 13 January 2017.
  11. ^ CouchDB, 기술 개요 2011년 10월 20일 Wayback Machine에서 아카이브
  12. ^ "CouchDB The Definitional Guide"의 "Welcome to Futon"
  13. ^ Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase 비교 (Kristöf Kovacs)
  14. ^ "Why Large Hadron Collider Scientists are Using CouchDB". ReadWrite. 2010-08-26. Retrieved 2022-03-29.
  15. ^ iDAT, Red Cross Code, 2021-07-31, retrieved 2022-03-29
  16. ^ "Database-Deep-Dives-CouchDB". www.ibm.com. Retrieved 2022-03-29.
  17. ^ "Database-Deep-Dives-CouchDB". www.ibm.com. Retrieved 2022-03-29.
  18. ^ "United Airlines Streamlines Operations With Couchbase Case Study". www.couchbase.com. Retrieved 2022-03-29.
  19. ^ "CouchDB in the wild" 제품 웹의 Wayback Machine 기사에 2017-07-20 아카이브됨, CouchDB를 사용한 소프트웨어 프로젝트 및 웹사이트 목록
  20. ^ Cutler, Kim-Mai (9 June 2012). "Meebo Gets The Classic Google Acq-hire Treatment: Most Products To Shut Down Soon". TechCrunch. AOL Inc. Retrieved 7 January 2016.
  21. ^ "npm-registry-couchapp". GitHub. npm. 17 June 2015. Retrieved 7 January 2016.
  22. ^ BBC의 CouchDB는 폴트 톨러런스, 확장성이 뛰어난 멀티 데이터 센터의 주요 가치 스토어입니다.
  23. ^ Elliot Murphy (캐노니컬) Wayback Machine to the CouchDB-Devel 목록으로 2011-05년 아카이브된 이메일
  24. ^ Ubuntu One에서 CouchDB를 삭제하는 표준(Slashdot)
  25. ^ "Protogrid - Über uns".
  26. ^ wiki.apache.org의 Wayback Machine에서 2008-10-20에 아카이브된 서버 매뉴얼 보기

참고 문헌

외부 링크