본문 바로가기

미래를 위한 준비/정보처리기사

정보처리기사 12일차

사용자의 요구를 추출하는거 아니였나?


포함하지 않는 것

 


1회전만 했으니 8과 3이 바뀌었을 것

 


연결은 선으로


수평분할?

1. 수평(horizontal) 파티셔닝
하나의 테이블의 각 행을 다른 테이블에 분산시키는 것이다.


2. 수직(vertical) 파티셔닝
테이블의 일부 열을 빼내는 형태로 분할한다.

 

수평 분할


하나의 테이블의 각 행을 다른 테이블에 분산시키는 것이다. 예를 들어 방대한 고객 데이터 테이블을 성별에 따라 '남녀'로 나누어 CustomerMen과 CustomerWomen 두 개의 테이블로 분할한다. 테이블은 2개로 분할되지만, 모든 고객을 나타내기 위해 양자를 결합한 뷰를 생성하면 된다.범위 분할

분할 키 값이 범위 내에 있는지 여부로 구분한다.

예를 들어, 우편 번호를 분할 키로 수평분할하는 경우이다. 또한 일별, 월별, 분기별 등의 순차적인 데이터를 관리하는 테이블에 많이 사용된다.

 

목록 분할

특정 컬럼의 특정 값을 기준으로 파티셔닝을 하는 방식이다.

 

예를 들어, Country 라는 컬럼의 값이 Iceland , Norway , Sweden , Finland , Denmark 중 하나에 있는 행을 빼낼 때 북유럽 국가 파티션을 구축 할 수 있다.

 

특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능하며 주로 이질적인 값이 많지 않고 분포도가 비슷하고 대소문자를 구분하는데 허용문자 외 다른 문자를 입력시 에러가 발생한다. 다양한 SQL의 액세스 패스에서 해당 컬럼의 조건이 많이 들어오는 경우에 유용하게 사용된다.

해시 분할

특정 컬럼 값에 해시 함수를 적용하여 분할하는 방식으로, 데이터의 관리 보다는 성능 향상에 목적을 둔다.

 

예를 들어, 4개의 파티션으로 분할하는 경우 해시 함수는 0-3의 정수를 돌려준다.

 

레인지 파티셔닝은 각 범위에 따라 데이터의 양이 일정하지 않아 분포도가 일정하지 않은 단점이 있지만, 해시 파티셔닝은 이러한 단점을 보완하여 일정한 분포도를 가진 파티션으로 나누고, 균등한 분포도를 가질 수 있도록 조율하여 병렬 프로세싱으로 성능을 높인다. 실제로 분포도를 정의하기 어려운 테이블을 파티셔닝을 할 때 많이 이용하고 2의 제곱수로 파티셔닝하는 것이 일반적이다. 해시 파티셔닝으로 구분된 파티션들은 동일한 논리, 물리적 속성을 가진다. 또한 레인지 파티션과 달리 각 파티션에 지정된 값들을 데이터베이스 관리 시스템이 결정하므로 각 파티션에 어떤 값들이 들어있는지 알 수가 없다. 하지만 대용량의 분포도가 일정치 않은 테이블을 마이그레이션 할 때는 프로그램 병렬 방식과 유용하게 쓰일 수 있다.

합성 분할

상기 기술을 결합하는 것을 의미한다. 예를 들면 먼저 범위 분할을 하고, 다음에 해시 분할 같은 것을 생각한다. 컨시스턴트 해시법은 해시 분할 및 목록 분할의 합성으로 간주 될 수 있고 키 공간을 해시 축소하므로써 알람할 수 있게 한다.

라운드로빈 분할

라운드로빈 분할은 파티션에 행의 고른 분포를 원할 때 사용한다. 그러나, 해시분할과 달리 분할 칼럼을 명시할 필요가 없다. 라운드 로빈 분할로 회전하면서 새로운 행이 파티션에 할당된다. 테이블은 기본키가 반드시 필요하진 않다.

 

 

 

 


 

 

728x90

'미래를 위한 준비 > 정보처리기사' 카테고리의 다른 글

정보처리기사 14일차  (0) 2021.08.08
정보처리기사 13일차  (0) 2021.08.07
정보처리기사 11일차  (0) 2021.08.05
정보처리기사 10일차  (0) 2021.08.04
정보처리기사 9일차  (0) 2021.08.03