Press에 가장 적합한 Cassandra표 디자인

2604 단어 CassandraPresto

필요한 전제 지식

  • Cassandra의 구조
  • Preseto의 간단한 조작 절차
  • 의 목적

  • 카스텔라의 새 시계를 제작할 때Preseto의 SQL 효율이 좋은 시계는 무엇입니까?탐문하다.
  • 다음은 이번에 제작된 각 표의presto 행위를 총결하였다.

    test.test (keyspace.table)


    ※(p= Partition Key, c=Clustering Key)
    p=0, 1에 각각 10만 개씩, c=0~10만 개
    p=2~10만 리 데이터 한 장씩, c=0

    전체 테이블에 SQL 추가

    SELECT * FROM cassandra.test."test"
    
  • task가 예쁘게 분해됨(✔️플래그 개수) 처리가 진행 중입니다.
  • SQL에서 특정 Partition으로

    SELECT * FROM cassandra.test."test" WHERE p=0
    
  • Partition을 하나로 지정하면 Preseto의task가 분해되지 않습니다.
    -> 하나의 서버(worker)만 실행 중입니다.
  • 특정 Partition에서 ClusteringKey 를 선택합니다.

    SELECT * FROM cassandra.test.test WHERE p=0 AND t=120
    
  • 이 파티션은 10만 건이지만 한 줄만 본다.(효율이 좋다.)
  • 특정 Partition에서 ClusteringKey 를 선택합니다.(ver2)

    SELECT * FROM cassandra.test."test" WHERE p=0 AND t>0 AND t<100
    
  • 이 파티션은 10만 건이지만 (><) 중에서 ClusteringKey를 선택해도 그것만 본다(효율이 좋다!)
  • Partition 범위 선택 및 SQL 선택

    
    SELECT * FROM cassandra.test."test" WHERE p>10 AND p<100
    
  • P=10~100 데이터가 하나인 Partition
  • 위의 SQL에 비해 어느 정도에 데이터를 하나의 Partition에 통합하면 SQL의 효율이 비교적 좋다.
    → 공식 추천 1 파티션의 item 10만 건 정도.(item은 row가 아니라 각 값입니다.)
  • 결론

  • Cassnadra의 표 디자인의 절충.Partition にデータをある程度溜める <---> 適度に分散させる。→1 Partition에 10만 개의 item을 저장하는 정도로, 그 이상으로 분산하는 것이 좋다.
  • ClusteringKey에서 SQL에서 범위 선택에 자주 사용되는 값을 설정하는 것이 좋습니다.
    (예:timestamp)
  • 감상

  • 역시 빠르다.
  • Cassanddra &Press to는 뭐든지 할 수 있을 것 같아서...
  • 카스텔라는 매우 유연하여 열 등을 간단하게 추가할 수 있지만 최초의 표 디자인은 간이었다
    PrimaryKey는 변경할 수 없습니다.
  • 좋은 웹페이지 즐겨찾기