cassandra 장점 - 카산드라는 파티션 당 20 억 개의 셀을 가질 수 있지만 파티션은 무엇입니까?




설계 예제 (3)

Cassandra Wiki에서는 파티션 당 2 billion cells (rows x columns) 의 제한이 있다고합니다. 하지만 파티션이 무엇인지는 분명하지 않습니다.

열 패밀리 당 노드 당 하나의 파티션이 있어야합니다. 이는 열 패밀리의 최대 크기가 클러스터 2 billion cells * number of nodes 합니다.

아니면 Cassandra는 컬럼 패밀리의 모든 데이터를 저장하는 데 필요한만큼의 파티션을 생성합니까?

Cassandra 2.0을 사용할 수 있도록 새 프로젝트를 시작합니다.


Answers

http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/create_table_r.html : http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/create_table_r.html

복합 파티션 키 사용하기 ¶

복합 파티션 키는 여러 열로 구성된 파티션 키입니다. 여분의 괄호 세트를 사용하여 복합 파티션 키를 구성하는 열을 묶습니다. 기본 키 정의에서 중첩 된 괄호 밖의 열은 클러스터링 열입니다. 이러한 열은 검색을 용이하게하기 위해 파티션 내에 논리 집합을 형성합니다.

CREATE TABLE Cats (
  block_id uuid,
  breed text,
  color text,
  short_hair boolean,
  PRIMARY KEY ((block_id, breed), color, short_hair)
);

예를 들어, 복합 파티션 키는 block_id와 breed로 구성됩니다. 클러스터링 컬럼 인 color와 short_hair는 데이터의 클러스터링 순서를 결정합니다. 일반적으로 Cassandra는 동일한 노드에서 동일한 block_id이지만 다른 유형의 컬럼과 동일한 노드에서 동일한 block_id 및 breed를 갖는 컬럼을 저장합니다.

함축

==> 파티션은 가장 작은 복제 단위입니다 (자체적으로 sh ** 의미가 없습니다. :))

==> block_id와 breed의 모든 조합은 파티션입니다.

==> 클러스터 내의 모든 주어진 머신에서, 동일한 파티션 키를 가진 행이 모두 존재 하거나 존재하지 않을 것입니다.


CQL3의 출현과 함께 용어는 오래된 절약 용어와 약간 변경되었습니다.

원래

Create Table foo (a int , b int, c int, d int, PRIMARY KEY ((a,b),c))

CQL3 테이블을 만듭니다. a와 b의 정보는 파티션 키를 만드는 데 사용되며, 이는 정보가 상주 할 노드를 설명합니다. 이것은 20 억 개의 셀 제한에서 이야기되는 'partiton'입니다.

해당 파티션 내에서 정보는 클러스터링 키로 알려진 c로 구성됩니다. a, b 및 c를 함께 사용하여 d의 고유 값을 정의합니다. 이 경우 파티션의 셀 수는 c * d입니다. 그러므로 주어진 a와 b의 쌍에 대한이 예에서는 c와 d의 20 억 가지 조합 만있을 수 있습니다.

따라서 데이터를 모델링 할 때 기본 키가 달라져서 Cassandra에 대한 데이터가 무작위로 배포되도록해야합니다. 그런 다음 클러스터링 키를 사용하여 원하는 방식으로 데이터를 사용할 수 있는지 확인하십시오.

카스 산드라의 Datmodeling에 대한 자세한 정보는이 비디오를보십시오 . Datamodel은 죽었습니다.

편집 : 의견에서 한 가지 더 많은 예

Create Table foo (a int , b int, c int, d int, e int, f int, PRIMARY KEY ((a,b),c,d))

파티션은 a와 b의 조합으로 고유하게 식별됩니다.

파티션 내에서 c와 d는 파티션 내의 셀을 정렬하는 데 사용되어 레이아웃이 약간 비슷하게 보입니다.

(a1,b1) --> [c1,d1 : e1], [c1,d1  :f1], [c1,d2 : e2] ....  

따라서이 예제에서 각 셀에 20 억 개의 셀이 포함될 수 있습니다.

  • c의 값
  • d의 값
  • e 또는 f 중 하나의 값

그러므로 20 억 한계는 (c,d,e)(c,d,f) 의 고유 한 튜플의 합을 나타냅니다.






cassandra limit column-family