CS자료/데이터베이스

[DB] 샤딩

뇌장하드 2022. 3. 19. 16:30
  • 샤딩
    • 데이터 파티셔닝의 종류
    • 물리적으로 다른 데이터베이스에 데이터를 수평 분할 방식으로 분산 저장 및 조회하는 방법
    • 샤드: 전체 중 작은 부분
    • 데이터를 샤드 키에 따라서 다른 서버에 분할
    • 분산 테이블은 하나의 샤드 키만 가지고 있어야 한다.
    • 샤드 키란? 어떤 샤드에 저장되어야 할지 결정하는 키
    • 샤드 키 결정 방법 3가지
      • 해시 샤딩: 해시 알고리즘을 사용. 해시 크기는 몇 개의 샤드를 구성하냐에 따라 결정. 구현이 간단하지만 확장성이 좋지 못하다. 샤드가 늘어날때 해시 함수가 바뀌어야 하기 때문에 데이터 정합성이 깨지게 된다.
      • 다이나믹 샤딩: 해시 샤딩을 보완하기 위한 방법. Locator service로 샤드 키를 얻는데 테이블 형식 데이터로 샤드를 결정해 저장하는 방식. 확장성이 좋다.
      • Entity Group: 위 방식들은 key/value 방식에 적절한 방법이다. 그러나 이 방식은 RDBMS에 적합한 방법. 하나의 물리적인 샤드에 쿼리를 날릴땐 효율적이다. 확장성 또한 좋다. 그러나 다른 샤드와 JOIN이 일어날땐 성능이 떨어진다.
    • 테이블을 샤드할 시기는?
      • 인덱스 사이즈가 클 경우: 지연 시간을 줄인다.
      • 지역별로 나눠야할 경우
    • 샤드는 다른 물리적 데이터베이스에 저장하기 때문에 프로그래밍 복잡도를 높인다. 최대한으로 다른 방법을 강구해야 한다.

'CS자료 > 데이터베이스' 카테고리의 다른 글

[DB] 인덱스를 사용하는 이유  (0) 2022.03.19
[DB] 옵티마이저  (0) 2022.03.19
[DB] Replication  (0) 2022.03.19
[DB] ORM  (0) 2022.03.19
[DB] Java JDBC  (0) 2022.03.19