5. 파일의 정렬 / 합병

45
5. 파파파 파파 / 파파 Sort/Merge 파파 , 파파 , 파파파파 , 파파 파파파파 파파

description

5. 파일의 정렬 / 합병. Sort/Merge 개념 , 방법 , 유틸리티 , 저장 장치와의 관계. 5.1 정렬 / 합병의 개요. 정렬( sorting) 내부 정렬( internal sorting) 소량 데이터에 대한 메인 메모리 내에서의 정렬 레코드 판독 , 기록에 걸리는 시간과는 무관 외부 정렬( external sorting) 메인 메모리 용량을 초과하는 보조 저장장치에 저장된 대량 데이터 파일을 정렬 레코드 판독 , 기록에 걸리는 시간이 중요 - PowerPoint PPT Presentation

Transcript of 5. 파일의 정렬 / 합병

Page 1: 5.  파일의 정렬 / 합병

5. 파일의 정렬 / 합병Sort/Merge 개념 , 방법 , 유틸리티 ,저장 장치와의 관계

Page 2: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 2

5.1 정렬 / 합병의 개요

정렬 (sorting) 내부 정렬 (internal sorting)

• 소량 데이터에 대한 메인 메모리 내에서의 정렬• 레코드 판독 , 기록에 걸리는 시간과는 무관

외부 정렬 (external sorting)

• 메인 메모리 용량을 초과하는 보조 저장장치에 저장된 대량 데이터 파일을 정렬

• 레코드 판독 , 기록에 걸리는 시간이 중요• 정렬 / 합병 (sort/merge) – 파일 정렬 기법

• 런 (run) : 하나의 파일을 여러 개로 분할하여 내부 정렬 기법으로 정렬시킨 서브파일 (subfile)

• 런들을 합병 (merge) 하여 전체를 하나의 정렬된 파일로 구성

Page 3: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 3

NO

NO

sort/merge algorithm

Page 4: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 4

▶ 파일 정렬 / 합병 단계

1. 정렬 단계 (sort phase) 정렬할 파일의 레코드들을 지정된 길이의 서브 파일로

분할 / 정렬하여 런 (run) 을 만들고 , 입력 파일로 분배하는 단계

2. 합병 단계 (merge phase) 정렬된 런들을 합병해서 보다 큰 런으로 만들고 , 다시

입력 파일로 재분배하여 합하는 방식을 통하여 ,

최종 모든 레코드들이 하나의 런에 포함되는 단계

Page 5: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 5

▶ 정렬 단계

런 생성 방법 내부 정렬 (internal sort)

대체 선택 (replacement selection)

자연 선택 (natural selection)

입력 파일 ( 레코드 키 값 ) 의 예109 49 34 68 45 2 60 38 28 47 16 19 34 55 98 78 76 40 35 86 10 27 61 92 99 72 11 229 16 80 73 18 12 89 50 46 36 67 93 22 1483 44 52 59 10 38 76 16 24 85

Page 6: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 6

(1) 내부 정렬 (internal sort)

런 생성 방법1. 파일을 n 레코드씩 분할2. 분할된 레코드들을 내부 정렬 기법으로 정렬

런 생성 결과 마지막 런을 제외하고

모두 길이가 동일 (n=5 경우 )

런 1 : 34 45 49 68 109 런 2 : 2 28 38 47 60 런 3 : 16 19 34 55 98 런 4 : 35 40 76 78 86 런 5 : 10 27 61 92 99 런 6 : 2 11 16 29 72 런 7 : 12 18 73 80 89 런 8 : 36 46 50 67 93 런 9 : 14 22 44 52 83런 10 : 10 16 38 59 76런 11 : 24 85

Page 7: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 7

(2) 대체 선택 (replacement selection)

런 생성 방법1. 버퍼 크기에 따른 m 개의 레코드를 판독하고 첫 번째 런 생성 시작2. 버퍼로부터 키 값이 가장 작은 레코드를 선정해서 런에 출력3. 입력 파일에서 다음 레코드를 판독해 출력된 레코드와 버퍼에 대체

• if ( 입력 레코드의 키 값 < 출력된 레코드의 키 값 )then 레코드에 “동결 (frozen)” 로 표시

