60
7 7 장 장장장장 장 장장장장 장장 장장 장장 장장

7 장 인덱스된 순차 화일

  • Upload
    marv

  • View
    172

  • Download
    0

Embed Size (px)

DESCRIPTION

7 장 인덱스된 순차 화일.  인덱스된 순차 화일의 구조. 순차 화일 : 순차 접근 방법 결합 직접 화일 : 직접 접근 방법 구조 순차 데이타 화일 : 순차적으로 정렬 인덱스 : 화일에 대한 포인터. ▶ 인덱스된 순차 화일의 예. 이원 탐색 트리의 인덱스 구조를 가진 인덱스된 순차 화일의 예. ▶ 구현 방법. 삽입 , 삭제시 순차 데이타 화일의 레코드 순서 유지 방법 인덱스 갱신 방법 정적 인덱스 (static index) 방법 - PowerPoint PPT Presentation

Citation preview

Page 1: 7 장 인덱스된  순차 화일

77 장 인덱스된 장 인덱스된 순차 화일순차 화일

Page 2: 7 장 인덱스된  순차 화일

2

인덱스된 순차 화일의 구조인덱스된 순차 화일의 구조 순차 화일 순차 화일 : : 순차 접근 방법 순차 접근 방법

결합결합 직접 화일 직접 화일 : : 직접 접근 방법 직접 접근 방법

구조구조– 순차 데이타 화일 : 순차적으로 정렬– 인덱스 : 화일에 대한 포인터

Page 3: 7 장 인덱스된  순차 화일

3

▶ ▶ 인덱스된 순차 화일의 예인덱스된 순차 화일의 예 이원 탐색 트리의 인덱스 구조를 가진 인덱스된 순차 이원 탐색 트리의 인덱스 구조를 가진 인덱스된 순차

화일의 예화일의 예

조 범순 63

신 정기 4

장 대길 5김 병철 2

김 성규 1 박 상범 3 정 지용 6 최 병국 126

인덱스

1 김 성규

2 김 병철

3 박 상범

4 신 정기

5 장 대길

6 정 지용

63 조 범순

126 최 병국

순차 데이타 화일

Page 4: 7 장 인덱스된  순차 화일

4

▶ ▶ 구현 방법구현 방법 삽입삽입 , , 삭제시삭제시

– 순차 데이타 화일의 레코드 순서 유지 방법– 인덱스 갱신 방법

정적 인덱스정적 인덱스 (static index) (static index) 방법방법– 인덱스의 내용 변경 , 구조 불변– 오버플로우 구역 사용– 인덱스 : 하드웨어 의존적 설계

보조기억장치의 물리적 특성 ( 실린더 , 트랙 )– IBM 의 ISAM

Page 5: 7 장 인덱스된  순차 화일

5

▶ ▶ 구현 방법구현 방법 동적 인덱스동적 인덱스 (dynamic index) (dynamic index) 방법방법

– 인덱스 , 데이타 화일 : 블럭– 블럭 : 예비 공간

오버플로우 → 분열 (split) 언더플로우 → 합병 (merge)

– 인덱스 B+- 트리 하드웨어 독립적

– IBM 의 VSAM

Page 6: 7 장 인덱스된  순차 화일

6

정적 인덱스 방법정적 인덱스 방법 정적인 구현정적인 구현

기억장치의 물리적 특성에 기반기억장치의 물리적 특성에 기반

Page 7: 7 장 인덱스된  순차 화일

7

▶ ▶ 데이타 화일데이타 화일 기본 구역기본 구역 (prime area)(prime area)

– 각 실린더 트랙 0 : 트랙의 레코드에 대한 인덱스 트랙 1-n : 데이타 레코드

오버플로우 구역오버플로우 구역– 분리된 화일 : 추가적인 삽입– 오버플로우 포인터 = < 실린더 , 트랙 , 레코드 번호 >– 실린더 당 오버플로우 구역 또는 한 화일당 한

오버플로우 구역

Page 8: 7 장 인덱스된  순차 화일

8

▶ ▶ 인덱스 화일인덱스 화일 엔트리 엔트리 = <= < 키 값키 값 , , 포인터포인터 (( 실린더 번호실린더 번호 , , 트랙 번호트랙 번호 )>)>

마스터 인덱스마스터 인덱스– 최상위 레벨 인덱스 ( 주기억장치에 상주 )– < 최고키값 , 포인터 >

실린더 인덱스실린더 인덱스– < 최고키값 , 실린더 번호 >

트랙 인덱스트랙 인덱스– 실린더에 저장된 레코드들에 대한 인덱스– 트랙 0 에 위치– < 최저키값 , 트랙 번호 >

Page 9: 7 장 인덱스된  순차 화일

9

▶ ▶ 정적 인덱스 방법 예정적 인덱스 방법 예 정적 인덱스 방법으로 구성된 인덱스된 순차 화일정적 인덱스 방법으로 구성된 인덱스된 순차 화일

주 영훈

황 정규

유 성렬

