[TIL] 데이터베이스 수평분할, 수직분할

sooyoung choi·2024년 1월 29일
0

CS

목록 보기
17/21
post-thumbnail

NoSQL과 RDBMS 차이점은 항상 가볍다, 무겁다, 뭐 이런 얘기만 알고 있었는데 분할 관점에서 봤을때 훨씬 두 데이터베이스의 차이를 잘 알게 되어 정리해보려고 한다.

데이터베이스 분할, Partitioning

  • 데이터를 여러 개의 작은 조각으로 나누는 작업
  • 데이터 관리 용이성, 성능, 가용성 등의 향상을 위해 사용되며 분할된 각 부분을 파티션 이라 부른다.
  • 데이터베이스 확장성 확보 방안 중 Scale-Out에 해당된다.

수평 분할

  • 데이터베이스의 테이블을 행(Row) 단위로 나누는 것을 의미
  • 샤딩

샤딩?

  • 수평 파티셔닝을 했을 때 분할 된 파티셔닝을 가리키는 말 샤드
  • 샤드 단위의 결정은 분할, 샤딩을 어떤 기준으로, 어떤 것을 key로 분할 하느냐에 달려있다.

장점

  • 성능 향상
    -데이터를 여러 파티션으로 나눠서 동시에 처리하니까 빨라진다.
  • 확장성
    - 새로운 서버를 추가하면 더 많은 데이터 처리 가능하다
  • 보안
    - 각 파티션 별로 권한 따로 설정 가능하다.
  • 유지보수 쉬움
    - 작은 파티션이 관리가 편함.

단점

  • 데이터 중복
    - 특정 작업 때문에 데이터 중복될 수 있음.
  • 쿼리 복잡성 증가
    - 데이터 찾기 위해 여러 파티션을 찾아야 할 수 있음.
  • 파티션 간에 부하 균등하게 분산시키기 어려움.
  • 데이터 무결성 관리(일관성 유지) 어려움.

수직 분할

  • 테이블을 열(Column)을 기준으로 분할하는 형태
  • 테이블의 컬럼들중에 특정 컬럼을 쪼개서 따로 저장하는 것
  • 스키마(Schema)를 나누고 데이터가 따라 옮겨가는 것을 말한다.
    하나의 엔티티를 2개 이상으로 분리하는 작업

장점

  • 성능 개선
    - 자주 사용하는 열만 가져오니까 쿼리 속도가 빨라짐.
  • 보안 강화
    - 중요한 열을 따로 저장해 더 안전함.
  • 쉬운 유지보수
    - 열 단위로 데이터베이스 관리가 편함.

단점

  • 쿼리 복잡성
    - 필요한 정보를 얻기 위해 여러 테이블을 참조해야 할 수 있음.
  • 중복 데이터
    - 여러 테이블에 동일한 정보가 중복 저장될 수 있음.
  • 확장성 제한
    - 열 기반으로 분할되어 새로운 데이터 추가 어려울 수 있음.

참고자료
https://blog.naver.com/islove8587/221018587391
https://hckcksrl.medium.com/db-%ED%8C%8C%ED%8B%B0%EC%85%94%EB%8B%9D-31cbe8c329cb
https://yunamom.tistory.com/291

0개의 댓글