• 동결된 레코드를 제외하고 나머지 동결되지 않은 레코드에 대해 단계 2 부터 재실행

4. 동결 표시를 해제하고 단계 2 에서 새로운 런을 생성 작업을 진행

특징 입력 파일의 일부 정렬된 레코드들의 순서를 이용 내부 정렬을 이용한 경우보다 런이 큼 ( 런의 평균 예상 길이 : 2m)

Page 8: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부

Replacement Selection 과정

8

버퍼

109 49 34 68 45

런 1

참고 : { } 는 출력 , [ ] 는 동결

109 49 {34} 68 45 34

109 49 2 68 45 34

109 49 [2] 68 45 34

109 49 [2] 68 {45} 34 45

109 49 [2] 68 60 34 45

109 {49} [2] 68 60 34 45 49

109 38 [2] 68 60 34 45 49

109 [38] [2] 68 60 34 45 49

109 [38] [2] 68 {60} 34 45 49 60

109 [38] [2] 68 28 34 45 49 60

109 [38] [2] 68 [28] 34 45 49 60

109 [38] [2] {68} [28] 34 45 49 60 68

109 [38] [2] 47 [28] 34 45 49 60 68

109 [38] [2] [47] [28] 34 45 49 60 68

{109} [38] [2] [47] [28] 34 45 49 60 68 109

16 [38] [2] [47] [28] 34 45 49 60 68 109

[16] [38] [2] [47] [28] 34 45 49 60 68 109

16 38 2 47 28 런 2

16 38 {2} 47 28 2

16 38 19 47 28 2

{16} 38 19 47 28 2 16

34 38 19 47 28 2 16

34 38 {19} 47 28 2 16 19

34 38 35 47 28 2 16 19

……… 생략……… ……… 생략………

[10] [27] [35] [40] [61] 2 16 19 28 34 38 47 55 76 78 86 98

Page 9: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 9

(2) 대체 선택 (replacement selection)

런 생성 결과 (m=5)

런 1 : 34 45 49 60 68 109런 2 : 2 16 19 28 34 38 47 55 76 78 86 98런 3 : 10 27 35 40 61 72 92 99런 4 : 2 11 16 18 29 50 73 80 89 93런 5 : 12 14 22 36 44 46 52 59 67 76 83 85런 6 : 10 16 24 38

Page 10: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 10

(3) 자연 선택 (natural selection)

특징 동결된 레코드들을 버퍼에 유지하지 않고 보조 저장 장치 의 예비

저장소 (reservoir) 에 별도 저장 동결된 레코드가 계속 버퍼를 차지하는 것 예방

하나의 런 생성 작업은 저장소가 꽉 차거나 입력 파일의 끝에 도달할 때까지 계속

런을 길게 만들어 런 수를 줄임으로써 합병 비용을 줄임

런 생성 결과 ( 버퍼 크기 (m)=5, 저장소 크기 (m’)=5)런 1 : 34 45 47 49 60 68 109런 2 : 2 16 19 28 34 38 40 55 61 76 78 86 92 98 99런 3 : 10 11 16 27 29 35 50 67 72 73 80 89 93런 4 : 2 12 14 18 22 36 44 46 52 59 76 83 85런 5 : 10 16 24 38

Page 11: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부

Natural Selection 과정

11

버퍼

109 49 34 68 45

외부

예비

저장소런 1

109 49 {34} 68 45 34

109 49 {34} 68 45 2 34

109 49 60 68 45 2 34

109 49 60 68 {45} 2 34 45

109 49 60 68 {45} 2 38 34 45

109 49 60 68 {45} 2 38 28 34 45

109 49 60 68 47 2 38 28 34 45

109 49 60 68 {47} 2 38 28 34 45 47

109 49 60 68 {47} 2 38 28 16 34 45 47

109 49 60 68 {47} 2 38 28 16 19 34 45 47

109 {49} 60 68 {47} 2 38 28 16 19 34 45 47 49

109 {49}{60} 68 {47} 2 38 28 16 19 34 45 47 49 60

109 {49}{60}{68}{47} 2 38 28 16 19 34 45 47 49 60 68

{109}{49}{60}{68}{47} 2 38 28 16 19 34 45 47 49 60 68 109

비움 2 38 28 16 19 34 45 47 49 60 68 109