정 창호

주 영훈

주 호성

지 석원

황 정규

강 석오 1 김 연주 2 문 봉기 3

강 석오 강 인희 김 성기

김 연주 나 민영 남 윤희

문 봉기 안 기영 유 성렬

이 규철 1 장 영선 2 조 수영 3

이 규철 이 상돈 장 명화

장 영선

조 수영 정 찬호

지 원철 1 한 재술 2 홍 봉희 3

지 원철

한 재술

홍 봉희 황 수찬 황 정규

실린더 1

실린더 2

실린더 6

실린더 7

기본 데이타 화일

G

오버플로 구역

트랙 0

트랙 1

트랙 2

트랙 3

트랙 0

트랙 1

트랙 2

트랙 3

트랙 0

트랙 1

트랙 2

트랙 3

트랙 0

트랙 1

트랙 2

트랙 3

트랙 :인덱스

마스터인덱스

실린더인덱스

Page 10: 7 장 인덱스된  순차 화일

10

▶ ▶ 갱신 연산 갱신 연산 (( 삽입삽입 )) 가정 가정 : : 각 트랙 각 트랙 : 5 : 5 레코드레코드 , 40 % , 40 % 자유공간자유공간

① ① INSERT INSERT 김수철김수철 INSERT INSERT 강원구강원구

★ ★ 트랙의 각 항목은 오름차순 유지트랙의 각 항목은 오름차순 유지

강 석 오 1

강 석오

김 연주

문 봉기

실린더 1

트랙 0

트랙 1

트랙 2

트랙 3

강 원구

나 민영

안 기영

강 인희

남 윤희

유 성렬

김 성기 김 수철

김 연 주 2 문 봉 기 2

Page 11: 7 장 인덱스된  순차 화일

11

▶ ▶ 갱신 연산 갱신 연산 (( 삽입삽입 ))

② ② INSERT INSERT 김시만김시만

★ ★ 오버플로우 구역 오버플로우 구역 - - 기본구역과는 별개의 실린더기본구역과는 별개의 실린더

강 석 오 1

강 석오

김 연주

문 봉기

실린더 1

트랙 0

트랙 1

트랙 2

트랙 3

강 원구

나 민영

안 기영

강 인희

남 윤희

유 성렬

김 성기 김 수철

김 시 만 op 김 연 주 2 문 봉 기 3

기본 데이타 화일

김 시 만

실린더 7

트랙 0

트랙 1

트랙 2

트랙 3

오버플로 구역

Page 12: 7 장 인덱스된  순차 화일

12

▶ ▶ 갱신 연산 갱신 연산 (( 삽입삽입 )) ③ ③ INSERT INSERT 남창원남창원

INSERT INSERT 나용선나용선 INSERT INSERT 나원규나원규

★ ★ 레코드의 순서 레코드의 순서 - - 기본 트랙의 항목에 오버플로우된기본 트랙의 항목에 오버플로우된 항목도 포함하여 순서유지 항목도 포함하여 순서유지

강석오 1

강 석오

김 연주

문 봉기

실린더 1

트랙 0

트랙 1

트랙 2

트랙 3

강 원구

나 민영

안 기영

강 인희

나 용선

유 성렬

김 성기 김 수철

기본 데이타 화일

김 시 만

실린더 7

트랙 0

트랙 1

트랙 2

트랙 3

남 창 원

오버플로 구역

김시만 op1 남창원 op2 문봉기 3김연주 2

나 원규 남 윤희

Page 13: 7 장 인덱스된  순차 화일

13

▶ ▶ 갱신 연산 갱신 연산 (( 삽입삽입 )) ④ ④ INSERT INSERT 김성복김성복

★★ 오버플로우 구역의 레코드 오버플로우 구역의 레코드 : : 체인으로 연결체인으로 연결 << 레코드레코드 , , 해당 트랙의 다음 오버플로우 레코드에 대한 포인터해당 트랙의 다음 오버플로우 레코드에 대한 포인터 >>

강석오 1

강 석오

김 연주

문 봉기

실린더 1

트랙 0

트랙 1

트랙 2

트랙 3

강 원구

나 민영

안 기영

강 인희

나 용선

유 성렬

김 성기

나 원규

김 수철

남 윤희

기본 데이타 화일

김수철op1 남창원op2 문봉기 3김연주 2

김 시 만

실린더 7

트랙 0

트랙 1

트랙 2

트랙 3

남 창 원 김 수철

오버플로 구역

Page 14: 7 장 인덱스된  순차 화일

14

▶ ▶ 검색검색 직접 검색직접 검색

– 마스터 인덱스 → 실린더 인덱스 → 실린더 주소– 트랙 인덱스 → 트랙 포인터

포인터 = 데이타 구역의 트랙 데이타 트랙의 순차 탐색

포인터 = 오버플로우 구역 오버플로우 체인 탐색

순차 검색순차 검색– 기본 데이타 트랙 검색– 오버플로우 체인 접근

Page 15: 7 장 인덱스된  순차 화일

