2010-07-19 3 views
1

대용량 데이터 프로젝트에 Cassandra를 사용하려고합니다. 데이터는 기존 데이터웨어 하우스에서 제공됩니다. 카산드라는 내 응용 프로그램이 올바르게 읽을 수 있도록 형식화 된 데이터를 호스팅합니다.Cassandra의 전정 열

카산드라의 데이터를 정리하는 방법을 잘 모르겠습니다.

예를 들어, 지난 24 시간 동안 특정 IP 주소가 웹 사이트에 방문한 횟수를 계산하고 싶습니다. 매 시간마다이 데이터를 생성 할 계획이며 IP 주소 당 2 주를 유지하려고합니다. 내 열 구조는 다음과 같습니다.

127.0.0.1: { 
    visitorsLast24Hours: { 
    1279554672: 30, 
    1279553072: 24, 
    etc... 
    } 
} 

어떻게하면 visitorsLast24Hours 열에서 행을 제거 할 수 있습니까?

  1. 내가
  2. 자두 작업 할 열을 받기 내가 더 이상 할 값이
  3. 이 삭제 유지 :

    지금까지 내가 함께 왔어요 최고의 솔루션입니다 데이터베이스에서 열

  4. 이 데이터베이스 작업을위한 나쁜 방법처럼 보인다 새로운 정리 된 열

를 다시 삽입합니다. 나는 Cassandra에서 스토리지가 수행되는 방식에 따라 데이터 크기가 급상승 할 것이라고 가정하고 있습니다.

더 효율적인 방법이 있습니까?

현재 Cassandra에 대한 내 인터페이스로 phpcassa과 (과) 협력하고 있습니다.

감사합니다.

+0

만약 내가 틀렸다면 정정 해 주겠지 만 실제로 저장소에 많은 중복이 있고 더 많은 데이터를 선택/가져 오는 데 더 많은 수정이 필요하다는 그 nosql thingamajigs의 요점이 아닌가? Afaik, 그것은 거래입니다./nosql을 고용 할 수있을 때 /해야만 할 때 논쟁이되기를 촉구한다./ – Wrikken

+0

예, 나는 내가 생각해 낸 방법보다 나은 방법이 있는지 궁금 할뿐입니다. 또는 prune의 업데이트 빈도를 줄일 수 있습니다. 예를 들어, 데이터는 매시간 또는 매주 또는 매월 프룬합니다. –

답변

1

실제로 전체 열을 삭제하고 다시 쓸 필요는 없습니다. 여기서 SuperColumn을 사용하고 있다고 가정하면 supercolumn (이 경우에는 visitorsLast24Hours) 내에서 지정된 키만 삭제할 수 있습니다. 따라서 수퍼 컬럼에서 컷오프 시간보다 오래된 특정 키 값을 트래버스하고 각각을 삭제하십시오. 수퍼 컬럼을 사용하면 하위 행을 추가하거나 삭제할 때마다 전체 데이터 세트를 다시 작성할 필요가 없습니다. 관심 항목 : http://wiki.apache.org/cassandra/API06 자르기 및 삭제.