2 38 28 16 19 34 45 47 49 60 68 109

2 16 38 2 19 34 45 47 49 60 68 109

2 16 19 38 28 34 45 47 49 60 68 109

2 16 19 28 38 34 45 47 49 60 68 109

2 16 19 28 38 34 45 47 49 60 68 109

{2} 16 19 28 38

런 2

2

34 16 19 28 38 2

34 {16} 19 28 38 2 16

34 55 19 28 38 2 16

34 55 {19} 28 38 2 16 19

……… 생략……… ……… 생략……… ……… 생략………

{99}{92}{98}{78}{86} 35 10 27 72 11

2 16 19 28 34 38 40

55 61 76 78 86 92 98

99

Page 12: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 12

▶ 런 생성 방법의 비교

내부 정렬 마지막 런을 제외하고 런 길이가 동일 런 길이 예측으로 합병 알고리즘 간단

대체 선택 내부 정렬보다 평균적으로 긴 런을 생성 런이 길수록 합병 비용이 적음 런이 일정치 않아 정렬 / 합병 알고리즘이 복잡

자연 선택 다른 방법보다 더 긴 런을 생성할 수 있음 예비 저장소로의 입출력 부담 발생 긴 런으로 정렬 / 합병 단계를 줄임

Page 13: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 13

▶ 정렬 / 합병 기법의 차이 정렬 / 합병 기법의 차별화 요소

적용하는 내부 정렬 방식 내부정렬을 위해 할당된 메인 메모리의 크기 정렬된 런들의 보조 저장장치에서의 저장 분포 정렬 / 합병 단계에서 동시에 처리할 수 있는 런의 수

요소에 따라 런의 수와 합병의 패스 (pass) 수가 결정• 패스 (pass): 최종 파일 생성을 위한 정렬 / 합병의 반복적 실행 단계

정렬 / 합병 기법의 성능 비교 정렬 단계에서 만들어지는 런의 수와 합병의 패스 수 비교 보조 저장장치에 대한 상대적 참조 빈도수 (reference frequency)

• 전체 레코드 집합에 대해 수행되어야 할 정렬 / 합병의 패스 수 비교 레코드들의 판독 / 기록 횟수

• 가능한 런이 길게 만들어지면 합병해야 될 런의 수는 최소화• 동시에 합병할 수 있는 런의 수를 늘리면 합병의 패스 수는 감소• 입력 런을 보조 저장장치에 분산 저장하면 합병에 필요한 입출력뿐만 아니라 부수적인 입출력 연산도 동반

Page 14: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 14

▶ 합병 단계

합병 수행 방법 m- 원 합병 (m-way merge)

균형 합병 (balanced merge)

다단계 합병 (polyphase merge)

계단식 합병 (cascade merge)

Page 15: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 15

5.2 m- 원 합병 (m-way merge)

특징 m 개의 입력 파일을 동시에 처리하는 합병 m 개의 입력 파일로부터 하나의 출력 파일을 생성

• 총 m+1 개의 파일을 사용• 입력 파일 수를 합병의 원 수 (degree) 라 함

한 패스에 합병이 끝나지 않으면 , 런들을 입력파일로 다시 분배하기 위해 복사와 이동을 반복 ( 많은 입출력 수반 )

이상적인 정렬 / 합병 : m 개의 런에 m 개의 입력 파일을 사용하여 한번의 m- 원 합병으로 완료

2- 원 합병의 경우 한번의 패스 : 합병된 런의 크기는 2 배 , 런의 수는 반 N 개의 런으로 분할된 파일 정렬 위한 패스 수 :

Nlog

Page 16: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 16

▶ 6 개의 런에 대한 2- 원 합병

내부 정렬 1000 레코드 씩 정렬된 6 개의 런

6000 레코드

(1) 정렬단계

1

1 차 합병

2

런 54001-5000

런 32001-3000

런 11-1000

런 65001-6000

런 43001-4000

런 21001-2000

3 런 (1+2)런 (3+4)런 (5+6)

에 있는 3 개의 런을 2 개의 입력 파일로 분배3

(3) 2 차 합병

12 차 합병

2

3런 (5+6) 런 (1+2)

런 (3+4)

런 (1+2+3+4)런 (5+6)

