mongodb 구조 - 문서 기반 데이터베이스와 키 / 값 기반 데이터베이스의 차이점은 무엇입니까?




설치 오류 (3)

나는 비 SQL 데이터베이스의 세 가지 다른 인기있는 유형이 있다는 것을 알고있다.

  • 키 / 값 : Redis, Tokyo Cabinet, Memcached
  • ColumnFamily : 카산드라, HBase
  • 문서 : MongoDB, CouchDB

나는 그것에 대해 너무 많이 이해하지 않고 긴 블로그를 읽었습니다.

관계형 데이터베이스에 대해 알고 있으며 MongoDB / CouchDB와 같은 문서 기반 데이터베이스를 사용하고 있습니다.

누군가가이 목록과 2 명의 주요 차이점을 알 수 있습니까?


Answers

가장 큰 차이점은 데이터 모델과 쿼리 기능입니다.

키 - 값 저장소

첫 번째 유형은 매우 간단하며 더 이상의 설명이 필요하지 않을 수도 있습니다.

데이터 모델 : 키 - 값 스토어 이상

카산드라 (Cassandra)와 같은 데이터베이스의 정확한 이름에 대해 논쟁 이 있지만, 필자 는 컬럼 가족 상점 이라고 부릅니다. 키 - 값 쌍은 카산드라의 필수적인 부분이지만, 그 자체 만이 아닙니다. 키 - 값 쌍을 중첩 할 수 있으므로 키는 여러 하위 키 - 값 쌍을 나타낼 수 있습니다.

키 - 값 쌍을 무기한 중첩시킬 수는 없습니다. 세 가지 수준 (열 패밀리) 또는 네 가지 수준의 중첩 (수퍼 열 패밀리)로 제한됩니다. 용어 열 패밀리가 종을 울리지 않는 경우 WTF가 SuperColumn 기사 라는 것을 확인 하십시오. 이는 카산드라의 데이터 모델에 대한 좋은 설명입니다.

CouchDB 및 MongoDB와 같은 문서 데이터베이스 는 전체 문서를 JSON 객체 형식으로 저장 합니다 . 이러한 객체를 중첩 된 키 - 값 쌍으로 생각할 수 있습니다. Cassandra와는 달리 키 - 값 쌍을 원하는만큼 중첩시킬 수 있습니다. 또한 JSON은 배열을 지원하고 문자열, 숫자 및 부울 값과 같은 다양한 데이터 유형을 이해합니다.

쿼리하기

컬럼 - 패밀리 저장소는 키 또는지도 - 축소 기능을 작성하여 쿼리 할 수 ​​있다고 생각합니다. SQL 데이터베이스에서와 같이 값을 조회 할 수 없습니다. 응용 프로그램에 더 복잡한 쿼리가 필요한 경우 응용 프로그램은 원하는 데이터에 액세스하기 위해 인덱스를 만들고 유지 관리해야합니다.

문서 데이터베이스는 키 및지도 - 축소 기능을 통한 쿼리를 지원하지만 "10 개 이상의 게시물을 가진 모든 사용자에게 제공"과 같은 가치있는 기본 쿼리를 수행 할 수도 있습니다. 이러한 방식으로 문서 데이터베이스가보다 유연합니다.


Ayende 는 Key-Value와 Document 데이터베이스의 차이점에 대해 설명했습니다.

문서 데이터베이스는 하나의 큰 예외가있는 핵심 / 가치 저장소입니다. 문서 DB는 blob을 저장하는 대신 데이터베이스가 이해할 수 있는 형식 (예 : JSON, XML 등)으로 데이터를 저장 해야합니다. 대부분의 doc dbs에서는 이제 문서 데이터에 대한 쿼리허용 할 수 있습니다.


CouchDB는 문서 저장소입니다. 문서 (JSON 객체)를 그 안에두고 뷰 (인덱스)를 정의합니다. 물체는 잠재적으로 심층 구조와 임의로 복잡 할 수 있습니다. 또한 일관된 스키마를 따르는 데 제약을받지 않습니다.

카산드라는 거친 테이블 키 값 저장소입니다. 행을 저장하며 각 행에는 값이있는 패밀리로 그룹화 된 명명 된 열 집합이 있습니다. BigTable과 아주 비슷하게 들립니다. BigTable은 각 행이 (SQL 데이터베이스와 달리) 동일한 구조를 가질 것을 요구하지 않습니다. 값에는 구조가있을 수 있지만 이러한 종류의 저장소는 그것에 대해 아무 것도 모릅니다. 문자열 / 바이트 시퀀스 일뿐입니다.

예, 둘 다 비 관계형 데이터베이스이며 적용 가능성에 상당한 중복이있을 수 있지만 분명히 다른 데이터 구성 모델이 있습니다. 각각은 아마도 다른 모델을 에뮬레이트 할 수 있지만, 각 모델은 서로 다른 일련의 문제에 가장 잘 맞을 것입니다.







mongodb couchdb cassandra redis non-relational-database