본문으로 건너뛰기

100. 이것저것 알게된것

카산드라 편

  • 카산드라는 대소문자 구분을 안한다. 그러므로 카멜케이스로는 구분이 어렵고 스네이크 케이스를 사용해야 한다.
  • 카산드라에서 시간정보까지 갖고 있는 데이터 타입은 timestamp이다.
  • 카산드라에서 클러스터링 키는 > < = 연산자 사용가능하다. 알파벳에도 > < = 식으로 특정 문자 이후의 오름차순 혹은 내림차순 정렬 검색이 가능하다
  • 클러스터링 키를 사용하면, 데이터의 물리적 정렬이 된다.
  • 자주 함께 조회되는 데이터는 같은 파티션에 저장하는것이 성능향상에 좋다.
  • 파티션 키를 특정 값으로 선택하면 해당 파티션에만 데이터가 집중되어 부하가 불균형 해 질수도 있다.
  • 복합 파티션키를 사용하면 (ex2개) 2개의 파티션 키에대한 정보를 반드시 where절에 명시해야 검색이 된다.
  • 복합 파티션키와 복합 클러스터링 키가 있을때, 복합 파티션키의 정보만 입력하면 검색은 된다. 추가로 클러스터링 키까지 입력하면 추가 조건 검색이 된다.
  • 테이블 생성 이후에 프라이머리 키, 클러스터링 키는 변경 불가하다. 그러므로 최초 생성시에 신중하게 선택하는 것이 중요하다.
  • 카산드라의 스키마가 유연하고 변경 가능하다는 것은 어디까지나 컬럼의 추가,삭제, 타입변경 이 가능하다는 것이지 프라이머리 키 변경이 가능하다는 것은 아니다
  • 파티션키를 2개로 할경우 키의 조합에 따라 파티션에 각각 다르게 된다. 1-1, 1-2, 1-3, 1-4, 2-1, 2-1 이런식으로 다른파티션에 저장된다는 것이다.
  • region과 date를 두개로하는 복합 파티션키의 테이블을 생성했을때, region하나만으로 모든 date의 데이터 조회는 불가능하다. 반드시 date를 명시해야한다
  • 파티션키로써 데이터가 분류되도록한다(성능이점. 카산드라는 파티션키를 기준으로 특정노드에 데이터를 담는다. 물로 추후에 노드끼리 복제를 하지만, 최초에는 파티션키를 기준으로 특정 노드에 집중적으로 담는다)
  • 클러스터링키 와의 조합 으로써 정렬을 하며(기본오름차순) 유일한 고유성을 갖게 한다.(클러스터링 키 까지의 조합을 통해서 유니크함이 보장되지 않으면 모델링 설계가 망한다)
  • TIMEUUID : 카산드라에서는 인식하나, 자바에서 불협화음이 있는것 같다.(부정확)
  • 파티션당 권장 데이터 : Up to ~ 100k(100000개) rows in a partion
  • 파티션당 권장 데이터 사이즈 : Up to ~ 100MB in a Partition
  • chatGPT는 10000~100000개의 row가 들어가면 100~200MB의 파티션 크기가 된다고 대답했다. Blob이 아니였다.
  • 하루에 10만개의 row데이터가 들어간다면, 날짜별로 파티션을 나누는것이 성능과 관리에 도움이 된다는 답도 얻었다.

엘라스틱서치 편