1 / 45

5. 파일의 정렬 / 합병

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

lee-rocha
Download Presentation

5. 파일의 정렬 / 합병

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 5.1 정렬/합병의 개요 • 정렬(sorting) • 내부 정렬(internal sorting) • 소량 데이터에 대한 메인 메모리 내에서의 정렬 • 레코드 판독, 기록에 걸리는 시간과는 무관 • 외부 정렬(external sorting) • 메인 메모리 용량을 초과하는 보조 저장장치에 저장된 대량 데이터 파일을 정렬 • 레코드 판독, 기록에 걸리는 시간이 중요 • 정렬/합병(sort/merge) – 파일 정렬 기법 • 런(run) : 하나의 파일을 여러 개로 분할하여 내부 정렬 기법으로 정렬시킨 서브파일(subfile) • 런들을합병(merge)하여 전체를 하나의 정렬된 파일로 구성

  3. sort/merge algorithm NO NO

  4. ▶ 파일 정렬/합병 단계 • 정렬 단계(sort phase) • 정렬할 파일의 레코드들을 지정된 길이의 서브 파일로 분할/정렬하여 런(run)을 만들고, 입력 파일로 분배하는 단계 • 합병 단계(merge phase) • 정렬된 런들을 합병해서 보다 큰 런으로 만들고, 다시 입력 파일로 재분배하여 합하는 방식을 통하여, • 최종 모든 레코드들이 하나의 런에 포함되는 단계

  5. 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 2 29 16 80 73 18 12 89 50 46 36 67 93 22 14 83 44 52 59 10 38 76 16 24 85 ▶ 정렬 단계 • 런생성 방법 • 내부 정렬 (internal sort) • 대체 선택 (replacement selection) • 자연 선택 (natural selection) • 입력 파일(레코드 키 값)의 예

  6. 런 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 (1) 내부 정렬 (internal sort) • 런 생성 방법 1. 파일을 n레코드씩 분할 2. 분할된 레코드들을 내부 정렬 기법으로 정렬 • 런 생성 결과 • 마지막 런을 제외하고 모두 길이가 동일(n=5 경우)

  7. (2) 대체 선택 (replacement selection) • 런 생성 방법 1. 버퍼 크기에 따른 m개의 레코드를 판독하고 첫 번째 런 생성 시작 2. 버퍼로부터 키 값이 가장 작은 레코드를 선정해서 런에 출력 3. 입력 파일에서 다음 레코드를 판독해 출력된 레코드와 버퍼에 대체 • if (입력 레코드의 키 값 < 출력된 레코드의 키 값) then 레코드에 “동결(frozen)”로 표시 • 동결된 레코드를 제외하고 나머지 동결되지 않은 레코드에 대해 단계2부터 재실행 4. 동결 표시를 해제하고단계 2에서 새로운 런을 생성 작업을 진행 • 특징 • 입력 파일의 일부 정렬된 레코드들의 순서를 이용 • 내부 정렬을 이용한 경우보다 런이 큼(런의 평균 예상 길이: 2m)

  8. Replacement Selection 과정

  9. 런 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 (2) 대체 선택 (replacement selection) • 런 생성 결과(m=5)

  10. 런 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 (3) 자연 선택 (natural selection) • 특징 • 동결된 레코드들을버퍼에 유지하지 않고 보조 저장 장치 의 예비저장소(reservoir)에 별도 저장  동결된 레코드가 계속 버퍼를 차지하는 것 예방 • 하나의 런 생성 작업은 저장소가 꽉 차거나 입력 파일의 끝에 도달할 때까지 계속 • 런을 길게 만들어 런 수를 줄임으로써 합병 비용을 줄임 • 런생성 결과(버퍼 크기(m)=5, 저장소 크기(m’)=5)

  11. Natural Selection 과정

  12. ▶ 런 생성 방법의 비교 • 내부 정렬 • 마지막 런을 제외하고 런 길이가 동일 • 런 길이 예측으로 합병 알고리즘 간단 • 대체 선택 • 내부 정렬보다 평균적으로 긴 런을 생성 • 런이 길수록 합병 비용이 적음 • 런이 일정치 않아 정렬/합병 알고리즘이 복잡 • 자연 선택 • 다른 방법보다 더 긴 런을 생성할 수 있음 • 예비 저장소로의 입출력 부담발생 • 긴 런으로정렬/합병 단계를 줄임

  13. ▶ 정렬/합병 기법의 차이 • 정렬/합병 기법의 차별화 요소 • 적용하는 내부 정렬 방식 • 내부정렬을 위해 할당된 메인 메모리의 크기 • 정렬된 런들의 보조 저장장치에서의 저장 분포 • 정렬/합병 단계에서 동시에 처리할 수 있는 런의 수 • 요소에 따라 런의 수와 합병의 패스(pass) 수가 결정 • 패스(pass): 최종 파일 생성을 위한 정렬/합병의반복적 실행 단계 • 정렬/합병 기법의 성능 비교 • 정렬 단계에서 만들어지는 런의 수와 합병의 패스 수 비교 • 보조 저장장치에 대한 상대적 참조 빈도수(reference frequency) • 전체 레코드 집합에 대해 수행되어야 할 정렬/합병의 패스 수 비교 • 레코드들의 판독/기록 횟수 • 가능한 런이 길게 만들어지면 합병해야 될 런의 수는 최소화 • 동시에 합병할 수 있는 런의 수를 늘리면 합병의 패스 수는 감소 • 입력 런을 보조 저장장치에 분산 저장하면 합병에 필요한 입출력뿐만 아니라 부수적인 입출력 연산도 동반

  14. ▶ 합병 단계 • 합병 수행 방법 • m-원 합병(m-way merge) • 균형 합병(balanced merge) • 다단계 합병(polyphase merge) • 계단식 합병(cascade merge)

  15. 5.2 m-원 합병(m-way merge) • 특징 • m개의 입력 파일을 동시에 처리하는 합병 • m개의 입력 파일로부터하나의 출력 파일을 생성 • 총 m+1개의 파일을 사용 • 입력 파일 수를 합병의 원 수(degree)라 함 • 한 패스에 합병이 끝나지 않으면,런들을입력파일로 다시 분배하기 위해 복사와이동을 반복(많은 입출력 수반) • 이상적인 정렬/합병 : m개의 런에m개의 입력 파일을 사용하여 한번의 m-원 합병으로 완료 • 2-원 합병의 경우 • 한번의 패스 : 합병된 런의 크기는 2배, 런의 수는 반 • N개의 런으로 분할된 파일 정렬 위한 패스 수 :

  16. 에 있는 3개의 런을2개의 입력 파일로 분배 3 런(5+6) 런(1+2) 1 런(1+2+3+4) 런(5+6) 2차 합병 3 런(3+4) 2 런(1+2+3+4) 1 3차 합병 3 런(1+2+3+4+5+6) 런(5+6) 2 (2개의 입력 파일과 1개의 출력 파일) ▶ 6개의 런에 대한 2-원 합병 (1) 정렬단계 1000 레코드 씩 정렬된 6개의 런 내부 정렬 1 6000 레코드 정렬된 6개의 런을 2개의 입력 파일로 분배 (2) 1차 합병 런5 4001-5000 런3 2001-3000 런1 1-1000 1 런(1+2) 런(3+4) 런(5+6) 1차합병 3 런6 5001-6000 런4 3001-4000 런2 1001-2000 2 (3) 2차 합병 (4) 3차 합병

  17. 3 3 에 있는 6개의 런을 2개의 입력 파일로 분배 에 있는 3개의 런을 2개의 입력 파일로 분배 ▶ 12개의 런에 대한 2-원 합병 (1) 정렬단계 내부 정렬 500레코드 씩 정렬된 12개의 런 1 6000 레코드 정렬된 12개의 런을 2개의 입력 파일로 분배 (2) 1차 합병 런(1+2) 런(3+4) ..... 런(11+12) ...... 런11 런9 런1 1 1차 합병 3 ...... 런12 런10 런2 2 (3) 2차 합병 런(9+10) 런(5+6) 런(1+2) 1 런(1+2+3+4) 런(5+6+7+8) 런(9+10+11+12) 2차 합병 3 런(11+12) 런(7+8) 런(3+4) 2

  18. 1 3차 합병 2 2 1 4차 합병 3 2 ▶ 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)

  19. 4 에 있는 런을3개의 입력 파일로 분배( 이 경우에는 2개의 파일만 사용됨) ▶ 6개의 런에 대한 3-원 합병 (1) 정렬단계 내부 정렬 1000레코드 씩 정렬된 6개의 런 1 6000 레코드 정렬된 6개의 런을 3개의 입력 파일로 분배 (2) 1차 합병 런4 런1 1 런(1+2+3) 런(4+5+6) 1차 합병 4 런5 런2 2 3 런6 런3 (3) 2차 합병 런(1+2+3) 1 2차 합병 3 런(1+2+..+6) 런(4+5+6) (3개의 입력 파일과 1개의 출력 파일) 2

  20. ▶ 선택 트리(selection tree) (1) • m개의 런을 하나의 큰 런으로 정렬(비교)하는 작업 • m개 런에서 가장 작은 키 값의 레코드를 계속 선택, 출력 • 패스 당 m-1번 비교 부담 • 선택 트리 : 비교 횟수를 줄일 수 있음(m>2) • 선택 트리의 종류 • 승자 트리(winner tree) • 패자 트리(loser tree)

  21. [1] 7 [2] [3] 7 9 [6] [5] [7] [4] 10 7 9 18 [14] [9] [10] [11] [12] [13] [15] [8] 11 10 21 7 9 10 50 18 16 22 22 13 13 12 52 19 18 28 24 26 20 18 59 21 30 23 런 1 런 2 런 3 런 4 런 5 런 6 런 7 런 8 선택 트리 (2) • 승자 트리(winner tree) • 특징 • 완전 이진 트리 • 각 단말 노드는 각 런의 최소 키 값 원소를 나타냄 • 내부 노드는 자식 중에서 가장 작은 키 값을 가진 원소를 나타냄 • 런이8개(k=8)인 경우 승자 트리 예

  22. 선택 트리 (3) • 승자 트리 구축 과정 • 가장 작은 키 값의 원소가 승자로 올라가는 토너먼트 경기로 표현 • 각 내부 노드: 두 자식 노드 원소의 토너먼트 승자(작은 키) • 루트 노드: 전체 토너먼트 승자, 즉 트리에서 가장 작은 키 값 가진 원소 • 승자 트리의 표현 • 완전 이진 트리의 특성상 순차 표현에서 유리 • 인덱스 값이 i인 노드의두 자식 인덱스는 2i와 2i+1 • 합병의 진행 • 루트가 결정되는 대로 순서순차에 출력(먼저 7 출력) • 다음 원소 즉 키 값이 13인 원소가 승자 트리로 들어감 • 승자 트리를 다시 재구성 • 노드11에서부터 루트까지의 경로를 따라가면서 형제 노드간 토너먼트 진행

  23. [1] 9 [2] [3] 10 9 [6] [4] [5] [7] 10 13 9 18 [9] [10] [11] [12] [13] [14] [15] [8] 11 10 21 13 9 10 50 18 16 22 22 26 13 12 52 19 18 28 24 30 20 18 59 21 23 런 1 런 2 런 3 런 4 런 5 런 6 런 7 런 8 선택 트리 (4) • 다시 만들어진 승자 트리의 예 • 순서 순차 구축을 계속하여 최종 하나의 큰 런으로 정렬 완료

  24. 선택 트리 (5) • 패자 트리(loser tree) • 루트 위에 0번 노드가 추가된 완전 이진 트리 • 단말 노드:각 런의 최소 키 값을 가진 원소 (2) 내부 노드: 토너먼트의 승자대신 패자 원소 (승자는 위의 부모 노드에서 토너먼트 진행) (3) 루트(1번 노드) : 결승 토너먼트의 패자 (4) 0번 노드: 전체 승자(루트 위에 별도로 위치하여 출력)

  25. [0] 7 출력 [1] 9 [2] [3] 10 18 [7] [6] [4] [5] 11 21 10 50 [8] [9] [10] [11] [12] [13] [14] [15] 11 10 21 7 9 10 50 18 16 22 22 13 13 12 52 19 18 28 24 26 20 18 59 21 30 23 23 런 1 런 2 런 3 런 4 런 5 런 6 런 7 런 8 선택 트리 (6) • 런이8개(k=8)인 패자 트리의 예 (7의 출력 후 원래 7이 있던 런4의 13이 노드[11]에 삽입 되고, 패자 트리를재구축)

  26. 선택 트리 (7) • 패자 트리 구축 과정 • 단말 노드: 각 런의 최소 키 값 원소 • 내부 노드 • 두 자식 노드들이부모노드에서 토너먼트 경기를 수행 • 패자는 부모 노드에 남음 • 승자는 그 위 부모 노드로 올라가서 다시 토너먼트 경기를 계속 • 1번 루트 노드 • 마지막패자는 1번 루트 노드에 남음 • 승자는 전체 토너먼트의 승자로서 0번 노드에서 순서로 출력됨 • 합병의 진행 • 출력된 원소가 속한 런4의 다음 원소, 즉 키 값이 13인 원소를 패자 트리 노드 11에 삽입 • 패자 트리를 다시 재구성 • 토너먼트는 노드11에서부터 루트 노드 1까지의 경로를 따라 경기를 진행(다만 형제 노드 대신 부모 노드와 경기를 진행함 : 교재 참고)

  27. 5.3 균형 합병 (balanced merge) • M-원 합병의 단점 : 파일의 재분배에 많은 I/O 필요 * 한 패스의 출력 파일을 다음 패스의 입력에 사용하는 분배가 입출력의 ½ 소요 • 균형합병 • 출력할 때 미리 다음 단계에 사용할 입력 파일로 재분배 (출력 파일을 다음 단계의 입력 파일로 직접 사용) • m-원 자연합병 : m + 1 개의 파일 필요 • m-원 균형합병 : 2m 개의 파일 필요 (m 입력파일, m 출력파일) • 각 합병 단계 후 • 런의 총수는 합병 차수로 나눈 만큼 감소 • 런의 길이는 합병 차수의 두 배씩 증가 • 총 합병 패스 O(logm N) , N : 초기 런의 수

  28. 1 3 1 3 1차 합병 2차 합병 2 4 4 2 ▶ 12개의 런에 대한 2-원 균형 합병 (1) 정렬단계 내부 정렬 500레코드 씩 정렬된 12개의 런 1 6000 레코드 생성된 12개의 런을2개의 파일에 분배(4개의 Tapedrive 이용) (2) 1차 합병 런(1+2) 런(5+6) 런(9+10) 런11 런9 ... 런1 런(3+4) 런(7+8) 런(11+12) 런12 런10 ... 런2 (3) 2차 합병 런(1+2) 런(5+6) 런(9+10) 런(1+2+3+4) 런(9+10+11+12) 런(3+4) 런(7+8) 런(11+12) 런(5+6+7+8)

  29. 1 3 3차 합병 4 2 런(1+2+3+4+5+6+7+8) 3 4차 합병 1 런(1+2+3+ ... +12) 4 런(9+10+11+12) 런(1)은 4번 판독/기록되었음. 주의 ▶ 12개의 런에 대한 2-원 균형 합병 (4) 3차 합병 런(1+2+3+4) 런(9+10+11+12) 런(1+2+3+4+5+6+7+8) 런(5+6+7+8) 런(9+10+11+12) (5) 4차 합병

  30. 5.4 다단계 합병 (Polyphase Merge) • m-원 균형 합병 분석 • 2m개의 파일이 필요(m개 입력파일, m개 출력파일) • 단점 :하나의 합병된 런이 생성되는 동안 m-1 개의 파일은 항상 유휴 상태, 1개 입력 런은출력 파일로 단순 복사 • m-원 다단계 합병(m-way polyphase merge) • 파일 유휴 문제와런의 단순 복사 문제를 개선 • m 개의 입력 파일과 1 개의 출력 파일을 사용 • 입/출력 파일 수가 같지 않음 : 불균형 합병 • 초기 입력 파일에 대한 런의불균등 분배가 복잡 • 각 합병 단계(pass) • 입력 파일의 어느 하나가 공백이 될 때까지 런을 합병 • 공백이 된 입력 파일은 다음 합병 단계의 출력 파일

  31. ▶ 2-원 다단계 합병의 예 50 110 95 15 100 30 150 40 120 60 70 130 20 140 80 파일1 : 파일2 : 파일3 : 파일1 : 파일2 : 파일3 : 20 80 140 40 120 150 20 80 140 50 95 110 15 30 100 공백 60 70 130 40 60 70 120 130 150 15 30 50 95 100 110 공백 (a) 정렬 단계 결과 (b) 1차 합병 결과 파일1 : 파일2 : 파일3 : 15 20 30 40 50 60 70 80 95 100 110 120 130 140 150 파일1 : 파일2 : 파일3 : 공백 15 20 30 50 80 95 100 110 140 공백 공백 40 60 70 120 130 150 (c) 2차 합병 결과 (d) 3차 합병 결과

  32. ★ 2-원 다단계 합병에서 런 수의 변화 • 각 합병 단계 마다 하나의 입력 파일만 공백이 됨 정렬 단계 1차 합병 2차 합병 3차 합병 파일 1 3 1 0 1 파일 2 2 0 1 0 파일 3 0 2 1 0 런합계 5 3 2 1

  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

  34. ▶ 완전 피보나치 분배 • m-원 다단계 합병을 위한 초기의 런 수를 m차 피보나치 수열의 한 항이 되는 수가 되도록 생성 • 이 런들을 피보나치 분배 방법에 따라 분배 • 완전 피보나치 분배의 장점 • 합병 단계에서 마지막 패스를 제외하고는 각 패스가 끝날 때 항상 하나의 입력 파일만 공백이 됨 • 합병을 위한 각 패스에서 입력 파일 수는 항상 m이 됨 • 마지막 패스에서는 입력 파일이 모두 동시에 공백이 되면서 모든 런들이 출력 파일에 하나의 런으로 만들어짐 • 합병 단계에서 패스 수가 줄게 됨

  35. 파일 은 공백이 됨 파일 는 공백이 됨 파일 은 공백이 됨 1 2 3 ▶ 3-원 다단계 합병 정렬 단계 런1, 런6, 런7, 런10, 런11, 런12, 런13 1 런2, 런4, 런14, 런15, 런 16, 런17 내부 정렬 2 런3, 런5, 런8, 런9 6000 레코드 3 1차 합병 7개의 런 6개의 런 4개의 런 1 1차 합병 4 2 4개의 런 3 2차 합병 4개의 런 3개의 런 2개의 런 4 2차 합병 3 1 2개의 런 2 3차 합병 2개의 런 2개의 런 1개의 런 3 3차 합병 2 4 1개의 런 1 4차 합병 1개의 런 1개의 런 1개의 런 2 파일 는 공백이 됨 2 3 4 4차 합병 1 3 1개의 런 4

  36. ★ 완전 피보나치 런 분배 방법 (m=3) • 원으로 표시된 수를 다음 단계의 다른 파일에 합산시킴 1 2 3 4 차 차 차 차 1 1 1 3 7 파일 파일2 1 2 2 6 파일3 1 2 4 4 3 5 9 17 런 수

  37. 정렬 단계 1차 합병 2차 합병 3차 합병 4차 합병 파일 1 7 3 1 0 1 파일 2 6 2 0 1 0 파일 3 4 0 2 1 0 파일 4 0 4 2 1 0 런 합 계 17 9 5 3 1 ★ 각 합병 단계에서 파일 당 런 수의 변화 • 초기 런에 대해 완전 피보나치 분배 방법의 역순

  38. ▶ 3-원 다단계 합병의 예 50 110 95 15 100 30 150 40 120 60 70 130 20 140 80 파일1 : 파일2 : 파일3 : 파일4 : 파일1 : 파일2 : 파일3 : 파일4 : 50 95 110 공백 15 30 100 60 70 130 60 70 130 20 80 140 40 120 150 20 80 140 15 30 40 50 95 100 110 120 150 공백 (b) 1차 합병 결과 (a) 정렬 단계 결과 파일1 : 파일2 : 파일3 : 파일4 : 15 20 30 40 50 60 70 80 95 100 110 120 130 140 150 공백 공백 공백 (c) 2차 합병 결과

  39. 3-원 다단계 합병의 예(예5.7) • 2-원 균형 합병 적용 : 합병 패스 3, 파일 4개 사용 • 3-원 균형 합병 적용 : 합병 패스 2, 파일 6개 사용 • 완전 피보나치 분배를 사용하는 m-원 다단계 합병은 m-원 균형 합병과 패스 수는 같으나, 사용 파일 수는 2m에서 m+1로 줄어듬(3-원의 경우 패스 2, 파일 4)

  40. 5.5 계단식 합병 (Cascade Merge) • 정렬/합병 과정에서 런들의복사 작업을 줄이려는 불균형 합병의 또 다른 형태 • 다단계 합병과 사용 파일수와런 복사 작업도 같으나 수행방법만 다른 형태 • m-원 계단식 합병(m-way cascade merge) • 초기 런 생성과런의 분배가 중요(완전 피보나치 분배) • 입력 파일 수가 m개에서 시작하여 m-1, m-2, …, 로 줄어 마지막 2개로 될 때 한 주기가 끝남 • 합병 단계 • 입력 파일 하나가 공백이 되면 이 파일이 새로운 출력 파일로 되고 이전의 출력 파일은 대기 • 나머지 입력 파일들은 이 새로운 출력 파일로 합병된 런을 생성 • 2개의 입력 파일을 합병하는 단계가 되면 합병의 한 주기가 종료 • 한 주기에 각 레코드는 한번씩만 처리

  41. ▶ 3-원 계단식 합병 50 110 95 15 100 30 150 40 120 60 70 130 20 140 80 파일1 : 파일2 : 파일3 : 파일4 : 파일1 : 파일2 : 파일3 : 파일4 : 공백 50 110 95 15 30 100 60 70 130 60 70 130 20 80 140 40 120 150 20 80 140 15 30 40 50 95 100 110 120 150 공백 (a) 정렬 단계 결과 (b) 합병 1주기 1차 합병결과 파일1 : 파일2 : 파일3 : 파일4 : 파일1 : 파일2 : 파일3 : 파일4 : 공백 20 60 70 80 130 140 15 20 30 40 50 60 70 80 95 100 110 120 130 140 150 공백 공백 공백 공백 15 30 40 50 95 100 110 120 150 (d) 합병 2주기 1차 합병 결과 (c) 합병 1주기 2차 합병결과

  42. 파일 은 공백 파일 은 공백 파일 는 공백 1 2 3 파일 은 대기 파일 는 대기 파일 는 대기 3 4 2 ▶ 3-원 계단식 합병 합병 1주기 7개의 런 6개의 런 4개의 런 1 1 주기 패스 1 4 2 4개의 런 3 3개의 런 2개의 런 1 주기 패스 2 1 3 2 2개의 런 합병 2주기 4개의 런 2개의 런 1개의 런 2 주기 패스 1 4 2 3 1개의 런 1 3개의 런 1개의 런 파일 은 공백 2 주기 패스 2 3 4 1 파일 은 대기 3 1 1개의 런 합병 3주기 2개의 런 1개의 런 1개의 런 4 3 주기 패스 1 파일 과 는 공백 1 2 3 2 파일 은 대기 1개의 런 3 1 합병 4주기 1개의 런 1개의 런 4 주기 패스 1 파일 는 공백 3 2 3 4 1 4 1개의 런

  43. 5.6 정렬/합병 유틸리티 • 정렬/합병 유틸리티(utility)를 이용 • 범용의 파일 정렬/합병 작업을 지원 • 유틸리티의 기능 (1) 하나 또는 그 이상의 파일 정렬 (2) 둘 또는 그 이상의 파일 합병 (3) 둘 또는 그 이상의 파일 정렬과 합병 • 정렬/합병 패키지 사용시 명세 내용 (1) 정렬/합병할 파일의 이름 (2) 정렬/합병의 키 필드의 데이터 타입, 길이, 위치 (3) 키 필드들의 순서(major에서 minor 순으로) (4) 각 키 필드에 적용할 정렬 순서 (ASC, 또는 DES) (5) 각 키 필드에 적용될 순서 기준 (6) 정렬/합병 결과를 수록할 출력 파일의 이름

  44. ▶ 패키지에서 사용자 명세 사항 (1) 사용자가 정의한 정렬 순서 및 기준 (2) 내부 정렬 단계에서 사용할 알고리즘 (예 : quicksort, heapsort) (3) 합병 단계에서 사용할 알고리즘 (예 : 균형, 다단계, 계단식 합병) (4) 파일 사용 전후에 필요한 동작(예 : rewind, unload) (5) 합병 단계에서 입력 레코드가 올바른 순서로 되어 있는가의 검사 (6) 회복을 위한 체크 포인트(check point)/덤프 레코드(dumprecord)를 사용하는 주기 (7) 예상 입력 레코드 수

  45. 5.7 저장장치와 정렬/합병 • 합병 단계에서 사용되는 외부 저장장치의 물리적 특성도 정렬/합병 시간에 영향 • 순차 접근만 허용되는 자기 테이프의 경우 • 각 파일이 서로 다른 릴에 저장 • 테이프 rewind 시간이 필요 • 임의 접근이 가능한 디스크의 경우 • 정렬/합병될 파일들이 하나의 디스크에 저장 • 디스크 입/출력 연산(탐구시간 + 회전지연시간)이 테이프(시작 시간 + 정지시간)보다 더 많은 오버헤드를수반할 수 있으나, 테이프보다 훨씬 빠른 데이터 전송률로 보상 • 탐구와 회전 지연에 따른 접근 오버헤드 감축 방법 • 파일들을 2개 이상 디스크로 분산시켜 입/출력 연산을 병렬처리 파일의 입/출력 요구를 병렬로 처리하기 위해서는 디스크마다 별도의 디스크 제어기가 있어야 됨.

More Related