카산드라 데이터 모델링 원칙
- Know your data
- Know your queries
- Nest data
- 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
'Database > Cassandra' 카테고리의 다른 글
[Cassandra][datastax]Logical Mapping Rules (0) | 2020.05.27 |
---|---|
[Cassandra][datastax]Logical_Chebotko Diagrams (0) | 2020.05.27 |
[Cassandra][datastax]Application Workflow and Access Patterns (0) | 2020.05.25 |