2012-04-25 3 views
3

수퍼 열 이름에 따라 다른 행 ID 값을 검색하려고합니다. 그 목적을 위해이 코드를 사용했습니다.Hector Cassandra의 columnfamily에서 set rowID에있는 super 열의 모든 값을 검색하는 방법

SuperColumnQuery<String, String, String, String> superColumnQuery = 
      HFactory.createSuperColumnQuery(keyspaceOperator, se, se,se,se); 
    superColumnQuery.setColumnFamily(COLUMN_FAMILY).setKey(rowID).setSuperName(superColumnName); 
    QueryResult<HSuperColumn<String, String, String>> result = superColumnQuery.execute(); 
    //rowID contains a list of rows separated by ',' 

그러나 작동하지 않습니다.

+0

"작동하지 않음"은 무엇을 의미합니까? –

답변

1

열 이름을 기반으로 행 키를 선택하려는 경우 데이터 모델이 거꾸로 있다는 것을 추측 할 수 있습니다. 일반적으로 외부에서 이동해야합니다. 행 키를 선택한 다음 수퍼 컬럼 이름을 선택한 다음 컬럼 이름을 선택하십시오. 그렇지 않으면 Cassandra 엔진을 사용하여 필요한 항목을 선택하는 대신 열 이름을 일치시키려는 코드의 행을 반복적으로 반복 할 수 있습니다. 이 접근법은 절대로 확장되지 않습니다.

데이터 모델을 다시 작성하거나이 방법이 필요할 경우 첫 번째 인덱스의 인덱스 역할을하는 다른 ColumnFamily를 추가하는 것이 좋습니다. 옛날 학교의 SQL 데이터베이스와는 달리, Cassandra와 같은 NoSQL DB의 신조는 "당신이 비정규 화하는 경우 - 올바르게 수행하고 있습니다"라고합니다.

+1

유진 (Eugene)은 슈퍼 컬럼을 서브 슬라이스하는 좋은 습관이 아닙니다. 카산드라 공동체조차도이 기법을 사용하지 않는 이유가 바로 Super Column입니다. 그래서 우리 시대를 낭비하지 말고 새로운 기술을 찾으십시오. 결국 모든 문제를 해결하는 합성 칼럼입니다. – abhi