15

▶ ▶ 검색 성능검색 성능 기본 구역의 레코드 접근 기본 구역의 레코드 접근 : 4: 4 회회

– 인덱스 화일 : 2– 트랙 인덱스 : 1– 데이타 트랙 : 1

오버플로우 구역 오버플로우 구역 : 3 + k: 3 + k– 인덱스 화일 : 2– 트랙 인덱스 : 1– 체인의 k 번째 : k

재구성재구성– 삽입 빈번 → 긴 체인 ( 성능 저하 )– 화일 관리자의 주기적 재구성

순차적 완독 재기록

Page 16: 7 장 인덱스된  순차 화일

16

▶ ▶ 삭제삭제 동적 삭제동적 삭제

– 물리적 제거– ① 오버플로우 구역 - 체인 조정– ② 체인의 첫 레코드 - 트랙 인덱스 수정– ③ 기본 구역

큰 키값의 레코드는 한자리씩 이동 오버플로우 레코드가 있는 경우

체인의 첫 레코드가 기본구역 이동 ② 의 작업

삭제 표시삭제 표시– 주기적인 쓰레기 수집 (garbage collection)

Page 17: 7 장 인덱스된  순차 화일

17

ISAM ISAM 화일화일 IBMIBM 의 의 ISAM(Indexed Sequential Access Method)ISAM(Indexed Sequential Access Method)

특정 하드웨어의 특성에 맞도록 설계특정 하드웨어의 특성에 맞도록 설계

장점장점– 접근 시간 단축– 기억 공간의 효율성

단점 단점 – 기억장치의 유형 변경 또는 화일의 복사시 문제

Page 18: 7 장 인덱스된  순차 화일

18

(1) ISAM (1) ISAM 화일의 구조화일의 구조 기본 데이타 구역기본 데이타 구역

– 데이타 레코드 저장– 실린더

트랙 0 : 트랙 인덱스 ( 기본구역과 오버플로우구역에 대한 포인터 )

트랙 1~(n-1) : 고정 크기 레코드 ( 오름차순 ) 트랙 n : 실린더 오버플로우 구역

인덱스 구역인덱스 구역– 화일의 첫 실린더– 실린더 인덱스 : 실린더를 지시

독립된 오버플로우 구역독립된 오버플로우 구역– 화일의 마지막 실린더– 실린더 오버플로우 구역의 오버플로우

Page 19: 7 장 인덱스된  순차 화일

19

▶ ▶ 실린더의 트랙 할당실린더의 트랙 할당

트랙 인덱스

실린더 오버플로

트랙0

트랙1

트랙2

트랙3

트랙4

트랙5

트랙6

트랙7

기본데이타 레코드저장 구역}}

Page 20: 7 장 인덱스된  순차 화일

20

▶ ▶ ISAM ISAM 화일의 실린더 할당화일의 실린더 할당

G

실린더 1트랙0트랙1

트랙m

G

실린더인덱스

G

실린더 2

G

실린더 n-1

G

실린더 n

독립된오버플로 구역기본 데이타 구역

G

Page 21: 7 장 인덱스된  순차 화일

21

▶ ▶ 실린더 오버플로우 구역실린더 오버플로우 구역 기본 구역의 오버플로우기본 구역의 오버플로우

트랙 오버플로우 인덱스트랙 오버플로우 인덱스– 오버플로우 레코드를 원래 트랙과 연결

이점이점– 기본구역과 동일 실린더

오버플로우 구역 접근을 위한 별도의 탐구가 필요 없음– 독립 오버플로우 구역

별도의 탐구

단점단점– 모든 실린더에 동일 크기 → 사용의 불균형

Page 22: 7 장 인덱스된  순차 화일

22

▶ ▶ 기본 데이타 구역기본 데이타 구역 물리적 순서 유지물리적 순서 유지

– 실린더 i 의 레코드 키값 < 실린더 i+1 의 임의의 키값

순차 접근 지원순차 접근 지원

Page 23: 7 장 인덱스된  순차 화일

23

(2) ISAM (2) ISAM 화일의 인덱스 구조화일의 인덱스 구조 다단계 인덱스 구조다단계 인덱스 구조

– 트랙 인덱스– 실린더 인덱스– 마스터 인덱스

Page 24: 7 장 인덱스된  순차 화일

24

▶ ▶ 트랙 인덱스트랙 인덱스 탐구 시간의 최소화 탐구 시간의 최소화 - - 각 실린더의 트랙 각 실린더의 트랙 00

인덱스 엔트리인덱스 엔트리– 정상 엔트리 ( 트랙의 최대키값 , 트랙번호 )– 오버플로우 엔트리 ( 해당 트랙의 오버플로우 레코드의

최대키값 , 최소키값을 가진 레코드 주소 쌍 )

NKNK11 OK OK11 < NK < NK22 OK OK22 < < ••• ••• < NK< NKnn OK OKnn

