"요청"상태를 유지하는 웹 서비스가 있습니다. 가능한 상태는 "활성"및 "비활성"입니다. 요청 정보를 Cassandra DB에 저장하고 있습니다. 두 테이블이 있습니다. 하나는 활성 요청 용이고 다른 하나는 비활성 요청 용입니다. 둘 다 동일한 스키마를가집니다.카산드라에서 삭제 작업을 수행 할 때 데이터베이스 항목 가져 오기
ActiveRequests{
UserId text,
RequestId int,
RequestData text
PRIMARY KEY(UserId, RequestId)
}
나는 비활성 상태로 활성 상태에서 요청을 이동합니다 API를 구현해야 다음과 같이
내 스키마입니다. 필자는 Active 테이블에서 항목을 삭제 한 다음 제거 된 항목을 InActive 테이블에 추가하여이 작업을 수행 할 계획입니다.
Cassandra에서는 DELETE
작업이 실제로 삭제 된 데이터를 반환하지 않는 것처럼 보입니다. 따라서 요청 항목에 SELECT
을 입력해야 (InActive 테이블에 추가하기위한 모든 요청 데이터를 얻을 수 있음) DELETE
작업을 수행해야합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?
편집
내가 별도의 테이블과 같은 활성 및 비활성 요청을 유지하고 왜 당신은 요청할 수 있습니다. 잠재적으로 이들을 하나의 테이블로 결합하고 IsActive
열을 가질 수 있습니다. 별도의 테이블을 유지 관리하려는 이유는 다음과 같습니다.
활성 테이블에 대한 내 쿼리를 매우 빠르게 작성하고 싶습니다. 최적이 아닌 활성 및 비활성 요청이 모두있는 테이블의 모든 활성 요청을 쿼리하려고합니다. partitionKey는 userId이며 InActive 테이블에 주어진 UserId에 대해 1000 개의 요청 ID가 있어야합니다. 하지만 Active에는 UserId 당 10 개 이상의 requestIds 만 있어야합니다.
두 테이블이있는 이유는 무엇입니까? 단일 테이블을 사용하는 경우 이것은 CQL에서 간단한 플래그로 넘기는 문제가됩니다.하지만 재미있는 질문입니다. –
Sreekar
활성 테이블에 대한 내 쿼리가 매우 필요합니다. 만약 내가 최적이 아닌 Active 및 InActive 요청을 모두 가지고있는 테이블에서 모든 Active 요청을 쿼리하고자한다면.partitionKey는 userId이며 InActive 테이블에 주어진 UserId에 대해 1000 개의 요청 ID가 있어야합니다. 하지만 Active에는 UserId 당 10 개 이상의 requestIds 만 있어야합니다. – AndroidDev93