(4) 3 차 합병

(2 개의 입력 파일과 1 개의 출력 파일 )

3 차 합병 3

런 (1+2+3+4)

런 (5+6)

런 (1+2+3+4+5+6)

1

2

정렬된 6 개의 런을 2 개의 입력 파일로 분배 (2) 1 차 합병

1

Page 17: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 17

▶ 12 개의 런에 대한 2- 원 합병

1 내부 정렬 500 레코드 씩 정렬된 12 개의 런

6000 레코드

정렬된 12 개의 런을 2 개의 입력 파일로 분배

1

1 차 합병

2

런 11 런 9 런 1

런 12 런 10 런 2

3

런 (1+2)런 (3+4) .....런 (11+12)

에 있는 6 개의 런을 2 개의 입력 파일로 분배3

(3) 2 차 합병

1

2 차 합병

2

3

런 (9+10) 런 (5+6) 런 (1+2) 런 (1+2+3+4)런 (5+6+7+8)런 (9+10+11+12)

......

......

런 (11+12) 런 (7+8) 런 (3+4)

(1) 정렬단계

(2) 1 차 합병

에 있는 3 개의 런을 2 개의 입력 파일로 분배3

Page 18: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 18

▶ 12 개의 런에 대한 2- 원 합병

(4) 3 차 합병

런 (1+2+3+4)런 (9+10+11+12)

런 (1+2+3+4+5+6+7+8)런 (9+10+11+12)

런 (5+6+7+8)

(5) 4 차 합병

런 (1+2+3+4+5+6+7+8)

런 (1+2+3+ ... + 11 +12)

런 (9+10+11+12)

Page 19: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 19

▶ 6 개의 런에 대한 3- 원 합병

(3 개의 입력 파일과 1 개의 출력 파일 )

1 내부 정렬 1000 레코드 씩 정렬된 6 개의 런

6000 레코드

정렬된 6 개의 런을 3 개의 입력 파일로 분배

1 차 합병

런 4 런 1

런 5 런 2 4런 (1+2+3)런 (4+5+6)

에 있는 런을 3 개의 입력 파일로 분배 ( 이 경우에는 2 개의 파일만 사용됨 ) 4

(3) 2 차 합병

2 차 합병 3

런 (1+2+3)

런 (4+5+6)런 (1+2+..+6)

런 6 런 3

1

2

3

1

2

(1) 정렬단계

(2) 1 차 합병

Page 20: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 20

▶ 선택 트리 (selection tree) (1)

m 개의 런을 하나의 큰 런으로 정렬 ( 비교 ) 하는 작업 m 개 런에서 가장 작은 키 값의 레코드를 계속 선택 ,

출력 패스 당 m-1 번 비교 부담 선택 트리 : 비교 횟수를 줄일 수 있음 (m>2)

선택 트리의 종류 승자 트리 (winner tree)

패자 트리 (loser tree)

Page 21: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 21

선택 트리 (2)

승자 트리 (winner tree) 특징

• 완전 이진 트리• 각 단말 노드는 각 런의 최소 키 값 원소를 나타냄• 내부 노드는 자식 중에서 가장 작은 키 값을 가진 원소를

나타냄

런이 8 개 (k=8) 인 경우 승자 트리 예

7

7

10 7[4]

11 10 21 7

9

9 18[6]

9 10 50 18[15]

[5] [7]

[3][2]

[1]

[8] [9] [10] [11] [12] [13] [14]

1618

런 1

2228

런 2

2224

런 3

1326

런 4

1320

런 5

1218

런 6

5259

런 7

1921

런 8

30 23

Page 22: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 22

선택 트리 (3)

승자 트리 구축 과정• 가장 작은 키 값의 원소가 승자로 올라가는 토너먼트 경기로 표현• 각 내부 노드 : 두 자식 노드 원소의 토너먼트 승자 ( 작은 키 )• 루트 노드 : 전체 토너먼트 승자 , 즉 트리에서 가장 작은 키 값

가진 원소

승자 트리의 표현• 완전 이진 트리의 특성상 순차 표현에서 유리• 인덱스 값이 i 인 노드의 두 자식 인덱스는 2i 와 2i+1