NKNKii : : 트랙 트랙 ii 의 정상 엔트리 키값의 정상 엔트리 키값 OKOKii : : 트랙 트랙 ii 의 오버플로우 엔트리 키값의 오버플로우 엔트리 키값 ★ ★ NKNKii = OK = OKii : : 오버플로우 레코드 없음오버플로우 레코드 없음

Page 25: 7 장 인덱스된  순차 화일

25

▶ ▶ 실린더 인덱스실린더 인덱스 기본 데이타 구역의 실린더에 대한 엔트리기본 데이타 구역의 실린더에 대한 엔트리

(( 실린더중 최대키값실린더중 최대키값 , , 실린더의 트랙 인덱스 주소실린더의 트랙 인덱스 주소 ))

Page 26: 7 장 인덱스된  순차 화일

26

▶ ▶ 마스터 인덱스마스터 인덱스 실린더 인덱스 실린더 인덱스 - - 여러 트랙으로 구성여러 트랙으로 구성

마스터 인덱스 엔트리마스터 인덱스 엔트리 (( 실린더 인덱스의 각 트랙에서 최대키값실린더 인덱스의 각 트랙에서 최대키값 , , 트랙의 주소트랙의 주소 ))

한단계 또는 다단계 한단계 또는 다단계 : : 여러 트랙여러 트랙

최상위 단계 마스터 인덱스 최상위 단계 마스터 인덱스 : : 한 트랙 정도 크기한 트랙 정도 크기

Page 27: 7 장 인덱스된  순차 화일

27

▶ ▶ ISAM ISAM 파일에서 키값이 파일에서 키값이 144144 인 레코드 인 레코드 검색검색

30500 98765

30500

..............

마스터인덱스 ( 3단계 )

61601

2100 4150

61601

330 710 1100 1510 1831 2100

4150

950009876598300

710

11001510

18312100

33050 110 205 281

98300

98765

트랙인덱스트랙인덱스트랙인덱스트랙인덱스실린더 0 실린더 1 실린더 2 실린더 N-1

트랙 1

트랙 2

트랙 3

트랙 4

트랙 5

트랙 6

트랙 7

트랙 8 50

오버플로트랙98765

기본데이타구역

110

오버플로트랙 오버플로 164

120

128132

136

140

146

152160

마스터인덱스 ( 2단계 )

마스터인덱스 ( 1단계 )

실린더인덱스

98765

50 110

..............

............164

Page 28: 7 장 인덱스된  순차 화일

28

(3) ISAM (3) ISAM 화일에서의 삽입과 삭제화일에서의 삽입과 삭제 검색과 동일 방법으로 삽입해야될 기본 데이타 트랙검색과 동일 방법으로 삽입해야될 기본 데이타 트랙

삽입삽입– 독립된 오버플로우 구역을 이용한 삽입

(a) (a) 초기 화일초기 화일

ASP 1 ASP 1 CAD 2 CAD 2ABE ALF ALL APE APU ARM ART ASPATE AZO BAD BAZ BIN BIT BUZ CAD

트랙0트랙1트랙2트랙3

정상인덱스엔트리

오버플로인덱스엔트리

기본데이타실린더오버플로구역

(a) 초기 화일

트랙 인덱스

Page 29: 7 장 인덱스된  순차 화일

29

▶ ▶ ISAM ISAM 화일에서의 삽입화일에서의 삽입(b) ARK(b) ARK 를 삽입를 삽입

(c) BED, BEG, BEN, BET, ARL(c) BED, BEG, BEN, BET, ARL 을 차례로 삽입을 차례로 삽입

ART 1 ASP 3.1 CAD 2 CAD 2

ABE ALF ALL APE APU ARK ARM ART

ATE AZO BAD BAZ BIN BIT BUZ CAD

ASP

트랙0

트랙1

트랙2

트랙3

(b) ARK를 삽입

(c) BED, BEEG, BEN, BET, ARL을 차례로 삽입

ARM1 ASP 3.6 BET 2 CAD 3.5

ABE ALF ALL APE APU ARM ARL ARM

ATE AZO BAD BAZ BED BEG BEN BET

ASP CAD BUZ BIT BIN ART

트랙0

트랙1

트랙2

트랙3

ARM1 ASP 3.6 BET 2 CAD 3.5

ABE ALF ALL APE APU ARM ARL ARM

ATE AZO BAD BAZ BED BEG BEN BET

ASP CAD BUZ BIT BIN ART

트랙0

트랙1

트랙2

트랙3

Page 30: 7 장 인덱스된  순차 화일

30

▶ ▶ ISAM ISAM 화일에서의 삽입화일에서의 삽입(d) ACE, BAR, BAT, AMY(d) ACE, BAR, BAT, AMY 를 차례로 삽입를 차례로 삽입

ASP 3.6 BEG 2 CAD 01

ABE ACE ALF ALL AMY APE APU ARK

ATE AZO BAD BAZ BED BED BEG

ASP CAD BUZ BIT BIN ART

트랙0

트랙1

트랙2

트랙3

ARK1

ABE

