Cassandra(CQL 사용)에서 고정된 수의 (timeuuid) 열을 구현하는 방법은 무엇입니까?
문제
사용 사례의 예는 다음과 같습니다.
timeuuid 기반 열의 모든 세부 정보와 함께 마지막 N(고정 버킷 크기로 1000이라고 가정) 사용자 작업을 저장해야 합니다.
일반적으로 각 사용자의 작업은 사용자 ID가 행 키인 "UserAction" 열 계열에 이미 있고 작업은 timeuuid 열에 있습니다.열 이름과 동일한 timeuuid 및 열 값으로 사용자 ID를 갖는 모든 작업을 저장하는 "AllActions" 열 계열이 있을 수도 있습니다.기본적으로 관계 열 계열이지만 안타깝게도 사용자 작업에 대한 세부정보가 없습니다.이 컬럼 패밀리를 사용하여 쿼리하는 것은 무작위 파티셔너 때문에 비용이 많이 드는 것 같습니다.반면에 "AllActions" CF에 모든 세부 정보를 저장하면 cassandra는 한 지점에서 해당 큰 행을 제대로 처리할 수 없습니다.이것이 바로 고정된 수의 timeuuid 기반 열에 모든 세부 정보와 함께 마지막 N개의 사용자 작업을 저장하려는 이유입니다.
어쩌면 이 사용 사례에 더 나은 디자인 솔루션이 있을 수도 있습니다.나는 그 말을 듣는 것을 좋아합니다 ...
그렇지 않은 경우 문제는 Cassandra(CQL 사용)에서 고정된 수의 (timeuuid) 열을 효과적으로 구현하는 방법입니다.
삽입 후 cql의 DELETE에서 일종의 범위 지원이 있는 경우 이전(오버플로) 열을 삭제할 수 있습니다.AFAIK는 이에 대한 지원이 없습니다.
그럼 어떤 생각이 드나요?미리 감사드립니다...
해결책
IMHO, 이것은 C*가 압축처럼 자체적으로 처리해야 하는 것입니다.클라이언트 측에서 이를 처리하는 것은 좋은 생각이 아닙니다.
어쩌면 "최신 데이터"에 적합하게 만들기 위해 컬럼 패밀리에 대한 일부 구성(저장) 옵션이 필요할 수도 있습니다.