Apache CouchDB
Apache CouchDB원저작자 | Damien Katz, Jan Lehnardt, Naomi Slater, Christopher Lenz, J. Chris Anderson, Paul Davis, Adam Kocoloski, Jason Davies, Benott Chesneau, 필리프 마나, 로버트 뉴슨 |
---|---|
개발자 | Apache 소프트웨어 재단 |
초기 릴리즈 | 전( |
안정된 릴리스 | 3.2.2[1] / 2022년 4월 ; 전 ( ) |
저장소 | |
기입처 | Erlang, JavaScript, C, C++ |
운영 체제 | 크로스 플랫폼 |
유형 | 문서 지향 데이터베이스 |
면허증. | Apache 라이센스 2.0 |
웹 사이트 | couchdb |
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.0 및 4절 BSD 라이선스 |
스파이더몽키 | SpiderMonkey는 Mozilla Foundation이 관리하는 고성능 JavaScript 엔진입니다.인터프리터, JIT 컴파일러 및 가비지 컬렉터가 포함되어 있습니다. | MPL 2.0 |
「 」를 참조해 주세요.
레퍼런스
- ^ https://github.com/apache/couchdb/releases/tag/3.2.2 를 참조해 주세요.
- ^ Apache Software Foundation. "Apache CouchDB". Retrieved 15 April 2012.
- ^ Smith, Jason. "What is the CouchDB replication protocol? Is it like Git?". StackOverflow. Stack Exchange. Retrieved 14 April 2012.
- ^ "Exploring CouchDB". Developer Works. IBM. March 31, 2009. Retrieved September 30, 2016.
- ^ Apache 메일링 리스트는 mail-archives.apache.org에서 발표됩니다.
- ^ 문제: 제안된 해결 방법: mail-archives.apache.org에서 CouchDB TLP를 확립합니다.
- ^ "CouchDB NoSQL Database Ready for Production Use", PC World of 2010년 7월호 기사
- ^ Katz, Damien. "The future of CouchDB". Retrieved 15 April 2012.
- ^ Slater, Noah. "Welcome BigCouch". Retrieved 25 July 2013.
- ^ "'2.0'". 20 September 2016. Retrieved 13 January 2017.
- ^ CouchDB, 기술 개요 2011년 10월 20일 Wayback Machine에서 아카이브
- ^ "CouchDB The Definitional Guide"의 "Welcome to Futon"
- ^ Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase 비교 (Kristöf Kovacs)
- ^ "Why Large Hadron Collider Scientists are Using CouchDB". ReadWrite. 2010-08-26. Retrieved 2022-03-29.
- ^ iDAT, Red Cross Code, 2021-07-31, retrieved 2022-03-29
- ^ "Database-Deep-Dives-CouchDB". www.ibm.com. Retrieved 2022-03-29.
- ^ "Database-Deep-Dives-CouchDB". www.ibm.com. Retrieved 2022-03-29.
- ^ "United Airlines Streamlines Operations With Couchbase Case Study". www.couchbase.com. Retrieved 2022-03-29.
- ^ "CouchDB in the wild" 제품 웹의 Wayback Machine 기사에 2017-07-20 아카이브됨, CouchDB를 사용한 소프트웨어 프로젝트 및 웹사이트 목록
- ^ 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.
- ^ "npm-registry-couchapp". GitHub. npm. 17 June 2015. Retrieved 7 January 2016.
- ^ BBC의 CouchDB는 폴트 톨러런스, 확장성이 뛰어난 멀티 데이터 센터의 주요 가치 스토어입니다.
- ^ Elliot Murphy (캐노니컬) Wayback Machine to the CouchDB-Devel 목록으로 2011-05년 아카이브된 이메일
- ^ Ubuntu One에서 CouchDB를 삭제하는 표준(Slashdot)
- ^ "Protogrid - Über uns".
- ^ wiki.apache.org의 Wayback Machine에서 2008-10-20에 아카이브된 서버 매뉴얼 보기
참고 문헌
- Anderson, J. Chris; Slater, Noah; Lehnardt, Jan (November 15, 2009), CouchDB: The Definitive Guide (1st ed.), O'Reilly Media, p. 300, ISBN 978-0-596-15816-3
- Lennon, Joe (December 15, 2009), Beginning CouchDB (1st ed.), Apress, p. 300, ISBN 978-1-4302-7237-3, archived from the original on December 5, 2010, retrieved November 1, 2009
- Holt, Bradley (March 7, 2011), Writing and Querying MapReduce Views in CouchDB (1st ed.), O'Reilly Media, p. 76, ISBN 978-1-4493-0312-9
- Holt, Bradley (April 11, 2011), Scaling CouchDB (1st ed.), O'Reilly Media, p. 72, ISBN 978-1-4493-0343-3
- Brown, MC (October 31, 2011), Getting Started with CouchDB (1st ed.), O'Reilly Media, p. 50, ISBN 978-1-4493-0755-4
- Thompson, Mick (August 2, 2011), Getting Started with GEO, CouchDB, and Node.js (1st ed.), O'Reilly Media, p. 64, ISBN 978-1-4493-0752-3
외부 링크
- 공식 웹사이트
- CouchDB: 최종 가이드
- 완전한 HTTP API 참조
- CouchDB와 통신하기 위한 간단한 PHP5 라이브러리
- Java용 비동기 CouchDB 클라이언트
- Scala용 비동기 CouchDB 클라이언트
- Lehnardt, Jan (2008). "Couch DB at 10,000 feet". Erlang eXchange 2008. Retrieved 15 April 2012.
- Lenhardt, Jan (2009). "CouchDB for Erlang Developers". Erlang Factory London 2009. Archived from the original on 19 June 2011. Retrieved 15 April 2012.
- Katz, Damien (January 2009). "CouchDB and Me". RubyFringe. InfoQ. Archived from the original on 27 April 2011. Retrieved 15 April 2012.