Partitioning

2024. 11. 22. 16:31·CS/Database

 

❐ Partitioning


데이터베이스 파티셔닝(partitioning)은 대량의 데이터를 효율적으로 관리하고 쿼리 성능을 향상시키기

위해 데이터를 여러 개의 물리적 파티션으로 나누는 기법이다.

 

 

 

 

 

❐ Partitioning


1. Horizontal Partitioning

☑️ Horizontal Partitioning이란?

하나의 테이블의 각 행을 다른 테이블에 분산시키는 것이다. (컬럼의 갯수는 똑같고, 데이터만 분산)

위와 같이 지역별로 사용자 데이터를 분산할 때 사용할 수 있다.

 

☑️ Horizontal Partitioning 선택 시점은?

1. 데이터 크기가 너무 커서 분산 저장 필요할 때

2. 지역 분리

3. 로드 벨런싱

4. 아카이빙

 

☑️ Horizontal Partitioning을 적용할 때 생각해볼 점은?

1. 데이터 분할 기준 결정의 어려움

2. 데이터 일관성 유지

3. 파티션 간 조인 비용 증가 & 쿼리 성능 최적화의 여려움

4. 파티션간 데이터 이동

5. 장애 복구의 복잡성

 

 

2. Verivcal Partitioning

☑️ Vertical Partitioning이란?

테이블의 일부 열을 빼내는 형태로 분할한다.

위와 같이 User의 정보를 두 개의 다른 테이블로 분할하여 관리한다.

그리고 PK(UserId)를 통해서 두 테이블은 링킹되어 있어, 단일 유저에 대한 정보를 쉽게 가져올 수 있다.

 

☑️ Vertical Partitioning 선택 시점은?

1. 테이블 크기가 너무 커서 I/O 성능 저하

2. 데이터 접근 패턴이 다를 때

3. 보안 및 접근 제어 : 민감한 데이터를 별도 테이블로 분리하여 보안을 강화  

4. 저장소 최적화 : 덜 중요한 컬럼을 저비용 스토리지로 이동하여 비용 절감

 

☑️ Vertical Partitioning을 적용할 때 생각해볼 점은?

1. 조인 성능 문제

∙ 데이터를 여러 테이블로 나누면서, 자주 사용되는 쿼리에서 조인이 필요할 경우

 

2. 데이터 일관성

∙ 데이터가 영러 테이블에 분리되므로, 업데이트나 삽입 시 동기화를 유지하는 것이 어려움

 

3. 설계 복잡성 증가

∙ 처음에 테이블 설계를 제대로 하지 않으면 잘못된 분리로 인해 성능 저하 야기

 

4. 애플리케이션 코드 복잡성

∙ 여러 테이블엥서 데이터를 가져와야 하므로 코드의 복잡성 증가

 

 

 

 

 


'CS > Database' 카테고리의 다른 글

Sharding  (0) 2024.11.22
SQL과 NoSQL  (0) 2024.11.20
MVCC (Multi Version Concurrency Control)  (0) 2024.10.02
Lock을 활용한 concurrency control  (0) 2024.10.02
Isolation 레벨과 이상 현상들  (0) 2024.09.26
'CS/Database' 카테고리의 다른 글
  • Sharding
  • SQL과 NoSQL
  • MVCC (Multi Version Concurrency Control)
  • Lock을 활용한 concurrency control
gilbert9172
gilbert9172
gilbert9172 님의 블로그 입니다.
  • gilbert9172
    バックエンド
    gilbert9172
  • 전체
    오늘
    어제
    • All Categories (181)
      • 우테코 7기 (21)
        • 1주차 (8)
        • 2주차 (5)
        • 3주차 (6)
      • Langauge (4)
        • Java (3)
        • Kotlin (1)
      • Back-End (13)
        • SpringBoot (1)
        • Trouble Shooting (0)
        • Setup & Configuration (1)
        • SQL (3)
        • Redis (8)
      • Architecture (6)
        • Multi Module (1)
        • DDD (5)
      • CS (30)
        • Data Structure (6)
        • Operating System (0)
        • Network (12)
        • Database (10)
        • Design Pattern (2)
      • Algorithm (78)
        • 내용 정리 (18)
        • 문제풀이 (60)
      • DevOps (6)
        • AWS (5)
        • Git (1)
      • Front-End (1)
        • Trouble Shooting (1)
      • Project (6)
        • 페이스콕 (6)
      • Book (15)
        • 이벤트 기반 마이크로서비스 구축 (6)
        • 친절한 SQL 튜닝 (5)
        • Spring Batch Docs (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부분단조성
    Two-Pointer
    greedy
    binarysearch
    sliding-window
    Back-Tracking
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
gilbert9172
Partitioning
상단으로

티스토리툴바