Database/Cassandra

[Cassandra][datastax]Logical_Principles

bisi 2020. 5. 27. 08:49

카산드라 데이터 모델링 원칙 

  1. Know your data
  2. Know your queries
  3. Nest data
  4. Duplicate data

 

1. Know your data

  • 성공적인 디자인을 위한 키는 데이터를 이해하는 것이다.
    • 개념적 데이터 모델에 의해 나타난 데이터 
    • 무엇을 데이터에 저장할지 정의하라 
    • 속성을 보존하라 그러면 데이터는 정확하게 정돈된다.

 

  • 키의 제약사항은 스키마 디자인에 영향을 준다.
    • 엔티티와 관계키는 테이블 주요키에 영향을 준다.
    • 주요키는 유니크하게 row/entity/relationship을 구별한다. 
    • 키와 가능하다면 부가적인 컬럼으로 구성한다.

2. Know Your Query

  • 쿼리는 직관적으로 스키마 디자인에 영향을 준다.
    • application workflow modle에 의해 정의된 쿼리 
    • 쿼리가 변한다면 테이블 스키마 디자인은 바꿀수 있다.

 

스키마 디자인은 효율적으로 쿼리를 운영하기 위테 데이터 구성한다.

① Partition per query - idle이상적인

② Partition + per query - acceptable

③ Table scan & Mutil-Table - anti-pattern

 

Partition per query

  • 가장 효율적인 access pattern
  • 쿼리는 결과를 검색하기 위해 오직 하나의 파티션에만 접근한다.
  • 파티션은 single-row 또는 multi-row로 존재할 수 있다. 

 

Partition + per query

  • 덜 효율적인 access 패턴이 다. 그러나 나쁜것은 아니다
  • 쿼리는 결과를 검색하기위해 multiple 파티션에  접근하는 것이 필요하다

Table scan & Mutil-Table

  • 쿼리 유형에 가장 효율적이지 않다. 그러나 필요에 따라 사용할 수 있다.

쿼리는결과를 얻기 위해 테이블안의 모든 파티션에 접근해야한다.

 

3. Nest Data

  • 중첩된 데이터는 주요 데이터 모델링 기술이다.
  • 중첩된 것은 하나의 파티션안에 muliple 엔티티로 구성한다.
  • 쿼리 데이터 접근당 하나의 파티션을 지원하라
  • 중첩 데이터 설계시 중요 개념 3가지
  • ① 클러스터링 컬럼 - multi row ② 파티션 컬렉션 컬럼  ③ User-defined type 컬럼

 

① 클러스터링 컬럼

  • 주요 중첩 데이터 체제 
    • 파티티션 키는 다른 엔티티에 중첩될수도 있는 엔티티를 구별한다.
    • 클러스터링 안에 있는 값은 중첩 엔티티를 구별한다.
    • Multiple 클러스터링 컬럼은 multi-level nesting을 수행한다.

 

③ User-defined type - secondary data nesting mechanism

  • 1:1 관계를 나타낸다. 하지만 콜렉션 타입과 함께 연결하여 사용할 수 있다.
  • multiple collection columns으로 동작하는 것보다 쉽다.

 

 

4. Duplication Data

  • data를 조인하는 것보다 중복하는게 낫다.
  • 쿼리와 중첩데이터당 파티션은 데이터 중복으로 저장하는 결과가 나올 것이다. 
  • 쿼리 결과는 미리 계산하고 구체화한다.
  • 데이터는 테이블, 파티션, 컬럼 등과 같은 구조로 중첩될 수 있다.

 

  • 데이터 중복은 사이즈를 잴수 있다. 하지만 조인은 그렇게 할 수 없다.

 

 

 

참고사이트

https://academy.datastax.com/paths