2013-05-07 4 views
8

Apache Cassandra은 샤딩을 지원합니까?카산드라는 샤딩을 지원합니까?

이 질문은 사소한 것처럼 보일 수도 있음을 사과하지만 답변을 찾지 못하는 것 같습니다. 나는 카산드라가 부분적으로 GAE의 빅 테이블 (Big Table)을 모델로 만들어 졌다고 읽었습니다. 그러나 현재 카산드라에서 찾은 문서의 대부분은 카산드라가 여러 컴퓨터에서 가로로 데이터를 분할하지 않는다는 것을 암시하는 것으로 보입니다. 오히려 많은 많은 중복 컴퓨터를 지원합니다. 이것은 카산드라가 고 가용성 읽기에 적합 함을 암시하지만, 쓰기 볼륨이 매우 높아진다면 결국 고장이 날 것입니다.

답변

13

카산드라는 노드를 분할합니다 (분할 할 수없는 경우 확장 할 수 없기 때문에). 카산드라 클러스터의 모든 데이터는 "링"으로 나뉘며 링의 각 노드는 하나 이상의 키 범위를 담당합니다. 파티셔너 (예 : 무작위, 정렬 됨) 및 요구 사항에 따라 키/열을 복제해야하는 링의 노드 수를 제어 할 수 있습니다.

여기에는 대략적인 개요가 포함되어 있습니다. Basic architecture

또한 Dynamo 백서를 읽는 것이 좋습니다. 카산드라가 여러면에서 디나모와 다르긴하지만, 개념적으로 카산드라는 같은 뿌리에서 비롯된 것입니다. 그것을 확인하십시오 : Dynamo White Paper

+0

좋아요, 중요한 질문 : Cassandra는 Olog (n) 시간에보다 크고 작음 연산자를 사용하여 쿼리 할 수 ​​있습니까? –

+0

이것은 임의 또는 정렬 된 파티션을 사용했는지 여부에 달려 있습니다. 무작위 분할자는 노드 전체에 균등하게 분배하므로 범위 쿼리가 데이터를 검색하기 위해 대부분의/모든 노드를 히트해야 할 가능성이 있습니다. 아마도 O (n) 일 수 있습니다. Ordered Partitioner를 사용하면 Cassandra가 질의 할 노드를 정확하게 결정할 수 있으며 그 사이에있는 링의 모든 것을 반환 할 수 있습니다. 그러나 이것은 데이터 분포가 균등 한 (즉, 핫스팟) 비용으로 수행됩니다. 범위 쿼리를 수행 할 수있는 방법이 있습니다 (예 : 행 키가 열인 고유 색인 작성). 이것은 자체적으로 또 다른 질문/토론을 보증합니다. –

+0

분할 된 데이터가 모든 노드 (복제를 위해 설정된 노드)에 복제됩니까? – user3587180

-3

예, 카산드라는 샤딩을 지원하지만 자체 방식으로 지원합니다.

Mongodb에서 각 보조 노드는 기본 노드의 전체 데이터를 포함하지만 Cassandra에서는 각 보조 노드가 데이터의 일부 핵심 파티션만을 유지해야합니다.

+7

[* 복제 (중복에 대한 데이터의 전체 복사본을 포함 secondaries 어디) MongoDB [* 복제 *] *] (http://docs.mongodb.org/manual/sharding/) (기계 클러스터에서 논리 데이터베이스 파티션하기). 일반적으로 샤딩을하는 경우 각 샤드에 복제 세트가 놓이기를 원하지만 두 개념은 실제로 직교합니다. – Stennie

관련 문제