❐ Description
들어가기
- Part1에서는
- 단일 장비에 데이터를 저장할 때, 적용하는 데이터 시스템 측면에 대해서 학습함
- Part2에서는
- 저장소와 데이터 검색에 동시에 N개의 장비가 관여할 때 발생하는 일에 대해서 학습하게 될 예정
왜 분산된 데이터베이스가 필요할까?
❐ 고부하로 확장 (Scaling to Higher load)
공유 메모리 아키텍쳐
- 수직확장 또는 용량 확장이라고 함
- 빠른 상호 연결로 모든 CPU가 메모리나 디스크의 모든 부분에 접근할 수 있는 아키텍쳐
공유 메모리 접근 방식의 문제점
- 비용이 선형적인 추세보다 훨씨 바르게 증가함.
- 제한적인 내결함성을 제공
공유 디스크 아키텍처
- 독립적인 CPU와 RAM을 탑재한 여러 장비를 사용
- 하지만, 데이터 저장은 장비간 공유하는 디스크에 배열
- 이때 여러 장비는 고속 네트워크로 연결
- 일부 데이터 웨어하우스 작업부하에 이 아키텍쳐를 사용
- 하지만, 잠금 경합과 오버헤드가 공유 디스크 접근 방식의 확정성을 제한
❐ 비공유 아키테처
비공유 아키텍처
- 수평 확장 또는 규모 확장이라고 함
- 데이터베이스 소프트웨어를 수행하는 각 장비나 가상 장비를 노드라고 부름
- 각 노드는 CPU, RAM, 디스크를 독립적으로 사용
- 노드 간 codination은 일반적인 네트워크를 사용해 소프트웨어 수준에서 수행됨
- 특별한 하드웨어를 필요로 하지 않으므로 가격 대비 성능이 가장 좋은 시스템을 사용할 수 있음.
- 잠재적으로 여러 지리적인 영역에 걸쳐 데이터를 분산해 지연 시간을 줄임
- 2부에서는 비공유 아키텍처에 중점을 둠
- 가장 좋은 선택이라기 보단,
비공유 아키텍처를 사용할 때 애플리케이션 개발자가 주의해야 하는 점을 다룸
- 많은 장점도 있지만, 단점도 있음.
❐ 복제 대 파티셔닝
여러 노드에 데이터를 분산하는 방법
- 복제
- 같은 데이터의 복사본을 잠재적으로 다른 위치에 있는 여러 노드에 유지
- 복제는 중복성을 제공
- 5장에서 나옴
- 파티셔닝
- 큰 데이터베이스를 파티션이라는 작은 서브넷으로 나누고 각 파티션은 각기 다른 노드에 할당
- 6장에서 나옴
트랜잭션
- 7장에서 설명
- 트랜잭션을 이해하면, 데이터 시스템에서 발생하는 많은 문제를 설명하는데 도움이 됨