카산드라를 사용하는 가장 좋은 방법은 아니지만 내 데이터 유형은 지난주의 모든 데이터를 읽어야합니다. 그러나 CQL3에서 Collection-types을 사용할 때, 정상적인 날짜 범위 쿼리를 수행하지 못하게하는 특정 제한 사항에 부딪혔습니다.카사 드라 테이블에있는 많은 묘비를 읽는 이유는 무엇입니까? 액세스 패턴을 사용하면 피해야합니다.
은 그래서 나는 자동으로 캐시에서 항목을 제거하기 위해 1 주일 TTL에 삽입하고 다음 표
CREATE TABLE cache (tag text, id int, tags map<text,text>,
PRIMARY KEY (tag, id));
ALTER TABLE cache WITH GC_GRACE_SECONDS = 0;
와 카산드라 (현재 단일 노드, 미래에 아마 더)를 설정했습니다.
은 내가 이전 데이터 읽기 피하기 위해 다른 곳에서 계속 "최소 ID"로 선택하여 많은 삭제 표시를 읽는 피하기 위해 this article에 언급 된 제안을 따르려고 노력 :SELECT * FROM cache WHERE tag = ? AND id >= ?
ID를 기본적으로 어떤 종류의 것입니다 타임 스탬프는 지속적으로 증가하고 있습니다. 즉, 시간이 지남에 따라 더 높은 값만 삽입하고 테이블에서 이전 ID를 끊임없이 제거합니다.
하지만 여전히 임계 값에 대한 경고가
WARN 08:59:06,286 Read 5001 live and 5702 tombstoned cells in cache (see tombstone_warn_threshold)
에 도달 내가 수동 압축을 실행하지 않는 경우/세정되고 얻을 정기적으로 나는 예외 쿼리가 실패 얻을.
그러나 기사와 문서에서 얻은 이해를 바탕으로 카산드라가 해당 영역만을 검색 할 수 있도록 태그의 일치 여부를 쿼리 할 때 모든 삭제 표시를 피할 것입니다. Cassandra는 대부분의 삭제 표시 후에 만 읽을 수 있습니다. 그럼 왜 삭제 표시 경고/예외가 계속보고됩니까?
"허용 필터링"에 대한 이유가 있습니까? –
좋은 필터링에 대한 좋은 질문, 실제로 내 쿼리 중 일부에 필요하지만, 이들은 필요하지 않습니다,하지만 난 여전히 이전과 같은 경고를 볼 수 있습니다, 나는 단지 카산드라 경고를 피하기 위해 생각하고 변경하지 않습니다 실제 쿼리 실행은 이제 질문에서 제거되었습니다. – centic