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

SQL 이외의 데이터베이스에는 널리 사용되는 세 가지 유형이 있습니다.

  • 키 / 값 : Redis, Tokyo Cabinet, Memcached
  • ColumnFamily : Cassandra, HBase
  • 문서 : MongoDB, CouchDB

나는 그다지 이해하지 못한 채 그것에 대해 긴 블로그를 읽었습니다.

저는 관계형 데이터베이스를 알고 있으며 MongoDB / CouchDB와 같은 문서 기반 데이터베이스에 익숙합니다.

누군가 목록에있는 이들과 두 전자의 주요 차이점이 무엇인지 말해 줄 수 있습니까?



답변

주요 차이점은 데이터 모델과 쿼리 기능입니다.

키-값 저장소

첫 번째 유형은 매우 간단하며 추가 설명이 필요하지 않을 것입니다.

데이터 모델 : 키-값 저장소 그 이상

있지만 Cassandra와 같은 데이터베이스의 올바른 이름에 대해 약간의 논쟁 저는이를 column- familystore라고 부르고 싶습니다 . 키-값 쌍은 Cassandra의 필수 부분이지만, 이것에만 국한되지 않습니다. 키-값 쌍을 중첩 할 수 있으므로 키가 여러 하위 키-값 쌍을 참조 할 수 있습니다.

하지만 키-값 쌍을 무기한 중첩 할 수는 없습니다. 3 단계 (열 패밀리) 또는 4 단계 중첩 (수퍼 컬럼 패밀리)으로 제한됩니다. column family라는 용어가 종을 울리지 않는 경우 WTF는 SuperColumn 기사입니다. Cassandra의 데이터 모델에 대한 좋은 설명입니다.

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

질의

컬럼 패밀리 스토어는 키로 만 쿼리하거나 맵 축소 기능을 작성하여 쿼리 할 수 ​​있다고 생각합니다. SQL 데이터베이스 에서처럼 값을 쿼리 할 수 ​​없습니다. 애플리케이션에 더 복잡한 쿼리가 필요한 경우 애플리케이션은 원하는 데이터에 액세스하기 위해 인덱스를 만들고 유지 관리해야합니다.

문서 데이터베이스는 키별 쿼리 및 맵 축소 기능도 지원하지만 “게시물이 10 개 이상인 모든 사용자에게 제공”과 같은 기본 쿼리를 값별로 수행 할 수도 있습니다. 문서 데이터베이스는 이러한 방식으로 더 유연합니다.


답변

Ayende 는 키-값과 문서 데이터베이스의 차이점에 대해 좋은 설명을했습니다.

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


답변