ATE AZO BAD BAR BAT BAZ

ASP CAD BUZ BIT BIN ART ARM BET

트랙0

트랙1

트랙2

트랙3

독립된오버플로구역

ARLBEN

(d) ACD, BAR, BAT, AMY를 차례로 삽입

Page 31: 7 장 인덱스된  순차 화일

31

▶ ▶ ISAM ISAM 화일에서의 재구성 및 삭제화일에서의 재구성 및 삭제 재구성재구성

– 독립된 오버플로우 구역의 사용 → 접근 시간 지연– 오버플로우 체인 길이 증가– 주기적 재구성

모든 레코드 → 기본 데이타 트랙으로 저장

삭제삭제– 삭제 표시

아주 높은 키값 삭제 필드 또는 플래그

– 삽입시 재이용

Page 32: 7 장 인덱스된  순차 화일

32

동적 인덱스 방법동적 인덱스 방법 블럭에 기초한 구현 블럭에 기초한 구현 : : 동적인 구현동적인 구현

인덱스 화일인덱스 화일– 인덱스 블럭의 트리구조

다중 레벨 인덱싱 ( 인덱스의 인덱스 화일 ) 최고 레벨 인덱스 ( 마스터 인덱스 ) 는 주기억장치에 적합

– 인덱스 엔트리 = < 키 애트리뷰트 값 , 포인터 ( 데이타 블럭 또는 인덱스 블록 )>

데이타 화일데이타 화일– 순차적인 구조 - 데이타 블럭들– 블럭들 사이에 자유공간이 분포

나중의 삽입을 위해– 데이타 블럭들은 논리적인 순서로 연결

데이타 블럭 체인

Page 33: 7 장 인덱스된  순차 화일

33

▶ ▶ 동적 인덱스 방법의 인덱스된 순차 파일동적 인덱스 방법의 인덱스된 순차 파일

강 석오조 수연

강 석오이 규철정 화식

조 수연조 진선주 강원주 복만

이 규철전 민선정 배식

주 복만차 신한 재술

홍 봉희황 수찬

한 재술

이 상돈장 동선

이 규철

용 환승유 성렬

안 경화

남 윤희문 봉기

나 민영

강 석오나 민영안 경화

인덱스 블록 3.1

인덱스 블록 2.1

인덱스 블록 2.2

인덱스 블록 1.1

인덱스 블록 1.2

인덱스 블록 1.K

김 성기김 연주

강 석오

데이타 블록 1

데이타 블록 2

데이타 블록 3

데이타 블록 4

데이타 블록 N

데이타 화일

G

G G

직접 검색직접 검색– 검색 레코드의 키

= ' 문봉기 '

Page 34: 7 장 인덱스된  순차 화일

34

▶ ▶ 삽입삽입 데이타 블럭 분할데이타 블럭 분할 인덱스 블럭의 분할을 야기할 수 있음인덱스 블럭의 분할을 야기할 수 있음

(( 가정가정 ))– 데이타 블럭 : 5 레코드– 인덱스 블럭 : 4 개의 < 키값 , 포인터 > 쌍– 자유공간 또는 패딩 (padding) 존재

Page 35: 7 장 인덱스된  순차 화일

35

▶ ▶ 삽입 예삽입 예 ① ① INSERT INSERT 나동성나동성

INSERT INSERT 강인회강인회 데이타 블럭 데이타 블럭 11 에 삽입에 삽입

강 석오나 민영안 경화

인덱스 블록 1.1

강 인희김 성기

강 석오

김 연주나 동성

데이타 블록 1

Page 36: 7 장 인덱스된  순차 화일

36

▶ ▶ 삽입 예삽입 예 ② ② INSERT INSERT 나문수나문수– 데이타 블럭 1 의 분열과 인덱스 블럭의 변화

나 동성나 문수

김 연주

강 석오김 연주나 민영안 경화

인덱스 블록 1.1

강 인희김 성기

강 석오

데이타 블록 1

데이타 블록 1A

데이타 블록 2

인덱스 블록 2.1

Page 37: 7 장 인덱스된  순차 화일

37

▶ ▶ 삽입 예삽입 예 ③ ③ INSERT INSERT 김성복김성복

INSERT INSERT 권성길권성길 INSERT INSERT 고재현고재현

김 성기김 성복

권 성길

강 석오권 성길

인덱스 블록 1.1

강 인희고 재현

강 석오

데이타 블록 1

데이타 블록 1B

인덱스 블록 3.1

데이타 블록 2

김 연주나 민영안 경화

인덱스 블록 1.1A

강 석오김 연주이 규철정 화식

인덱스 블록 2.1

Page 38: 7 장 인덱스된  순차 화일

38

VSAM VSAM 화일화일 VSAM : Virtual Storage Access MethodVSAM : Virtual Storage Access Method 동적 인덱스 방법동적 인덱스 방법

VSAM VSAM 화일의 구조화일의 구조– 제어 구간 (control interval)

데이타 레코드 저장– 제어 구역 (control area)

