[Data-Intensive] Ch_intro. 분산 데이터
by Jaesang Lim˚
저장소와 검색
‘데이터 중심 애플리케이션 설계’를 읽고 정리하고자함
저장소와 데이터 검색에 여러 장비가 관여한다면..?
여러 장비 간 분산 데이터베이스를 필요로 하는 이유
- 확장성
- 데이터 크기, 읽기 부하, 쓰기 부하가 단일 장비에서 다룰 수 있는 양보다 많으면 부하를 여러 장비로 분배할 수 있음
- 내결함성/고가용성
- 장비 하나가 죽더라도 애플리케이션은 계속 동작해야한다면 여러 장비를 사용해 중복성 제공할 수 있음
- 장비 하나가 실패하면 다른 하나가 이어받는 방식으로
- 지연시간
- 사용자와 지리적으로 가까운 곳에서 서비스를 제공하여, 네트워크 패킷을 기다리는 시간을 줄임
고부하로 확장
공유 아키텍쳐
- 수직 확장 (용량확장, Scale-Up)
- 많은 CPU, 메모리, 디스크를 하나의 OS로 결합해서 사용
- 공유 메모리 아키텍처(shared-memory architecture) 이라고도 함
- 모든 CPU가 메모리나 디스크의 모든 부분을 접근할 수 있어, 모든 구성요소를 단일 장비처럼 다룸
- 문제점
- 비용이 비쌈
- 병목 현상으로 두배 크기의 장비가 반드시 두배의 부하를 처리할 수 있는 것도 아님
- 제한적인 내결함성을 제공
- ‘핫 스왑’ : 장비를 중단시키지 않고 디스크,메모리,CPU까지도 교체할 수 있음
- 공유 디스크 아키텍처(shared-disk architecture) 방법도 있음
- 독립적인 CPU, 메모리를 탑재한 여러 장비를 사용하지만, 디스크는 공유
- 여러 장비를 고속 네트워크로 연결 ( NAS,SAN 같이)
- 일부 DW 작업부하에 이 아키텍쳐를 활용하지만, 잠금 경합과 오버헤드가 공유 디스크 접근 방식의 확장성을 제한한다는 단점이 있음
비공유 아키텍쳐
- 수평 확장 (규모확장, Scale-Out)
- 각 노드는 CPU, 메모리, 디스크를 독립적으로 사용함
- 노드 간 코디네이터는 일반적인 네트워크를 사용해 SW수준에서 수행함
- 가격 대비 성능이 가장 좋은 시스템을 사용할 수 있음
-
데이터를 여러 노드에 분산하려면, 분산 시스템에서 발생하는 제약 조건과 trade-off를 알아야함!
- 비공유 아키텍처는 애플리케이션의 복잡도를 야기하고 사용할 수 있는 데이터 모델의 표현이 제한 적
복제 대 파티셔닝
여러 노드에 데이터를 분산하는 방법
- 복제
- 같은 데이터의 복제본을 여러 노드에 유지
- 중복성 제공해, 일부 노드가 사용불가라면 해당 데이터는 남은 노드에서 여전히 제공 가능
- 성능 향상에도 도움을 줌
- 파티셔닝
- 큰 데이터베이스를 파티션이라는 작은 서브셋으로 나눔
- 각 파티션은 각기 다를 노드에 할당함 (샤딩이라고도 함)
Subscribe via RSS