합병의 진행• 루트가 결정되는 대로 순서순차에 출력 ( 먼저 7 출력 )• 다음 원소 즉 키 값이 13 인 원소가 승자 트리로 들어감• 승자 트리를 다시 재구성

• 노드 11 에서부터 루트까지의 경로를 따라가면서 형제 노드간 토너먼트 진행

Page 23: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 23

선택 트리 (4)

– 다시 만들어진 승자 트리의 예

• 순서 순차 구축을 계속하여 최종 하나의 큰 런으로 정렬 완료

23

9

10

10 13[4]

11 10 21 13

9

9 18[6]

9 10 50 18[15]

[5] [7]

[3][2]

[1]

[8] [9] [10] [11] [12] [13] [14]

1618

런 1

2228

런 2

2224

런 3

2630

런 4

1320

런 5

1218

런 6

5259

런 7

1921

런 8

Page 24: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 24

선택 트리 (5)

패자 트리 (loser tree)

루트 위에 0 번 노드가 추가된 완전 이진 트리

(1)단말 노드 : 각 런의 최소 키 값을 가진 원소

(2) 내부 노드 : 토너먼트의 승자대신 패자 원소 ( 승자는 위의 부모 노드에서 토너먼트 진행 )

(3) 루트 (1 번 노드 ) : 결승 토너먼트의 패자

(4) 0 번 노드 : 전체 승자 ( 루트 위에 별도로 위치하여 출력 )

Page 25: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부

23

9

10

11 21[4]

11 10 21 7

18

10 50[6]

9 10 50 18[15]

[5] [7]

[3][2]

[1]

[8] [9] [10] [11] [12] [13] [14]

1618

런 1

2228

런 2

2224

런 3

1326

런 4

1320

런 5

1218

런 6

5259

런 7

1921

런 8

30

7

[0]

출력

23

25

선택 트리 (6)

런이 8 개 (k=8) 인 패자 트리의 예(7 의 출력 후 원래 7 이 있던런 4 의 13 이 노드 [11] 에 삽입되고 , 패자 트리를 재구축 )

Page 26: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 26

선택 트리 (7)

패자 트리 구축 과정• 단말 노드 : 각 런의 최소 키 값 원소• 내부 노드• 두 자식 노드들이 부모노드에서 토너먼트 경기를 수행• 패자는 부모 노드에 남음• 승자는 그 위 부모 노드로 올라가서 다시 토너먼트 경기를 계속

• 1 번 루트 노드• 마지막 패자는 1 번 루트 노드에 남음• 승자는 전체 토너먼트의 승자로서 0 번 노드에서 순서로 출력됨

합병의 진행• 출력된 원소가 속한 런 4 의 다음 원소 , 즉 키 값이 13 인 원소를

패자 트리 노드 11 에 삽입• 패자 트리를 다시 재구성• 토너먼트는 노드 11 에서부터 루트 노드 1 까지의 경로를 따라 경기를 진행

( 다만 형제 노드 대신 부모 노드와 경기를 진행함 : 교재 참고 )

Page 27: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 27

5.3 균형 합병 (balanced merge)

M- 원 합병의 단점 : 파일의 재분배에 많은 I/O 필요 * 한 패스의 출력 파일을 다음 패스의 입력에 사용하는 분배가 입출력의 ½ 소요

균형합병 출력할 때 미리 다음 단계에 사용할 입력 파일로 재분배 ( 출력 파일을 다음 단계의 입력 파일로 직접 사용 )

• m- 원 자연합병 : m + 1 개의 파일 필요• m- 원 균형합병 : 2m 개의 파일 필요 (m 입력파일 , m

출력파일 )

각 합병 단계 후 런의 총수는 합병 차수로 나눈 만큼 감소 런의 길이는 합병 차수의 두 배씩 증가 총 합병 패스 O(logm N) , N : 초기 런의 수

Page 28: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 28

▶ 12 개의 런에 대한 2- 원 균형 합병

(2) 1 차 합병

(3) 2 차 합병

런 11 런 9 ... 런 1런 (1+2)런 (5+6)런 (9+10)

런 12 런 10 ... 런 2

1

1 차 합병

2

3

4 런 (3+4)런 (7+8)런 (11+12)

런 (1+2)런 (5+6)런 (9+10)

런 (1+2+3+4)런 (9+10+11+12)

