쿼리 기반 방법론
- 매핑 룰은 논리 데이터 모델이 정확하게 설계되었다는 것을 보증한다.
- 각 쿼리는 그에 맞는 테이블을 가진다.
- 테이블은 쿼리가 적절하게 실행되도록 디자인 된다.
- 테이블은 정확한 순서로 데이터를 반환한다.
Mapping Rule
매핑 룰 1. 엔티티와 관계
매핑 룰 2. 등식 검색 속성
매핑 룰 3. 부등식 검색 속성
매핑 룰 4. 순서 속성
매핑 룰 5. 키 속성
매핑 룰 1. 엔티티와 관계
- 엔티티와 관계는 테이블에 매칭되는 유형이다.
- 엔티티와 관계는 파티션 혹은 열에 매칭된다.
- 파티션은 하나 또는 하나 이상의 엔티티와 관계에 대한 데이터를 가진다.
- 속성은 행에 의해 나타내진다.
주의 : 룰을 위반한 것은 불완전한 데이터 모델을 가지는 것을 의미한다
- 관계 유형 예제
- 각각의 관계는 테이블 안의 열이 된다.
- 관계 타입 속성은 행에 의해 대표된다.
- 쿼리와 관계 집합의 크기(cardinality)는 주요키 설계에 영향을 준다.
매핑 룰 2. 등식 검색 속성
- 쿼리의 속성은 무조건 주요키 앞에 있어야한다.
- 주요 키는 순서 정렬의 행의 집합이다. 파티션키와 클러스터링 키로 구성되어 있다.
- 파티션 키는 이끄는 주요키 행의하나 또는 하나이상으로 형성되어 있다.
- 지원되는 쿼리는 쿼리에 모든 파티션 키 열을 포함해야한다.
- where절에 사용하지 않는 컬럼은 주요 키로 설정하지 않는다.
- 엔티티 타입 예제
- 등식 검색 속성은 주요 키의 초기 컬럼이 된다.
- 쿼리 : title and type
- 쿼리 : last name and first name
매핑 룰 3. 부등식 검색 속성
- 부등식 검색 속성은 클러스터링 컬럼이 된다.
- 클러스터링 컬럼은 주요키에서 파티션키 컬럼을 팔로우 한다.
- 이 규칙을 위반하면 특정 부등식 검색 또는 범위 검색을 수행하지 못할 수 있다.
- 부등식 검색 속성은 클러스터링 컬럼이 된다.
- 쿼리 : last_name =? and registeration_date > ?
- 쿼리 : user_id= ? and uploaded_timestamp > ?
매핑 룰 4. 순서 속성
- 순서 속성은 클러스터링 컬럼에 매칭된다.
- 각각의 파티션에서 CQL 열은 클러스터링 컬럼 기준으로 순서가 정렬된다. (내림차순 또는 오름차순)
- 이 규칙을 위반하면 쿼리에서 원하는 순서대로 열 값을 반환하지 않을 수 있다.
- 엔티티 타입
- 순서 속성은 클러스터링 키가 된다.
- 쿼리 : last_name = ? and registration_date > ?
- 순서 속성 : registration_date (ASC)
- 관계형 타입 속성
- 쿼리 : user_id = ? and uploaded timestamp > ?
- 순서 속성 : uploaded_timestamp (DESC), video_id(ASC)
매핑 룰 5. 키 속성
- 키 속성은 주요키 컬럼과 매핑된다.
- 주요키는 키의 속성에 대표되는 컬럼이 반드시 포함되어야한다.
- 대부분의 컬럼의 위치와 순서는 다르다.
- 주요키는 구체적인 쿼리를 지원하기위한 추가적인 컬럼이 있을것이다.
- 이 규칙을 위반하면 데이터 삽입이나 업데이트 작업에 데이터 손실이 발생할 수 있다
- 엔티티 타입 예제
- 엔티티 타입 키 속성은 주요키 컬럼으로써 포함한다.
- 쿼리는 또한 주요키 디자인에 영향을 준다.
- 관계 타입 예제
- 관계 타입 키 속성은 주요 키 컬럼으로써 포함되어 있다.
- 쿼리는 또한 주요키 디자인에 영향을 준다.
매핑 룰 적용
- 개념적 데이터 모델과 각 쿼리로부터 테이블 스키마 생성
- 매핑 룰1, 매핑 룰2, 매핑 룰3, 매핑 룰4, 매핑 룰5를 순서대로 적용
'Database > Cassandra' 카테고리의 다른 글
[Cassandra][datastax]Logical_Mapping Patterns (0) | 2020.05.27 |
---|---|
[Cassandra][datastax]Logical_Principles (0) | 2020.05.27 |
[Cassandra][datastax]Logical_Chebotko Diagrams (0) | 2020.05.27 |