Database/Cassandra

[Cassandra] 테이블 설계시 확인 사항

bisi 2020. 5. 5. 20:42

우리는 데이터를 가지고 있기 때문에, 쿼리를 할수 있는 것일까?

 

정답은 No이다. 

SQL 을 사용할때는 간단해 보이지만, 카산드라에서는 설계할 때 매우 어렵다. 

 

카산드라 설계시 확인해야할 사항에 대해서 알아보자.

 

확인 1. 카산드라의 각 row는 2개의 primary key로 구성

 

partition key

  • 클러스터내에 위치를 결정한다.
  • 파티션 키 해쉬는 파티션이 위치해 있는 카산드라 클러스터의 어느 노드에 위치할 것인지 가르킨다. 

clustering key

  • 파티션 내의 row 위치를 결정한다.
  • 파티션 키 또는 클러스터링 키를 통한 쿼리는 빠르고 효율적이다. 
  • 그러나 이는 일반적으로 동등 비교 (비평 등 비교는 클러스터링 키의 마지막 부분에서만 수행 할 수 있음)이며 차원 열은 실제로 키에 맞지 않습니다.

 

 

확인 2. Secondary Index 사용

Secondary Index는 동등 비교를 제안한다 하지만 퍼포먼스가 좋지 않기 때문에 추천하지 않는다. 

Secondary Index는 각각의 카산드라 노드를 유지하고, 카산드라가 클러스터 안의 모든 노드에 쿼리를 보내길 원할때 사용한다.

 

확인 3. Allow Filtering 사용

쿼리가 메모리 내 필터링을 수행 할 수 있는 것을 의미하며, 이는 효율적이지 않다. 운영에서도 이러한 키워드를 사용하지 않는 것이 좋습니다.

 

확인 4. 뷰

구체화 된 뷰는 운영, 생산에 적합하지 않다.

 

확인 5. SASI ( SSTable Attached Secondary Indexes ) 사용

SASI는 향상된 보조 인덱스이다. 실제로 치수 필터링에 사용할 수 있다. 그러나 Cassandra를 지원하는 회사 인 DataStax는 여전히 실험용으로 표시하고, 프로덕션 용도로는 권장하지 않는다.

 

 

 

참고사이트

https://blog.softwaremill.com/7-mistakes-when-using-apache-cassandra-51d2cf6df519