2013-05-06 4 views
0

데이터를 내 Cassandra Test-Cluster로 가져온 후 일부 열에 보조 색인이 필요하다는 것을 알았습니다. 데이터가 이미 클러스터 내에 있으므로 ColumnFamilyDefinitions를 업데이트하여이 작업을 수행하고 싶습니다.Cassandra의 동적 열에 대한 보조 색인이 이미 존재하는 경우 Hector를 통해 확인하십시오.

이제 문제는 해당 열이 동적 열이므로 getColumnMetaData() 호출에서 보이지 않는 것입니다.

2 차 색인이 이미 생성 된 경우 헥터를 통해 어떻게 확인할 수 있습니까? 그렇지 않은 경우 어떻게 생성합니까? (이 부분을 만드는 방법은 http://comments.gmane.org/gmane.comp.db.hector.user/3151에서 찾을 수 있습니다.)

이렇게 할 수 없다면이 동적 열 패밀리의 모든 데이터를 정적 열 패밀리에 복사해야합니까?

답변

0

동적 열 패밀리의 모든 데이터를 정적 열 패밀리로 복사 할 필요가 없습니다.

다음으로 어떻게 ?? 제가 예를 들어 당신을 설명하게, 당신은 CF 스키마 아래에 언급 있다고 가정하자 :

CREATE TABLE sample (
    KEY text PRIMARY KEY, 
    flag boolean, 
    name text 
) 

참고 내가 플래그이름에 색인 했어요.

여기에 CF의 일부 데이터가 있습니다.

KEY,1 | address,Kolkata | flag,True | id,1 | name,Abhijit 
KEY,2 | address,Kolkata | flag,True | id,2 | name,abc 
KEY,3 | address,Delhi | flag,True | id,3 | name,xyz 
KEY,4 | address,Delhi | flag,True | id,4 | name,pqr 
KEY,5 | address,Delhi | col1,Hi | flag,True | id,4 | name,pqr 

데이터에서 당신은 주소, ID & COL1이 모두 dyamically 생성되는 것을 이해할 수있다.

지금 내가 그

SELECT * FROM sample WHERE flag =TRUE AND col1='Hi'; 

주처럼 뭔가를 조회 할 경우 : COL1이 인덱싱되지 않습니다,하지만 난 그 필드를 사용하여 필터링 할 수 있습니다

출력 :

KEY | address | col1 | flag | id | name 
-----+---------+------+------+----+------ 
    5 | Delhi | Hi | True | 4 | pqr 

또 다른 쿼리

SELECT * FROM sample WHERE flag =TRUE AND id>=1 AND id <5 AND address='Delhi'; 

참고 : 어느 ID가 인덱싱 여기, 나 주소, 여전히 내가 출력을 얻고있다

출력 :

KEY,3 | address,Delhi | flag,True | id,3 | name,xyz 
    KEY,4 | address,Delhi | flag,True | id,4 | name,pqr  
    KEY,5 | address,Delhi | col1,Hi | flag,True | id,4 | name,pqr 
그래서 기본적으로이 값은 항상 당신이 알고있는 뭔가가 열이있는 경우

, 그리고 색인이 생성됩니다. 그런 다음 인덱싱 된 항상 양수 열을 사용하여 나머지 동적 열을 쉽게 필터링 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 내 문제는 모든 열이 열 패밀리에서 동적이었습니다. 따라서 적어도 하나의 열을 동적에서 정적으로 전환해야했습니다. 그동안 새로운 Column 패밀리를 만들고 이전 콘텐트의 콘텐트를 새로운 콘텐트로 복사했습니다. – mschenk74

+0

예 적어도 하나의 열이 정적이어야하며 큰 문제가 아닌 것으로 생각합니다. – abhi