2012-03-30 2 views
-1

Hector API를 사용하여 카산드라에 중첩 된 슈퍼 컬럼 (슈퍼 컬럼에 슈퍼 컬럼을 의미)을 어떻게 삽입 할 수 있습니까? 아래는 간단한 슈퍼 열에 대한 코드이며 잘 작동합니다. 그러나 이것에도 하나의 수퍼 컬럼을 추가하고 싶습니다.중첩 된 슈퍼 컬럼 삽입

Mutator<String> mutator = HFactory.createMutator(keyspaceOperator, stringSerializer); 
List<HColumn<String,String>> colsList = new ArrayList<HColumn<String,String>>(); 
colsList.add(HFactory.createStringColumn("name", "tarun")); 
colsList.add(HFactory.createStringColumn("age", "25")); 
mutator.insert("deviceId", CF_SUPER, HFactory.createSuperColumn("10000", 
       colsList,stringSerializer, stringSerializer, stringSerializer)); 

답변

1

수퍼 컬럼을 다른 수퍼 컬럼 안에 넣을 수 없습니다. 수퍼 컬럼 컬렉션을 보유하고있는 SuperColumnFamily를 사용해야합니다. Digg에서 Cassandra를 설정 한 사람들 중 한 명에 의해 데이터 모델에 대한 좋은 설명을 얻으려면 this 위 기사를 참조하십시오.

+0

나는 이미이 기사를 읽고 우리가 다른 슈퍼 컬럼을 넣을 수 있다는 것을 알고 있습니다. 하지만 Cassandra의 Hector Java API를 통해이 작업을 수행하려고합니다. –

+0

hector를 사용하여 수퍼 컬럼 패밀리를 추가하는 방법을 알고 계십니까? –

+0

저는 Hector 라이브러리에 익숙하지 않습니다. Pelops를 사용하고 좀 쉬워 보입니다. 그러나 데이터 모델을 미리 정의하고 Column Families 및 Super Column 제품군을 만들기 전에 일반적으로 좋은 방법입니다. 시스템을 시작합니다. 저는 개인적으로 API를 사용하지 않고 대신 스크립트와 명령 행을 선호합니다. 액세스 관련 문제를 데이터 모델 관심사와 분리하고보다 쉽게 ​​유지 보수 할 수 있도록합니다. – FloppyDisk

3

카산드라의 다른 수퍼 컬럼 안에 수퍼 컬럼을 넣을 수 없습니다. 이것은 헥터의 한계가 아닙니다. 이것은 카산드라가 구현 된 방법입니다.

처음 카산드라를 시작했을 때 몇 시간 동안 데이터 모델의 텍스트 설명을 읽었으며 내 눈이 윤이 났고 나는 이해하지 못했습니다. 그 다음 나는 그림의 표현을 보았고 즉시 그것을 grokked했다. 그것을 확인하십시오 : http://www.javageneration.com/wp-content/uploads/2010/05/Cassandra_DataModel_CheatSheet.pdf

+0

카산드라 데이터 모드에 대한 자세한 내용을 보려면 다음 링크를 참조하십시오. http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model –

+1

자신의 링크에서 : "A SuperColumn은 바이너리 이름 및 값이없는 튜플입니다.이 맵은 무제한 열 수 - 열의 이름으로 입력 됨. " 원래 질문에 대답하려면 수퍼 칼럼을 다른 수퍼 컬럼에 넣을 수 없습니다. 카산드라는 그렇게하지 않습니다. 물론 헥터도하지 않습니다. –