CouchDB-소개
데이터베이스 관리 시스템은 데이터 저장 및 검색을위한 메커니즘을 제공합니다. 데이터베이스 관리 시스템에는 RDBMS (관계형 데이터베이스 관리 시스템), OLAP (온라인 분석 처리 시스템) 및 NoSQL의 세 가지 주요 유형이 있습니다.
RDBMS
RDBMS는 관계형 데이터베이스 관리 시스템을 나타냅니다. RDBMS는 SQL 및 MS SQL Server, IBM DB2, Oracle, MySQL 및 Microsoft Access와 같은 모든 최신 데이터베이스 시스템의 기반입니다.
관계형 데이터베이스 관리 시스템 (RDBMS)은 EF Codd가 도입 한 관계형 모델을 기반으로하는 데이터베이스 관리 시스템 (DBMS)입니다.
RDBMS의 데이터는 다음과 같은 데이터베이스 개체에 저장됩니다. tables. 테이블은 관련 데이터 항목의 모음이며 열과 행으로 구성됩니다. 구조화 된 데이터 만 저장합니다.
OLAP
OLAP (Online Analytical Processing Server)는 다차원 데이터 모델을 기반으로합니다. 이를 통해 관리자와 분석가는 정보에 대한 빠르고 일관된 대화식 액세스를 통해 정보에 대한 통찰력을 얻을 수 있습니다.
NoSQL 데이터베이스
NoSQL 데이터베이스 (Not Only SQL이라고도 함)는 관계형 데이터베이스에서 사용되는 테이블 형식 관계 이외의 데이터를 저장하고 검색하는 메커니즘을 제공하는 데이터베이스입니다. 이러한 데이터베이스는 스키마가없고, 쉬운 복제를 지원하고, 간단한 API를 가지고 있으며, 궁극적으로 일관성이 있으며, 방대한 양의 데이터 (빅 데이터)를 처리 할 수 있습니다.
NoSQL 데이터베이스의 주요 목적은 다음과 같습니다.
- 디자인의 단순성,
- 수평 확장 및
- 가용성을 더 세밀하게 제어합니다.
NoSQL 데이터베이스는 관계형 데이터베이스에 비해 다른 데이터 구조를 사용합니다. NoSQL에서 일부 작업을 더 빠르게 만듭니다. 주어진 NoSQL 데이터베이스의 적합성은 해결해야하는 문제에 따라 다릅니다. 이러한 데이터베이스는 구조화 된 데이터와 오디오 파일, 비디오 파일, 문서 등과 같은 구조화되지 않은 데이터를 모두 저장합니다. 이러한 NoSQL 데이터베이스는 세 가지 유형으로 분류되며 아래에 설명되어 있습니다.
Key-value Store− 이러한 데이터베이스는 키-값 쌍으로 데이터를 저장하도록 설계되었으며 이러한 데이터베이스에는 스키마가 없습니다. 이러한 데이터베이스에서 각 데이터 값은 인덱싱 된 키와 해당 키의 값으로 구성됩니다.
예-BerkeleyDB, Cassandra, DynamoDB, Riak.
Column Store−이 데이터베이스에서 데이터는 데이터 열로 그룹화 된 셀에 저장되며 이러한 열은 열 패밀리로 추가 그룹화됩니다. 이러한 column family는 여러 열을 포함 할 수 있습니다.
예-BigTable, HBase 및 HyperTable.
Document Store− 이는 "문서"에 더 복잡한 데이터가 포함 된 키-값 저장소의 기본 아이디어에서 개발 된 데이터베이스입니다. 여기에서 각 문서에는 문서를 검색하는 데 사용되는 고유 키가 할당됩니다. 이는 반 구조화 된 데이터라고도하는 문서 지향 정보를 저장, 검색 및 관리하기 위해 설계되었습니다.
예-CouchDB 및 MongoDB.
CouchDB는 무엇입니까?
CouchDB는 Apache Software Foundation에서 개발 한 오픈 소스 데이터베이스입니다. 초점은 웹을 수용하는 사용 편의성에 있습니다. NoSQL 문서 저장소 데이터베이스입니다.
JSON을 사용하여 데이터 (문서)를 저장하고 Java 스크립트를 쿼리 언어로 사용하여 문서를 변환하고 api가 문서에 액세스하기위한 http 프로토콜을 사용하며 웹 브라우저로 인덱스를 쿼리합니다. 2005 년에 출시 된 멀티 마스터 애플리케이션으로 2008 년에 아파치 프로젝트가되었습니다.
왜 CouchDB인가?
CouchDB에는 HTTP 기반 REST API가있어 데이터베이스와 쉽게 통신 할 수 있습니다. 그리고 HTTP 리소스 및 메서드 (GET, PUT, DELETE)의 간단한 구조는 이해하고 사용하기 쉽습니다.
유연한 문서 기반 구조로 데이터를 저장하므로 데이터 구조에 대해 걱정할 필요가 없습니다.
사용자에게는 정보를 쿼리, 결합 및 필터링 할 수있는 강력한 데이터 매핑이 제공됩니다.
CouchDB는 데이터베이스와 머신간에 데이터를 복사, 공유 및 동기화 할 수있는 사용하기 쉬운 복제를 제공합니다.
데이터 모델
데이터베이스는 CouchDB의 가장 바깥 쪽 데이터 구조 / 컨테이너입니다.
각 데이터베이스는 독립적 인 문서의 모음입니다.
각 문서는 자체 데이터와 자체 포함 스키마를 유지합니다.
문서 메타 데이터에는 개정 정보가 포함되어있어 데이터베이스 연결이 끊어진 동안 발생한 차이점을 병합 할 수 있습니다.
CouchDB는 쓰기 중에 데이터베이스 필드를 잠글 필요가 없도록 다중 버전 동시성 제어를 구현합니다.
CouchDB의 특징 : 콘텐츠 줄이기
문서 보관
CouchDB는 문서 저장소 NoSQL 데이터베이스입니다. 고유 한 이름으로 문서를 저장하는 기능을 제공하고 데이터베이스 문서를 읽고 업데이트 (추가, 편집, 삭제)하기위한 RESTful HTTP API라는 API도 제공합니다.
CouchDB에서 문서는 데이터의 기본 단위이며 메타 데이터도 포함합니다. 문서 필드는 고유하게 이름이 지정되고 다양한 유형 (텍스트, 숫자, 부울, 목록 등)의 값을 포함하며 텍스트 크기 또는 요소 수에 대한 제한이 없습니다.
문서 업데이트 (추가, 편집, 삭제)는 Atomicity를 따릅니다. 즉, 완전히 저장되거나 전혀 저장되지 않습니다. 데이터베이스에는 부분적으로 저장되거나 편집 된 문서가 없습니다.
Json 문서 구조
{
"field" : "value",
"field" : "value",
"field" : "value",
}
ACID 속성
CouchDB는 기능 중 하나로 ACID 속성을 포함합니다.
일관성-CouchDB의 데이터가 한 번 커밋되면이 데이터는 수정되거나 덮어 쓰여지지 않습니다. 따라서 CouchDB는 데이터베이스 파일이 항상 일관된 상태를 유지하도록합니다.
MVCC (Multi-Version Concurrency Control) 모델은 CouchDB 읽기에 사용됩니다.이 모델은 클라이언트가 읽기 작업의 시작부터 끝까지 데이터베이스의 일관된 스냅 샷을 볼 수 있기 때문입니다.
문서가 업데이트 될 때마다 CouchDB는 데이터를 디스크에 플러시하고 업데이트 된 데이터베이스 헤더는 두 개의 연속적이고 동일한 청크로 기록되어 파일의 처음 4k를 구성한 다음 디스크에 동 기적으로 플러시됩니다. 플러시 중 부분 업데이트는 삭제됩니다.
헤더를 커밋하는 동안 오류가 발생하면 이전에 동일한 헤더의 남아있는 복사본이 유지되어 이전에 커밋 된 모든 데이터의 일관성을 보장합니다. 헤더 영역을 제외하고는 충돌 또는 정전 후 일관성 검사 또는 수정이 필요하지 않습니다.
압축
데이터베이스 파일의 공간이 일정 범위 이상으로 낭비 될 때마다 모든 활성 데이터가 새 파일에 복사 (복제)됩니다. 복사 프로세스가 완전히 완료되면 이전 파일이 삭제됩니다. 이 모든 것은 압축 프로세스에 의해 수행됩니다. 압축하는 동안 데이터베이스는 온라인 상태를 유지하며 모든 업데이트 및 읽기가 성공적으로 완료 될 수 있습니다.
견해
CouchDB의 데이터는 개별 암시 적 구조에 유연하게 적용되는 반 구조화 된 문서에 저장되지만 데이터 저장 및 공유를위한 간단한 문서 모델입니다. 다양한 방식으로 데이터를 보려면 테이블로 분해되지 않은 데이터를 필터링, 구성 및보고하는 방법이 필요합니다.
이 문제를 해결하기 위해 CouchDB는 뷰 모델을 제공합니다. 뷰는 데이터베이스의 문서를 집계하고보고하는 방법이며 데이터베이스 문서를 집계, 결합 및보고하기 위해 주문형으로 구축됩니다. 뷰는 동적으로 작성되고 기본 문서에 영향을주지 않기 때문에 원하는만큼 동일한 데이터의 다양한 뷰 표현을 가질 수 있습니다.
역사
- CouchDB는 Erlang 프로그래밍 언어로 작성되었습니다.
- 그것은 2005 년 Damien Katz에 의해 시작되었습니다.
- CouchDB는 2008 년에 Apache 프로젝트가되었습니다.
CouchDB의 현재 버전은 1.61입니다.