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