제어 구간의 모임– 순차셑 (sequence set)

제어 구역에 대한 인덱스 저장– 인덱스 셑 (index set)

순차셑의 상위 인덱스

Page 39: 7 장 인덱스된  순차 화일

39

(1) VSAM (1) VSAM 화일 구조화일 구조

...

...

레벨 3

레벨 2

레벨 1

123

567

. . . . . . . . . . . . . . . . . . . . .

인덱스 세트

순차세트

제어구간

...

...

.

제어구역 1 제어구역 2 제어구역 n-1

자유공간

4

Page 40: 7 장 인덱스된  순차 화일

40

▶ ▶ 제어 구간 구조제어 구간 구조 데이타 블럭데이타 블럭

– 키값에 따른 물리적 순차 자유 공간자유 공간 레코드 정의 필드레코드 정의 필드 (RDF: Record Definition Field)(RDF: Record Definition Field)

– RBA (Relative Byte Address)– 레코드의 바이트 수

제어구간 정의필드제어구간 정의필드 (CIDF: Control Interval Definition F(CIDF: Control Interval Definition Field)ield)– 제어 구간 내의 자유 공간 바이트 수– 자유 공간의 위치

Page 41: 7 장 인덱스된  순차 화일

41

▶ ▶ 제어 구간 양식과 삽입제어 구간 양식과 삽입 , , 삭제삭제 VSAMVSAM 화일의 제어구간 양식화일의 제어구간 양식

제어 구간에 대한 삽입제어 구간에 대한 삽입 , , 삭제삭제– 저장된 레코드들 사이에 빈공간이 없도록 함

레코드 1 레코드 2 레코드 3 레코드 4

레코드 5 레코드 6

RDF 6 RDF 5

RDF 4 RDF 3 RDF 2 RDF 1 CIDF

자유 공간

자유 공간

Page 42: 7 장 인덱스된  순차 화일

42

▶ ▶ 제어 구역제어 구역 일정 수의 제어 구간의 그룹일정 수의 제어 구간의 그룹

일정 수의 트랙으로 구성일정 수의 트랙으로 구성

순차셑순차셑– 인덱스 엔트리 =( 제어 구간의 최대키값 , 주소 )– 제어 구간의 물리적 순서는 필요 없음

순차셑에 의해 유지 ( 체인으로 연결 )

Page 43: 7 장 인덱스된  순차 화일

43

▶ ▶ 인덱스셑인덱스셑 인덱스 블럭으로 구성된 트리 구조인덱스 블럭으로 구성된 트리 구조

엔트리엔트리 = (= ( 차하위 레벨의 인덱스 블럭의 최대키값차하위 레벨의 인덱스 블럭의 최대키값 ,, 인덱스 블럭에 대한 주소인덱스 블럭에 대한 주소 ))

인덱스셑의 최하위 단계 인덱스셑의 최하위 단계 : : 순차셑 지시순차셑 지시

키값의 크기순으로 저장키값의 크기순으로 저장

Page 44: 7 장 인덱스된  순차 화일

44

(2) VSAM (2) VSAM 화일에서의 삽입과 삭제화일에서의 삽입과 삭제 키 순차 화일키 순차 화일 (key-sequenced file) (key-sequenced file) 지원지원

– 레코드들을 키값순으로 저장 제어 구간내의 물리적 순서 제어 구간들의 정렬 : 순차셑 순차셑의 정렬 : 인덱스셑

분산 자유 공간 분산 자유 공간 (distributed free space)(distributed free space)– 제어 구간 내의 자유 공간– 키 순차 VSAM : 각 제어 구역 끝의 빈 제어 구간

Page 45: 7 장 인덱스된  순차 화일

45

▶ ▶ 키 순차 키 순차 VSAM VSAM 화일화일 순차적 접근순차적 접근

– 화일의 첫 제어 구간의 RBA 를 식별위해 인덱스 탐색– 연결된 순차셑 체인을 따라가며 각 제어 구간 접근

직접 접근직접 접근– 인덱스셑 -> 순차셑 (B+- 트리와 유사 )

Page 46: 7 장 인덱스된  순차 화일

46

55 60 65 FS

53

55

56

57

60

61

65

제어 구역 1

75 83 88 FS

72

73

75

78

80

83

85

86

88

제어 구역 1

88 102 125 140 155 172 199

125 199 250 293

