2012-07-25 5 views
3

Cassandra에서 데이터 버전을 추적해야합니다. 나는 버전 #이 슈퍼 컬럼이 될 것이라고 생각하고, 엔티티 ID는 로우 ID가 될 것이고, 그런 다음 추적해야하는 컬럼은 컬럼이 될 것이다. 따라서, 예를 들어, 엔티티의 버전 1은 다음과 같습니다스키마에서 Supercolum의 적절한 사용

  • supercolumn : V1
  • ROWID : UUID
  • 열 : 타임 스탬프, RequestID가, 사용자 ID, 상태, 데이터, 등 ...
조회하면

, 가장 일반적인 요청

  • 가 기록 y를 나에게 버전 X를 줄 것
  • 레코드 y에 대해 버전 X - 1 및 X + 1 을 제공하십시오.

    • 나에게 1
    • 나에게 사용자 ID x로 변경된 모든 레코드를 제공 상태에있는 모든 행을 제공 :
    • 덜 중요한

    는 같은 쿼리가 될 것입니다.

  • 타임 스탬프가 x와 y 사이에있는 모든 행을 제공합니다.

위의 접근 방식은 수퍼 컬럼을 사용하는 것이 가장 좋습니다. 위의 방법을 수행하는 데 더 좋은 스키마가 있습니다. 내가 알고 있어야하는 수퍼 컬럼을 사용하거나 질의하는 것에 관한주의 사항이 있습니까?

답변

4

먼저 수퍼 컬럼을 사용하지 마십시오. 그들은 효과적으로 사용되지 않으며 많은 결점이 있습니다. 모델에서 두 개의 구성 요소가있는 복합 키를 사용하여 수퍼 컬럼을 컴포지트로 쉽게 바꿀 수 있습니다. 첫 번째는 UUID이고 두 번째 구성 요소는 버전입니다. 모든 검색어는이 모델에서 지원됩니다. 복합체에 대한 자세한 내용은 Check this out을 참조하십시오.

+0

와우, 나는 질문에 기뻐. 내가 이미 설명했듯이 앞서 나가 코딩했다. 그래서 합성물 본질적으로 rowid (내 rowid 될 UUID : 버전)? 또는 합성 "열 이름"및 각 열, 예를 들어, requestid : version, userid : version, state : version, data : version 등이 될 것입니까? – AlexGad

+0

합성 키 또는 열을 사용할 수 있습니다. 귀하의 경우에는 UUID : version이 포함 된 복합 키가 귀하의 유스 케이스를 만족시키는 것으로 보입니다. –