런 (3+4)런 (7+8)런 (11+12)

3

2 차 합병

4

1

2 런 (5+6+7+8)

내부 정렬 500 레코드 씩 정렬된 12 개의 런

6000 레코드

생성된 12 개의 런을 2 개의 파일에 분배 (4 개의 Tape drive 이용 )

(1) 정렬단계1

Page 29: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 29

(4) 3 차 합병

(5) 4 차 합병

런 (1+2+3+4)런 (9+10+11+12)

런 (1+2+3+4+5+6+7+8)

런 (5+6+7+8)

1

3 차 합병

2

3

4 런 (9+10+11+12)

런 (1+2+3+4+5+6+7+8)

런 (1+2+3+ ... +12)

런 (9+10+11+12)

3

4 차 합병

4

1

주의 런 (1) 은 4 번 판독 / 기록되었음 .

▶ 12 개의 런에 대한 2- 원 균형 합병

Page 30: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 30

5.4 다단계 합병 (Polyphase Merge)

m- 원 균형 합병 분석 2m 개의 파일이 필요 (m 개 입력파일 , m 개 출력파일 )

단점 : 하나의 합병된 런이 생성되는 동안 m-1 개의 파일은

항상 유휴 상태 , 1 개 입력 런은 출력 파일로 단순 복사m- 원 다단계 합병 (m-way polyphase merge)

파일 유휴 문제와 런의 단순 복사 문제를 개선 m 개의 입력 파일과 1 개의 출력 파일을 사용 입 / 출력 파일 수가 같지 않음 : 불균형 합병 초기 입력 파일에 대한 런의 불균등 분배가 복잡

각 합병 단계 (pass) 입력 파일의 어느 하나가 공백이 될 때까지 런을 합병 공백이 된 입력 파일은 다음 합병 단계의 출력 파일

Page 31: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 31

▶ 2- 원 다단계 합병의 예

50 110 95 15 100 30 150 40 120 60 70 130 20 140 80

50 95 110

15 30 100 60 70 130

파일 1 :

파일 2 :

파일 3 : 공백

(a) 정렬 단계 결과

15 20 30 40 50 60 70 80 95 100 110 120 130 140 150

(c) 2 차 합병 결과

40 120 15020 80 140 파일 1 :

파일 2 :

파일 3 :

공백

20 80 140

15 20 30 50 80 95 100 110 140

15 30 50 95 100 11040 60 70 120 130 150

(b) 1 차 합병 결과

파일 1 :

파일 2 :

파일 3 :

공백

40 60 70 120 130 150

파일 1 :

파일 2 :

파일 3 :

공백

공백

(d) 3 차 합병 결과

Page 32: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 32

★ 2- 원 다단계 합병에서 런 수의 변화

정렬 단계

3 차 합병

2 차 합병

1 차 합병

3 101

2 010

0 012

5 123

파일 1

파일 2

파일 3

런합계

각 합병 단계 마다 하나의 입력 파일만 공백이 됨

Page 33: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 33

▶ 초기 생성할 런 수의 결정 방법

3- 원 다단계 합병을 위한 런 수 (m = 3)

[1, 1, 1], 3, 5, 9, 17, 31, …

3 차 (m=3) 피보나치 (Fibonacci) 수열

Ti = Ti-1 + Ti-2 + Ti-3, i > 3

Ti = 1, i ≤ 3

m 차 피보나치 수열

Ti = 1 , i ≤ m

miTT

i

mikki

,1

Page 34: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 34

▶ 완전 피보나치 분배

m- 원 다단계 합병을 위한 초기의 런 수를 m 차 피보나치 수열의 한 항이 되는 수가 되도록 생성

이 런들을 피보나치 분배 방법에 따라 분배

완전 피보나치 분배의 장점 합병 단계에서 마지막 패스를 제외하고는 각 패스가 끝날 때

항상 하나의 입력 파일만 공백이 됨

합병을 위한 각 패스에서 입력 파일 수는 항상 m 이 됨

마지막 패스에서는 입력 파일이 모두 동시에 공백이 되면서

모든 런들이 출력 파일에 하나의 런으로 만들어짐

합병 단계에서 패스 수가 줄게 됨

Page 35: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 35

▶ 3- 원 다단계 합병