{{인덱스세트

65

{{ 51

제어구간

순차세트 ...

▶ ▶ 키 순차 키 순차 VSAM VSAM 화일 예화일 예

제어 구역 2

Page 47: 7 장 인덱스된  순차 화일

47

▶ ▶ 레코드의 삽입레코드의 삽입 레코드의 이동 레코드의 이동 ( ∵( ∵ 제어 구간내의 물리적 순서 유지제어 구간내의 물리적 순서 유지 ))

자유 공간의 부족 → 제어 구간의 분열자유 공간의 부족 → 제어 구간의 분열 (split)(split)– 만원이 된 제어 구간

제어 구역 끝의 빈 제어 구간으로 레코드 절반 이동 순차셑 엔트리로 제어구간 순서 유지

제어 구역 분열제어 구역 분열– 만원이 된 제어 구역

화일 끝의 빈 제어구역으로 반 이동 순차셑 고정으로 문서 유지

Page 48: 7 장 인덱스된  순차 화일

48

▶▶ 키가 키가 5252 인 레코드가 삽입된 뒤의 제어 구역인 레코드가 삽입된 뒤의 제어 구역

55 60 65 FS

51

52

53

55

56

57

60

61

65

제어 구역 1

Page 49: 7 장 인덱스된  순차 화일

49

▶▶ 키가 키가 5454 인 레코드가 삽입된 뒤의 제어 구역인 레코드가 삽입된 뒤의 제어 구역 키가 키가 5454 인 레코드가 삽입되어 제어 구간 분열이 일어난 인 레코드가 삽입되어 제어 구간 분열이 일어난

뒤의 제어 구역 뒤의 제어 구역 11

52 55 60 65

51

52

56

57

60

61

65

53

54

55

제어 구역 1

Page 50: 7 장 인덱스된  순차 화일

50

▶ ▶ 삽입과 삭제삽입과 삭제 물리적 삭제 → 레코드 이동물리적 삭제 → 레코드 이동

– 순차셑 엔트리 변경 → 인덱스 셑

수록 순차 화일 수록 순차 화일 (entry-sequential file)(entry-sequential file)– 레코드 순서 : 화일에 수록되는 순서– 인덱스

유지 안 함 RBA 제공 : 사용자가 인덱스 구축 가능

상대 화일 상대 화일 (Relative File)(Relative File)– 레코드의 제어 구간 저장시

상대 레코드 번호에 따라 저장 상대 레코드 번호 : 사용자가 정의

– 인덱스 없음– 레코드길이 일정 : 제어구간의 레코드수 동일

Page 51: 7 장 인덱스된  순차 화일

51

▶ ▶ 삽입과 삭제삽입과 삭제 크기가 크기가 88 인 상대 레코드 인 상대 레코드 VSAM VSAM 화일의 제어 구간 화일의 제어 구간

구조구조

VSAM VSAM 의 장점의 장점– 기본데이타구역과 오버플로우구역의 구분 없음– 레코드 삭제 → 빈공간도 자동적으로 자유 공간에 통합– B+- 트리 구조를 인덱스로 이용

제어 구간의 분열– 제어 구간에서 각 레코드의 제어 정보 유지

가변 길이 레코드 수용

상대레코드번호 1

상대레코드번호 2

상대레코드번호 3

상대레코드번호 8

제어정보

...

Page 52: 7 장 인덱스된  순차 화일

52

인덱스된 순차 화일의 설계인덱스된 순차 화일의 설계 기본적인 고려사항기본적인 고려사항 ① ① 필드의 배치필드의 배치 ② ② 키 필드키 필드 - - 고정 고정 vs vs 가변 길이 레코드가변 길이 레코드 - - 인덱스와 데이타 화일에 같은 키인덱스와 데이타 화일에 같은 키 ③ ③ 예상되는 레코드 삽입예상되는 레코드 삽입 - - 자유공간 할당 자유공간 할당 (( 약 약 40%)40%) ④ ④ 화일을 구현하기 위한 방식화일을 구현하기 위한 방식

Page 53: 7 장 인덱스된  순차 화일

53

▶ ▶ 설계 결정을 위한 매개 변수설계 결정을 위한 매개 변수 정적 인덱스 방법 정적 인덱스 방법  ① ① 인덱스 구역의 크기인덱스 구역의 크기 ② ② 인덱스의 레벨인덱스의 레벨 ③ ③ 기본 데이타 구역의 크기기본 데이타 구역의 크기 ④ ④ 오버플로우 데이타 구역의 크기오버플로우 데이타 구역의 크기 ⑤ ⑤ 기본 데이타 구역의 레코드 블럭킹기본 데이타 구역의 레코드 블럭킹

동적 인덱스 방법동적 인덱스 방법 ① ① 데이타 블럭의 크기데이타 블럭의 크기 ② ② 인덱스 블럭의 크기인덱스 블럭의 크기 ③ ③ 초기 인덱스 레벨 수초기 인덱스 레벨 수 ④ ④ 최대 인덱스 레벨최대 인덱스 레벨

★ ★ 시스템 본래의 블럭 크기시스템 본래의 블럭 크기 , , 예상 레코드수예상 레코드수 , , 화일의 화일의 용도 등에 따라 결정용도 등에 따라 결정

Page 54: 7 장 인덱스된  순차 화일

54

▶ ▶ 인덱스 설계인덱스 설계 인덱스 참조 능력인덱스 참조 능력

– 인덱스 분기율 (fanout) y = y = 블럭의 크기 블럭의 크기 / / 인덱스 엔트리 크기 인덱스 엔트리 크기 = = B / (V+P) B / (V+P)

인덱스 레벨 인덱스 레벨 vs vs 인덱스 분기율인덱스 분기율

Page 55: 7 장 인덱스된  순차 화일

55

(1) (1) 정적 인덱스의 설계정적 인덱스의 설계 2,000 2,000 바이트 레코드 바이트 레코드 100100 만개만개 디스크 팩 디스크 팩 : 200 : 200 실린더실린더 실린더 실린더 : 19 : 19 트랙트랙 , 140,000 , 140,000 바이트바이트 // 트랙트랙 트랙 트랙 : : 최대 최대 70 70 레코드레코드

– 55 레코드만 적재– 마지막 2 트랙 : 자유공간– 트랙 0 : 트랙 인덱스

Page 56: 7 장 인덱스된  순차 화일

56

▶ ▶ 초기 적재초기 적재 실린더실린더 16 16 트랙 트랙 55 55 레코드 레코드 = 880 = 880 레코드레코드 // 실린더실린더 실린더 수 실린더 수 = = 100 100 만 레코드만 레코드 /880 /880 = 1,137 = 1,137 실린더 실린더 = 6 = 6 디스크 팩디스크 팩 트랙 인덱스트랙 인덱스 V = 14 V = 14 바이트바이트 P = 6 P = 6 바이트바이트 18 18 트랙 트랙 20 20 바이트 바이트 2 = 720 2 = 720 바이트바이트

└ └ (( 정상정상 , , 오버플로우오버플로우 ) ) 엔트리엔트리 실린더 인덱스실린더 인덱스

– 디스크 팩 별로 200 실린더씩 그룹 6 6 200 200 20 = 24,000 20 = 24,000 바이트바이트 마스터 인덱스마스터 인덱스

– 6 디스크 팩에 대한 6 인덱스 엔트리

Page 57: 7 장 인덱스된  순차 화일

57

▶ ▶ 정적 인덱스 설계 예정적 인덱스 설계 예

GGG

G

실린더 1트랙 0트랙 1

트랙 18

G G

실린더 200G

실린더 1

G

실린더 200트랙

인덱스

G G G

마스터 인덱스

실린더 인덱스

G

실린더 137

디스크팩 1 디스크팩 6

Page 58: 7 장 인덱스된  순차 화일

58

(2) (2) 동적 인덱스 설계동적 인덱스 설계 하드웨어 독립적인 인덱스의 설계하드웨어 독립적인 인덱스의 설계

B : 2000 B : 2000 바이트 바이트 ( ( 블럭크기 블럭크기 )) R : 200 R : 200 바이트 바이트 ( ( 레코드 크기 레코드 크기 )) V : 14 V : 14 바이트 바이트 ( ( 인덱스 값 크기 인덱스 값 크기 )) P : 6 P : 6 바이트 바이트 ( ( 포인터 크기 포인터 크기 ))

100100 만 레코드 만 레코드 : : 화일화일

B 2000B 2000 ------ = ------- = 10 : ------ = ------- = 10 : 블럭당 레코드의 수블럭당 레코드의 수 R 200R 200

101066

------- = 10------- = 1055 : : 화일에 필요한 블럭의 수화일에 필요한 블럭의 수 1010 || ||

첫단계의 인덱스 엔트리 수첫단계의 인덱스 엔트리 수

Page 59: 7 장 인덱스된  순차 화일

59

▶ ▶ 동적 인덱스 설계 계산동적 인덱스 설계 계산 B 2000B 2000 y = ---------- = ---------- = 100 : y = ---------- = ---------- = 100 : 분기율 분기율 V + P 20V + P 20 블럭당 인덱스 엔트리들의 최대 수 ┛블럭당 인덱스 엔트리들의 최대 수 ┛

101055

----- = 10----- = 1033 : : 첫째 단계의 인덱스를 위해 필요한 블럭의 수첫째 단계의 인덱스를 위해 필요한 블럭의 수 100100 ⇒ ⇒ 1000 1000 20 = 20,000 : 20 = 20,000 : 인덱스의 바이트인덱스의 바이트

101033

----- = 10 : ----- = 10 : 둘째 단계의 인덱스를 위해 필요한 블럭의 수둘째 단계의 인덱스를 위해 필요한 블럭의 수 100100 ⇒ ⇒ 10 10 20 = 200 : 20 = 200 : 인덱스의 바이트 인덱스의 바이트 (( 주기억장치에 저장주기억장치에 저장 ) )

10/100 10/100 = 1 : = 1 : 최고단계의 인덱스 블럭최고단계의 인덱스 블럭

Page 60: 7 장 인덱스된  순차 화일

60

▶ ▶ 동적 인덱스 설계 예동적 인덱스 설계 예

G

마스터 인덱스

G

인덱스 2.1

인덱스 3.1

G

인덱스 2.1

G

인덱스 1.1

G

인덱스 1.101

G

인덱스 1.1000

레코드 1

레코드10

데이타블록1

데이타블록100

데이타블록101

데이타블록100000

G

GG

G