ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Sharding
    Computer Science/Database 2021. 3. 12. 09:51

    Shard

    cluster.max_shards_per_node 를 사용하고자 이해도를 높이기 위해

     

    DB

    Partitioning

    큰 table이나 index를 관리하기 쉬운 단위로 분리한 것

    benefit

    1. Availability (가용성)
      • 물리적 파티셔닝으로 전체 data의 훼손 가능성이 줄고, data의 가용성이 향상한다.
    2. 관리 용이성
    3. Performance (성능)
      • 대용량 data write 환경에서 효율적이다.

     

    Sharding

    vertical partitioning

    도메인에 따라 쉽게 분리 가능하다.

     

    sharding

    같은 스키마를 가진 data를 다수의 database에 분산하여 저장한다. (horizontal partitioning)

    Read의 부하가 크면, cache나 DB의 replication도 방법이다. 혹은 Data를 hot/warm/cold data로 분리하는 것도 가능.

     

    Point는 분산된 DB에서 어떻게 Data를 read할 것인가? , 분산된 DB에서 Data를 어떻게 잘 분산시킬것인가? 즉, 균일한 분산이 중요하다.

     

    Shard key

    → hash sharding

    shard key - DB id를 hashing하여 결정한다. hash 크기는 cluster 안에 있는 node의 개수이다.

    단점 - cluster의 node 개수가 변할경우, hash 크기가 변하고, hash key 또한 변한다. 즉, resharding이 필요하게 됨.

     

    → Dynamic sharding

    locator service를 통해 shard key를 얻는다. 확장에 유연하고, node 개수에 영향을 받지 않는다.

     

     

    Entity Group

    • 하나의 물리적인 shard에 쿼리를 진행하는것이 효율적이다.
    • 하나의 shard 에서 강한 응집도를 가진다.
    • Data는 자연스럽게 사용자 별로 분리되어 저장된다.
    • 사용자가 늘어남에 따라 확장성이 좋은 partitioning이다.

    댓글

Designed by Tistory.