1

2

3

1 차 합병 4

내부 정렬

6000 레코드

1

2

3

런 1, 런 6, 런 7, 런 10, 런 11, 런 12, 런 13

런 2, 런 4, 런 14, 런 15, 런 16, 런 17

런 3, 런 5, 런 8, 런 9

1 차 합병

7 개의 런6 개의 런4 개의 런 4 개의 런

파일 은 공백이 됨3

4

1

2

2 차 합병 3

2 차 합병

4 개의 런3 개의 런2 개의 런 2 개의 런

3

4

1

3 차 합병 2

3 차 합병

2 개의 런2 개의 런1 개의 런 1 개의 런

2

3

4

4 차 합병 1

4 차 합병

1 개의 런1 개의 런1 개의 런 1 개의 런

파일 는 공백이 됨2

파일 은 공백이 됨1

파일 는 공백이 됨3 42

정렬 단계

Page 36: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 36

★ 완전 피보나치 런 분배 방법 (m=3)

1

1

1

1

2

2

3

2

4

7

6

4

파일 1

파일 2

파일 3

1 차 2 차 3 차 4 차

런 수 3 5 9 17

원으로 표시된 수를 다음 단계의 다른 파일에 합산시킴

Page 37: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 37

★ 각 합병 단계에서 파일 당 런 수의 변화

정렬 단계

4 차 합병

3 차 합병

2 차 합병

1 차 합병

7 1013

6 0102

4 0120

0 0124

17 1359

파일 1

파일 2

파일 3

파일 4

런 합 계

초기 런에 대해 완전 피보나치 분배 방법의 역순

Page 38: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 38

▶ 3- 원 다단계 합병의 예

50 110 95 15 100 30 150 40 120 60 70 130 20 140 80

50 95 110

15 30 100

60 70 130

파일 1 :

파일 2 :

파일 3 :

파일 4 :

(a) 정렬 단계 결과

15 20 30 40 50 60 70 80 95 100 110 120 130 140 150

40 120 150

20 80 140

공백

15 30 40 50 95 100 110 120 150

(b) 1 차 합병 결과

공백

(c) 2 차 합병 결과

공백

파일 1

:

파일 2

:

파일 3

:

파일 4

:

파일 1 :

파일 2 :

파일 3 :

파일 4 :

60 70 130

20 80 140

공백

공백

Page 39: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 39

3- 원 다단계 합병의 예 ( 예 5.7)

2- 원 균형 합병 적용 : 합병 패스 3, 파일 4 개 사용

3- 원 균형 합병 적용 : 합병 패스 2, 파일 6 개 사용

완전 피보나치 분배를 사용하는 m- 원 다단계 합병은

m- 원 균형 합병과 패스 수는 같으나 , 사용 파일 수는 2m 에서 m+1 로 줄어듬 (3- 원의 경우 패스 2, 파일 4)

Page 40: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 40

5.5 계단식 합병 (Cascade Merge)

정렬 / 합병 과정에서 런들의 복사 작업을 줄이려는 불균형 합병의 또 다른 형태

다단계 합병과 사용 파일수와 런 복사 작업도 같으나 수행방법만 다른 형태

m- 원 계단식 합병 (m-way cascade merge) 초기 런 생성과 런의 분배가 중요 ( 완전 피보나치 분배 )

입력 파일 수가 m 개에서 시작하여 m-1, m-2, …, 로 줄어 마지막 2 개로 될 때 한 주기가 끝남

합병 단계• 입력 파일 하나가 공백이 되면 이 파일이 새로운 출력 파일로

되고 이전의 출력 파일은 대기• 나머지 입력 파일들은 이 새로운 출력 파일로 합병된 런을

생성• 2 개의 입력 파일을 합병하는 단계가 되면 합병의 한 주기가

종료• 한 주기에 각 레코드는 한번씩만 처리

Page 41: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 41

▶ 3- 원 계단식 합병

50 110 95 15 100 30 150 40 120 60 70 130 20 140 80

50 110 95

15 30 10060 70 130

40 120 15020 80 140

파일 1 :

파일 2 :

파일 3 :

파일 4 : 공백

(a) 정렬 단계 결과

공백

60 70 130

20 80 140

15 30 40 50 95 100 110 120 150

