© DBLAB, SNU 화일구조
강의 소개 - 화일구조 Instructor : Prof. Sukho Lee (301 동 404 호 ) 홈페이지 : 교과목 개요 – 이 과목은 데이타 관리와 응용을 위한 화일 구조의 설계와 구현을 공부한다. 이 화일은 바로 데이타베이스의 하부 구조를 구성하는 요소로서 실제 물리적 저장 장치 위에서의 구현에 중점을 둔다. 강의 계획 – 화일의 기본 개념, 화일 저장장치의 특성, 화일의 입출력 제어, 순차화일, 화일의 여러가지 외부 정렬 및 합병 기법, 인덱스된 순차화일, 해싱을 기초로 한 직접화일, 다중키 화일, 고급응용을 위한 다차원 공간 화일 등을 다룬다.
© DBLAB, SNU 강의 소개 - 화일구조 교재 및 참고 서적 –“ 화일구조 ”, 이석호, 2005, 정익사 성적 평가 방법 –Homework : 50 % – 시험 (mid, final) : 45 % – 출석 및 수업 참여 : 5 % – 과락 : Homework, 시험 각 40% 미만 ☞ 성적은 미워해도 교수는 미워하지 말라.
© DBLAB, SNU 1. 화일의 기본개념
© DBLAB, SNU 화일의 종류 ▶ 정보 (Information) 데이타 (Data) 데이타 (data) 처리 (processing) 정보 (information) (computer) (disk, tape) D I I = P(D) P
© DBLAB, SNU ▶ 데이타, 레코드 데이타 필드 (field), 애트리뷰트 (attribute), 데이타 항목 (item) – 이름을 가진 논리적 데이타의 최소 단위 – 특정 객체 (object, entity) 의 한 성질을 표현 레코드 타입 (record type) – 논리적으로 서로 연관된 데이타 필드 ( 항목 ) 들의 집합 – 엔터티 타입 (entity type) 레코드 어커런스 (record occurrence) – 한 레코드 타입의 인스턴스 (instance) – 레코드 타입의 각 필드에 따라 실제 값이 들어가 어떤 특정 객체를 나타내는 것 – 보통 레코드 (record) 라고 함
© DBLAB, SNU ▶ 화일, 화일 구조 화일 (file) – 어떤 응용 목적을 위해 함께 저장된 레코드 집합 예 : 급여, 인사, 재고, 재무, 회계 등 – 보통 보조 저장장치에 저장 화일구조 (file structure) - 데이타의 표현과 연산의 조합 - 데이타의 표현과 연산의 조합 데이타를 화일로 구성하는 이유 ①메인 메모리에 전부 적재하기에 데이타 양이 너무 많다 ②프로그램은 특정시간에 데이타 집합의 일부만 접근한다 - 데이타 전부를 메인 메모리에 한꺼번에 저장시킬 필요가 없음 ③데이타를 특정 프로그램과 별도로 보관시켜 데이타의 독립성 (independency) 을 유지하기 위함 – 여러 응용 프로그램이 공용 가능
© DBLAB, SNU ▶ 화일의 분류 (1) 화일의 기능에 따라 마스터 화일 (master file) 트랜잭션 화일 (transaction file) 보고서 화일 (report file) 작업 화일 (work file) 프로그램 화일 (program file) 텍스트 화일 (text file)
© DBLAB, SNU (1) 마스터 화일 (master file) 어느 한 시점에서 조직체의 업무에 관한 정적인 면을 나타내는 데이타의 집합 데이타의 집합 – 예 ( 제조 회사 ) : 급여 마스터 화일, 고객 마스터 화일, 인사 마스터 화일, 재고 마스터 화일, 자재 요청 마스터 화일 삽입, 삭제, 갱신을 통해 비교적 영속적 데이타 레코드를 포함 현재성 (currency) 을 정확히 유지함으로써 현실 세계에 대한 정확한 정보제공 정확한 정보제공 보통 화일이라 하면 이 마스터 화일을 의미
© DBLAB, SNU (2) 트랜잭션 화일 (transaction file) 마스터 화일에 적용할 트랜잭션들을 모아 저장한 화일 ★ 트랜잭션 (transaction) – 논리적인 작업 단위 – 하나의 건수로 처리되어야 하는 분리될 수 없는 연산 그룹 트랜잭션의 내용 새로운 레코드 삽입 (insert), 새로운 레코드 삽입 (insert), 현존 레코드의 삭제 (delete), 현존 레코드의 삭제 (delete), 현존 레코드의 내용 수정 (modify, replace) 현존 레코드의 내용 수정 (modify, replace)
© DBLAB, SNU (3) 보고서 화일 (report file) 사용자에게 데이타 검색의 결과를 보여주기 위해 데이타를 일정한 형식으로 정리해서 저장해 놓은 화일 – 하드카피 (hard copy) 보고서 출력 – 단말 장치 화면에 디스플레이
© DBLAB, SNU (4) 작업 화일 (work file) 어느 한 프로그램에서 생성된 출력 데이타를 다른 프로그램의 입력 데이타로 사용하기 위해 만드는 임시 화일 (temporary file) 입력 데이타로 사용하기 위해 만드는 임시 화일 (temporary file) - 시스템이 자동으로 만드는 작업 화일 예 : 정렬을 위한 화일 - 시스템이 자동으로 만드는 작업 화일 예 : 정렬을 위한 화일 - 프로그램이 만드는 작업 화일 예 : 수강신청 변경 화일 - 프로그램이 만드는 작업 화일 예 : 수강신청 변경 화일 최종 목표를 달성하는 과정에서 만들어지는 중간 결과를 저장하는 화일 영속적이 아니라 임시로 만들어 사용
© DBLAB, SNU (5) 프로그램 화일 (program file) 데이타를 처리하기 위한 명령어들을 저장하고 있는 화일 고급언어 (C, JAVA), 저급어 ( 어셈블리어 ) 로 작성 원시 코드 (source code) 나 목적 코드 (object code) 형태
© DBLAB, SNU (6) 텍스트 화일 (text file) 문자 숫자 (alphanumeric) 와 그래픽 데이타를 포함하고 있는 화일로서 텍스트 편집기의 입력과 출력으로 사용 - 여러 텍스트 편집기에 의해 처리될 수 있음
© DBLAB, SNU ▶ 화일의 분류 (2) 프로그램의 화일 접근 목적에 따라 (1) 입력 화일 (input file) 프로그램이 판독 (READ) 을 위해 접근하는 화일 원시코드 프로그램 화일 : 컴파일러 (2) 출력 화일 (output file) 프로그램이 기록 (WRITE) 을 위해 접근하는 화일 목적코드 프로그램 화일 : 컴파일러 (3) 입 / 출력 화일 (input/output file) 프로그램의 실행 중 판독도 하고 기록도 하기 위해 접근하는 화일 급여 마스터 화일
© DBLAB, SNU 화일의 연산 화일 조직 방법의 중요 결정 요소 – 화일의 사용 형식 – 화일 연산의 성격
© DBLAB, SNU ▶ 화일 사용의 형식 일괄처리 (batch) 형식 – 마스터 화일을 효율적으로 접근하도록 트랜잭션들을 구성함 – 트랜잭션들을 그룹화하여 처리하는 성능이 중요 대화 (interactive) 형식 – 트랜잭션이 터미널에 도착하는 대로 구성하고 처리함 – 각 트랜잭션의 처리 성능이 중요
© DBLAB, SNU ▶화일에 대한 기본 연산 (1) 화일생성 (2) 화일기록 ( 갱신, 삽입, 삭제 ) (3) 화일판독 ( 화일 이름, 블록 명세 ) (4) 화일삭제 (5) 화일 개방과 폐쇄 ( 버퍼의 할당과 반환 )
© DBLAB, SNU (1) 화일 생성 (file creation) 데이타 골격 (skeleton ) 의 설계 - 데이타 정의 (data definition) - 데이타 정의 (data definition) 데이타 수집 (collection) 과 확인 (validation) 데이타 적재 (loading) – 공간 할당 – 데이타를 일괄 적재 – 한 번에 한 레코드씩 구성
© DBLAB, SNU (2) 화일기록 (file write) 마스터 화일의 내용을 기록 또는 출력 (output) i) 레코드 내용의 변경 (update) ii) 새로운 레코드의 삽입 (insert) iii) 레코드 삭제 (delete)
© DBLAB, SNU (3) 화일판독 (file read) 마스터 화일의 내용을 판독 또는 입력 (input) – 판독해야 할 화일 이름과 블록을 명세 – 디렉터리 조사 ( 기록 연산과 비슷 ) – 화일의 위치와 레코드의 주소
© DBLAB, SNU (4) 화일삭제 (file delete) 화일의 삭제 – 디렉터리로부터 화일 위치 검색 – 할당된 디스크 공간 반환, 디렉터리 엔트리 삭제
© DBLAB, SNU (5) 화일의 개방과 폐쇄 (open, close) 화일의 개방 – 연산을 수행할 수 있도록 화일을 준비 – 화일 개방 후 판독과 기록이 가능 – 메인 메모리에 화일 전송을 위한 버퍼 할당 화일의 폐쇄 – 화일 사용 종료 – 버퍼의 출력 데이타를 디스크에 기록 – 할당된 버퍼를 반환
© DBLAB, SNU 화일 구조 선정 요소 메인 메모리의 데이타 구조 – 메인 메모리의 데이타 구조는 비교 연산 횟수로 평가 – 데이타 접근시간은 모두 일정한 것으로 가정 보조 저장 장치의 화일 구조 – 화일의 데이타 접근 시간이 메인 메모리에 비해 상당히 길다 – 보조 저장 장치의 접근 횟수가 프로그램 성능 평가의 주요 요소 ㅡ > 화일 구조 선정의 중요성
© DBLAB, SNU 화일 구조 선정 요소 화일 구조 선정 요소 (1) 가변성 (2) 활동성 (3) 사용빈도수 (4) 응답 시간 (5) 화일 크기 (6) 화일 접근 유형
© DBLAB, SNU (1) 가변성 (volatility) 화일의 성격 – 내용이 변하지 않는 정적 (static) 화일 ( 과거의 기록 ) – 내용이 자주 변하는 동적 (dynamic) 화일 ( 현재의 상황 데이타 ) 가변성 (volatility) – 전체 레코드 수에 대해 추가되거나 삭제되는 레코드 수 – 가변성이 높은 동적 화일은 빠른 접근과 갱신이 필요
© DBLAB, SNU (2) 활동성 (activity) 화일의 활동성 – 주어진 기간 동안에 화일의 총 레코드 수에 대해 접근한 레코드 수의 비율 – 활동성이 높으면 순차 화일 구조가 유리
© DBLAB, SNU (3) 사용 빈도수 (frequency of use) 화일의 사용 빈도수 – 일정 기간 동안의 화일의 사용 빈도수 – 가변성과 활동성에 밀접히 관련 사용 빈도수와 화일 구조 – 화일 구조에 제한되어 있는 접근 방법이 사용 빈도수에 장애 – 빈도수가 낮으면 순차 화일 구조 유리 – 빈도수가 높으면 임의 접근 구조 유리
© DBLAB, SNU (4) 응답 시간 (response time) 응답 시간과 화일 구조 – 검색이나 갱신에 대해 요구하는 지연 시간 – 빠른 응답 시간 조건에는 임의 접근 (random access) 방법 선택 – 정렬된 키를 이용한 순차 접근 (sequential access) 방법 가능
© DBLAB, SNU (5) 화일 크기 (file size) 화일 크기와 화일 구조 – 레코드 수와 각 레코드 길이 (record length) 가 화일 크기 결정 – 시간이 지남에 따라 화일 크기는 성장 ( 레코드 길이 확장, 레코드 수 증가 ) – 성장을 유연하게 수용할 수 있는 구조 필요
© DBLAB, SNU (6) 화일 접근 유형 화일 접근 유형과 화일 구조 – 화일 연산의 유형과 접근 형식에 따라 화일 구조 결정 ex) 1. 화일 접근이 판독 위주 접근 ? 갱신 위주 접근 ? 2. 화일 레코드들을 순차 접근이 주도 ? 임의 접근이 주도 ?