2014-11-27 2 views
0

카산드라에 데이터 모델을 설계하는 동안. 나는 아래의 시나리오를 설계하는 동안 걸려있다.카산드라 데이터 모델 디자인, 복합 키 대 슈퍼 컬럼

처럼 하나의 API/웹 서비스는 여러 매개 변수 (입력/출력)를 가질 수 있습니다. 매개 변수 개수와 해당 열 이름도 알지 못합니다.

캐산드라 데이터 모델을 설계하는 방법. 나는 supercolumns가 사용하기 좋지 않다는 것을 알고 있고 좋은 대안은 복합 키를 사용하고있다. 하지만 제 시나리오의 경우 고정 된 열 이름과 개수를 복합 키로 지정할 수는 없습니다.

내가 할 아래의 그림은 내가 열 이름과 매개 변수 이름을 지정할 수 있도록 자사의 생성 테이블 문을 작성하는 방법을 두 번째로

enter image description here

을 모델링 참조하십시오.

불명확 한 점이 있으면 알려주십시오.

감사합니다.

답변

1

왜지도를 사용하지 않습니까?

http://www.datastax.com/documentation/cql/3.1/cql/cql_using/use_map_t.html

create table foo(
    name text, 
    owner text, 
    version text, 
    params map<text, text>, 
    primary key (name, owner, version) 
); 

하나 2.1 인 경우에, 당신이 필요한 경우 더 많은 유연성을 충족시켜지도 키/값에 보조 인덱스를 만들 수 있습니다.

+0

감사합니다. 내 요구 사항은 보조 인덱스 였고 2.1에서 지원되었습니다. 컬렉션의 크기를 확인해 주시겠습니까? 하나의 항목에 대해 64K가 맞습니까? 컬렉션의 총 64K 항목 항목 (http://www.datastax.com/documentation/cql/3.0/cql/cql_using/use_collections_c.html)은 컬렉션 최대 값으로 64k * 64K를 의미합니까? – Usman

+1

지도 용 64k 키가 될 것 같습니다. 더 많은 정보를 얻으려면 여러 개의 맵을 연속적으로 사용할 수 있습니다. 하지만 컬렉션에 많은 항목을 저장하지 마십시오. 컬렉션이 의미하는 바가 아닙니다. 큰 파티션은 성능에 영향을 미칩니다. 이론적 인 한계는 실제적인 한계가 아닙니다. – ashic