Database/Cassandra

[Cassandra][datastax]Logical Mapping Rules

bisi 2020. 5. 27. 08:50

쿼리 기반 방법론 

  • 매핑 룰은 논리 데이터 모델이 정확하게 설계되었다는 것을 보증한다. 
  • 각 쿼리는 그에 맞는 테이블을 가진다.
  • 테이블은 쿼리가 적절하게 실행되도록 디자인 된다.
  • 테이블은 정확한 순서로 데이터를 반환한다.

 

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를 순서대로 적용