저는 Casssandra를 처음 사용하고있어서 데이터 모델을 구현하기가 어렵습니다.Cassandra 데이터 모델을 정의하는 데 어려움이 있습니다.
저는 하나의 테이블을 디자인하는 데 많은 어려움을 겪었습니다.
내가 테이블 정의를 언급하기 전에 내가 당신에게 우리가 내가 모든 카산드라 정의 된 규칙을 따라야합니다 테이블을 만들려면
select * from email where username='suresh' and inactive='N' and type='outbound'
order by insert_ts desc allow filtering;
update email set inactive='Y' where username='suresh' and inactive='N'
and id=101;
기록을 검색하고 업데이트 할 수있는 방법을 보여주고 싶어요. 테이블
에 대한 인덱스를 만드는 동안 내가 기록을 검색 할 수 있어요하지만 난 업데이 트를 수행 할 때, 내가 말하는 오류가 발생하고이
PRIMARY KEY(username, inactive,type,insert_ts);
같은 기본 키를 만들 경우 나는 문제에 직면하고있다 "기본 키 부분에서 발견 된 "오류가 발생했습니다.
내가 기본 키와 내가 갱신을 할 수 있어요하지만 난 검색 할 때, 내가 말하는 오류를 얻고있다
PRIMARY KEY(username, type,insert_ts);
Secondary index = inactive;
"보조 인덱스가 ORDER BY 절에서 허용되지 않습니다"아래 같은 보조 키를 생성하는 경우
내가 나를 어떻게 내 쿼리를 만족 이메일 테이블을 생성하는 것이 좋습니다하시기 바랍니다
Create table email(id int, username varchar, comment text,
inactive boolean, insert_ts timestamp, type varchar,
PRIMARY KEY(<<some columns yet to decide>>));
같은 CQL을 사용하여 이메일 테이블을 만들었습니다.
지금까지 제공 한 것부터 insert_ts를 기준으로 필터링이나 정렬에 문제가 없어야합니다. 행을 삽입 한 후에는 변경되지 않으므로 기본 키에 추가 한 다음 원래 게시물의 첫 번째 SELECT 쿼리에 따라 WHERE 또는 ORDER BY에서 사용할 수 있습니다 (단, 유일한 차이점은 더 이상 어디서나 비활성 상태입니다.) –
id에 관해서는, 당신이 원하는 것을하기 위해 여분의 컬럼이 필요하다고는 생각하지 않습니다. 기본 키의 마지막 반환 값 (username + type + insert_ts)을 저장하고이 값을 페이징에 사용하면 여분의 열은 필요 없습니다. 자세한 내용은이 답변을 참조하십시오 : http://stackoverflow.com/questions/11832886/cassandra-cql-method-for-paging-through-all-rows. –