2013-02-11 2 views
2

내가 카산드라 테이블에 동적으로 열을 추가

create table userInfo 
(
userid text, 
email text, 
firstName text, 
lastName text, 
city text, 
Primary key (userid,email) 
); 

CQl3

에 다음 표했다 지금은 내가 그렇게 할 수있는 사용자 selection.How에 따라이 테이블에 동적으로 두 개의 열 COL1과 COL2를 추가하려면? 내가 일

ALTER TABLE ADD COL1 text; 
ALTER TABLE ADD COL2 text; 

에게 다음과 같은 않았다

그것은 테이블에 COL1과 COL2을 추가했다. 그런 다음 userInfo (.., .., COL1, ..) 값 (.., .., 'some value', ..)에 삽입하면 COL1에 NULL이 저장됩니다.

동적으로 열을 추가하는 좋은 방법을 제안하십시오. 나는 내가 생각하기에 칼럼을 많이 추가한다면 ALTER 테이블이 좋은 방법이라고 생각지 않는다. 나는 칼럼을 동적으로 추가하기 위해 자바 프로그램에서 Hector 라이브러리를 사용하고있다.

답변

2

아마도 CQL이 최선의 선택이 아닙니다. CQL을 사용하면 SQL과 유사한 구문 기능을 사용할 수 있도록 스키마를 앞에 정의해야하지만 Cassandra의 유용한 동적 기능 중 일부는 제거됩니다. 거의 모든 Cassandra 클라이언트의 Thrift 기반 돌연변이 기능을 사용하여 작성하려는 열의 이름을 지정할 수 있습니다. 존재하지 않는 경우 사용자를 위해 만들어집니다. 예를 들어

는 :

ks.insert(key, createColumnPath(colName), bytes(value)); 
+1

나는 CQL에서 하나 개의 솔루션이 **지도 **를 사용하고 발견했다. 특정 기능의 Map 을 추가하겠습니다. 그게 중고품보다 나은가요? hector를 사용하여 CQL에 맵을 추가하는 간단한 예를 들어 줄 수 있습니까? – user1802597

관련 문제