(b) 합병 1주기 1 차 합병 결과

파일 1 :

파일 2 :

파일 3 :

파일 4 :

파일 1 :

파일 2 :

파일 3 :

파일 4 :

20 60 70 80 130 140

공백

공백

15 30 40 50 95 100 110 120 150

파일 1 :

파일 2 :

파일 3 :

파일 4 :

15 20 30 40 50 60 70 80 95 100 110 120 130 140 150

(c) 합병 1주기 2 차 합병 결과 (d) 합병 2주기 1 차 합병 결과

공백

공백

공백

Page 42: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부

3 주기패스 1

42

▶ 3- 원 계단식 합병

123

1 주기패스 1 4

합병 1 주기7 개의 런6 개의 런4 개의 런 4 개의 런

12

1 주기패스 2

33 개의 런2 개의 런 2 개의 런

431

2 주기패스 1 2

합병 2 주기

4 개의 런2 개의 런1 개의 런 1 개의 런

43

2 주기패스 2

13 개의 런1 개의 런 1 개의 런

421

3

합병 3 주기

2 개의 런1 개의 런1 개의 런 1 개의 런

파일 과 는 공백1 2

34

4 주기패스 1 11 개의 런

1 개의 런

1 개의 런

합병 4 주기

파일 는 공백2 3 4

파일 은 공백3

파일 는 대기4

파일 는 공백2

파일 은 대기3

파일 은 공백1

파일 는 대기2

파일 은 공백3

파일 은 대기1

파일 은 대기3

Page 43: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 43

5.6 정렬 / 합병 유틸리티

정렬 / 합병 유틸리티 (utility) 를 이용 범용의 파일 정렬 / 합병 작업을 지원

유틸리티의 기능 (1) 하나 또는 그 이상의 파일 정렬 (2) 둘 또는 그 이상의 파일 합병 (3) 둘 또는 그 이상의 파일 정렬과 합병

정렬 / 합병 패키지 사용시 명세 내용 (1) 정렬 / 합병할 파일의 이름 (2) 정렬 / 합병의 키 필드의 데이터 타입 , 길이 , 위치 (3) 키 필드들의 순서 (major 에서 minor 순으로 )

(4) 각 키 필드에 적용할 정렬 순서 (ASC, 또는 DES)

(5) 각 키 필드에 적용될 순서 기준 (6) 정렬 / 합병 결과를 수록할 출력 파일의 이름

Page 44: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 44

▶ 패키지에서 사용자 명세 사항

(1) 사용자가 정의한 정렬 순서 및 기준

(2) 내부 정렬 단계에서 사용할 알고리즘

( 예 : quicksort, heapsort)

(3) 합병 단계에서 사용할 알고리즘

( 예 : 균형 , 다단계 , 계단식 합병 )

(4) 파일 사용 전후에 필요한 동작 ( 예 : rewind, unload)

(5) 합병 단계에서 입력 레코드가 올바른 순서로 되어 있는가의 검사

(6) 회복을 위한 체크 포인트 (check point)/덤프 레코드 (dump

record) 를 사용하는 주기

(7) 예상 입력 레코드 수

Page 45: 5.  파일의 정렬 / 합병

컴퓨터 ·IT 공학부 45

5.7 저장장치와 정렬 / 합병

합병 단계에서 사용되는 외부 저장장치의 물리적 특성도

정렬 / 합병 시간에 영향순차 접근만 허용되는 자기 테이프의 경우

각 파일이 서로 다른 릴에 저장 테이프 rewind 시간이 필요

임의 접근이 가능한 디스크의 경우 정렬 / 합병될 파일들이 하나의 디스크에 저장

•디스크 입 / 출력 연산 (탐구시간 + 회전지연시간 ) 이 테이프( 시작 시간 + 정지시간 ) 보다 더 많은 오버헤드를 수반할 수 있으나 , 테이프보다 훨씬 빠른 데이터 전송률로 보상

탐구와 회전 지연에 따른 접근 오버헤드 감축 방법• 파일들을 2 개 이상 디스크로 분산시켜 입 / 출력 연산을

병렬처리 파일의 입 / 출력 요구를 병렬로 처리하기 위해서는 디스크마다 별도의 디스크 제어기가 있어야 됨 .