[CS] Nosql이 수평확장(Scale Out)에 유리한 이유

코딩하는계란·2022년 4월 13일
1

CS

목록 보기
8/8
post-thumbnail

NoSQL은 SQL과 다르게 수평확장에 유리하다고 알고 있고 그렇게 공부했다.
이유를 알고싶지만 생각보다 이유에 대한 레퍼런스가 적었기에 이유를 알아보려한다.

📌 RDB의 수평확장

예를 들어 위의 경우 서버를 2개를 사용하여 수평확장을 한다면
A서버: 1, 2
B서버: 3, 4
이렇게 데이터를 나눌수 있을것이다.

아직은 큰문제가 없어보이는데 여기서 테이블과 서버를 추가해보자

이런 테이블 2개와 C서버를 추가한다고 가정하자
게시글
A서버: 1, 2
B서버: 3
C서버: 4

댓글
A서버: 1
B서버: 2, 3
C서버: 4

이렇게 되면 이제 더 복잡해지는데
데이터를 어떤 기준으로 나누어 저장할지 부터
만약 데이터를 나눴는데 A서버에 있는 게시글1에 댓글 3, 4가 속해 있다면 모든 서버를 뒤져야 원하는 결과를 가져올 수 있을것이다.

이렇게 관계가 생길수록 데이터가 늘어날수록 RDB에서는 수평확장에 대한 관리가 복잡해진다.

그렇다고 데이터를 NoSQL처럼 중복해서 저장하면 일관성(Consistency)이 떨어져 정상적인 Join관 ACID트랜잭션 기능을 사용할 수가 없다.


📌 NoSQL의 수평확장

이렇게 돼있는 NoSQL 컬렉션이라면
A서버: 1
B서버: 2
C서버: 3
이렇게 단순히 구간만 잘라서 데이터를 나누어 줄 수 있다.
이런 특징은 NoSQL의 임베드 방식에 따라서 나타나는 특징이라 생각한다.


📌 정리

SQL에서는 일관성을 보장해야하기 때문에 수평확장이 불가능하고 일관성을 보장하자니 수평확장을 통해 데이터를 관리하기 굉장히 복잡해진다.
NoSQL은 임베드 방식으로 인해 단순히 구간만 나누어 주어도 적절히 분산이 가능하고 사용함에 이상이 없다.


참고

profile
코딩💻 고양이😺

1개의 댓글

comment-user-thumbnail
2022년 12월 28일

따봉

답글 달기