2010-07-31 3 views

답변

29

Bigtable 및 Cassandra와 같은 열 패밀리 저장소는 매우 제한된 쿼리 기능을 제공합니다. 응용 프로그램은 더 복잡한 데이터 모델을 쿼리하기 위해 인덱스를 유지 관리합니다.

문서 데이터베이스를 사용하면 키뿐만 아니라 내용을 쿼리 할 수 ​​있습니다. 또한 색인을 관리하여 응용 프로그램의 복잡성을 줄입니다.

Domain-driven design은 집합과 값 객체의 사용을 전 송합니다. As Ayende points out (복잡한) 집계는 여러 테이블이나 열 패밀리에서 정규화하지 않고 단일 문서로 저장하는 매우 자연스러운 후보입니다. 이렇게하면 지속성 계층의 복잡성이 줄어 듭니다. 또한 모든 데이터가 단일 문서에 포함되어 있기 때문에 관련 데이터가 여러 노드에 분산되어있는 가능성이 적습니다.

응용 프로그램에서 다형성 객체를 저장해야하는 경우 문서 데이터베이스도 좋은 후보입니다. 물론 이것은 Cassandra에도 저장 될 수 있지만 질의 기능은 많지 않습니다. 적어도 상자 밖에서는 안됩니다.

문서 데이터베이스를 고급스러운 스포츠카라고 생각하십시오. A부터 B까지는 전문 운전자가 필요하지 않습니다 (복잡한 응용 프로그램 읽기). 에어컨 및 편안한 좌석과 같은 기능을 갖추고 있으며 허용되는 시간에 높은 확장 성을 자랑합니다. 그러나 높은 확장 성 트랙에서 무릎 기록을 설정하려면 에 에어컨과 같은 기능이없는 전문 드라이버와 최적화 된 자동차 (예 : Cassandra)가 필요합니다.

+1

안녕하세요. 멋진 설명입니다! 내가 추가 할 수있는 유일한 것은 CouchDB가 페라리가 아니라 데이터베이스의 혼다 어코드를 목표로한다는 것입니다. 그러나 나는 그들이 서로 다른 은유라고 생각합니다. 단지 우연히 만 관련이 있습니다. – JasonSmith

9
CouchDB를의 또 다른 기능을 사용하면 문서를 수동으로 저장으로하지, 그 집계를 만들 수 있지만 (자동으로 저장된 데이터에서 파생 및 업데이트됩니다.)보기

이 파워 윈도우처럼 같이 가열 할 수 있다는 것입니다

좌석 또는 걷어차는 입체 음향.

+0

물론 자연의 부끄러운 부딪 치기 – JasonSmith